Exemple #1
0
def study_CheckSubjects(subid):
    SubjectSummary = []
    conn_qc = studydata.db_connection
    #for i in range(0,5,1):
    #S=study.subjectlist[i]
    #for S in study.subjectlist:
    if subid in study.quarantine.subjects:
        S = study.quarantine.subjects[subid]
        D = CheckSubject.CheckSubject(S)
        #D.InitializeScansCogRes()
        D.InitializeScansRANN()
        print "\n-----------------------------"
        print "============================="
        print "========= %s =========" % (D.Subject.subid)
        print "======= %s =======" % ("Acquistion Problems")
        for V in D.Subject.visitlist:
            Files = os.listdir(V.path)
            D.InspectImages(Files, V.path)
            SubjectSummary.append(D)
        print "======= %s =======" % ("Found Scans")
        D.CheckAllScansCollected()
        print "======= %s =======" % ("Missing Scans")
        D.CheckAllScansNOTCollected()
        print "======= %s =======" % ("QC Assessment")
        D.PrintQCAssessment(conn_qc, study.name)
    else:
        print "Subject: %s not imported" % (subid)
def study_Check_One_Excluded(subid, study, studydata):
    # Check the acquisition parameters and
    # for missing data from one participant
    # expected to be in quarantine
    SubjectsSummary = []
    conn_qc = studydata.db_connection
    D = []
    if subid in study.excluded.subjects:
        S = study.excluded.subjects[subid]
        D = CheckSubject.CheckSubject(S)
        study_CheckSubject(D, study, studydata, conn_qc)
    else:
        print "Subject: %s not imported" % (subid)
    return D
def study_Check_One_Subjects(subid, study, studydata):
    # Check the acquisition parameters and
    # for missing data from one participant
    # expected to be in quarantine
    SubjectsSummary = []
    conn_qc = studydata.db_connection
    D = []
    # Check this one subject
    if subid in study.subjects:
        # extract the subject structure
        S = study.subjects[subid]
        # initialize a scan structure for this subject
        D = CheckSubject.CheckSubject(S)
        # fill in the structure based on what was found
        # but this step collapses across visits
        study_CheckSubject(D, study, studydata, conn_qc)
    else:
        print "Subject: %s not imported" % (subid)
    return D
def check_RANN_Subject_Behav(subid, studydata, study):
    D = CheckSubject.CheckSubject(subid)
    # python does not use switch/case statements
    D.InitializeScansRANN()
    RANNBehav = {}
    #    Tasks = ['DgtSym','LetComp','PaperFold','LetSet','Syn','Ant','LogMem','MatReas','PairAssoc','PattComp','WordOrder']
    Measures = ['PropOnTimeCor', 'medianAllRT']
    conn_qc = studydata.db_connection
    for index in D.TaskList:
        task = D.Scans[index]['SeriesName'][0:-3]
        #print task
        RANNBehav[task] = {}
        sqlcommand = "SELECT subid"
        for meas in Measures:
            sqlcommand = sqlcommand + ", %s_%s" % (task, meas)
        sqlcommand = sqlcommand + " FROM cnsdivdb.RANNBehav where subid='%s'" % (
            subid)
        #print sqlcommand
        try:
            conn_qc.cur.execute(sqlcommand)
            for row_dict in conn_qc.cur.fetchall():
                for meas in Measures:
                    if row_dict[task + "_" + meas] > -1:
                        RANNBehav[task][meas] = row_dict[task + "_" + meas]
        except:
            for meas in Measures:
                RANNBehav[task][meas] = -9999

    print subid
    for task in RANNBehav.iteritems():
        Str = "%15s:" % (task[0])
        for meas in Measures:
            if len(task[1]) > 0:
                Str = "%s %s=%3.4f," % (Str, meas, task[1][meas])
            else:
                Str = "%s no data found" % (Str)
        if len(task[1]) > 0:
            if task[1][Measures[0]] < 0.5:
                Str = "%s <<<<<< " % (Str)
        print Str
def study_Check_All_Subjects(study, studydata):
    # Check the acquisition paramet# check subjects folderers and
    # for missing data from all participants
    # in the Subjects folder
    SubjectsSummary = []
    conn_qc = studydata.db_connection
    for S in study.subjectlist:
        D = CheckSubject.CheckSubject(S)
        #D.InitializeScansCogRes()
        # python does not use switch/case statements
        if study.name is "RANN":
            D.InitializeScansRANN()
        elif study.name is "CogRes":
            D.InitializeScansCogRes()
        elif study.name is "iLS":
            D.InitializeScansILS()
        elif study.name is "WHICAP":
            D.InitializeScansWHICAPV3()
        elif study.name is "AZ2":
            D.InitializeScansAZ2()
        elif study.name is "Exercise58":
            D.InitializeScansEx58()
        else:
            break

        print "\n-----------------------------"
        print "============================="
        print "========= %s =========" % (D.Subject.subid)
        print "======= %s =======" % ("Acquistion Problems")
        for V in D.Subject.visitlist:
            Files = os.listdir(V.path)
            D.InspectImages(Files, V.path)
        print "======= %s =======" % ("Found Scans")
        D.CheckAllScansCollected()
        print "======= %s =======" % ("Missing Scans")
        D.CheckAllScansNOTCollected()
        print "======= %s =======" % ("QC Assessment")
        D.PrintQCAssessment(conn_qc, study.name)
        SubjectsSummary.append(D)
    return SubjectsSummary
'''
import os
import sys
import CheckSubject

%run study.py

reload(CheckSubject)
conn_main = studydata.db_connection_main
conn_qc = studydata.db_connection
SubjectSummary = []
for S in study.subjectlist:
#for i in range(0,5,1):
    #S=study.subjectlist[i]
#for S in study.subjectlist:
    D=CheckSubject.CheckSubject(S)
    #D.InitializeScansCogRes()
    D.InitializeScansILS()
    #D.InitializeScansRANN()
    print "\n-----------------------------"
    print "============================="
    print "========= %s ========="%(D.Subject.subid)
    print "======= %s ======="%("Acquistion Problems")  
    for V in D.Subject.visitlist: 
        Files=os.listdir(V.path)
        D.InspectImages(Files,V.path)
        SubjectSummary.append(D)
    print "======= %s ======="%("Missing Scans")
    D.CheckAllScansCollected()
    print "======= %s ======="%("QC Assessment")
    D.PrintQCAssessment(conn_qc,study.name)
def check_CogRes_Subject_Behav(subid, studydata, study):
    # Do this to initialize the list of scans
    D = CheckSubject.CheckSubject(subid)
    D.InitializeScansCogRes()

    conn_qc = studydata.db_connection
    # create list of measures to look at
    ECFMeasure = 'DualNonComp_NCor'
    LSMeasure = 'NumCor_6r'
    # create the column names for the output spreadsheet
    ColumnNames = []
    # since ECF behavioral data is collapsed across runs only one value is
    # extracted from the dB
    ECFFlag = True
    # cycle over the series in the Scan list and make sure to only check
    # the ECF behavior once

    for index in D.TaskList:
        if ECFFlag and D.Scans[index]['SeriesName'].find('ECF') > -1:
            ECFFlag = False
            ColumnNames.append("%s_%s" % ('ECF', ECFMeasure))
        elif D.Scans[index]['SeriesName'].find('LS') > -1:
            LSRun = D.Scans[index]['SeriesName'][-1]
            ColumnNames.append(
                "%s_%s%s" %
                (D.Scans[index]['SeriesName'][0:-3], LSMeasure, LSRun))

    one_list = []
    for index in range(0, len(ColumnNames), 1):
        task = ColumnNames[index]
        sqlcommand = "SELECT subid"
        sqlcommand = "%s,%s" % (sqlcommand, task)
        if task.find('ECF') > -1:
            sqlcommand = sqlcommand + " FROM cnsdivdb.ECFBehav where subid='%s'" % (
                subid)
        elif task.find('LS') > -1:
            sqlcommand = sqlcommand + " FROM cnsdivdb.LSBehav where subid='%s'" % (
                subid)
        else:
            pass
    # print sqlcommand
        try:
            # ret is the number of rows returned
            ret = conn_qc.cur.execute(sqlcommand)
            if ret is 0:
                one_list.append(-9999)
            elif ret is 1:
                row_dict = conn_qc.cur.fetchall()
                value = row_dict[0][ColumnNames[index]]
                if value > 0:
                    one_list.append(1)
                else:
                    one_list.append(0)
            elif ret > 1:
                MultipleRowFlag = True
                for row_dict in conn_qc.cur.fetchall():
                    # value from first row
                    if MultipleRowFlag:
                        value = row_dict[ColumnNames[index]]
                        if value > 0:
                            one_list.append(1)
                            MultipleRowFlag = False
                if MultipleRowFlag:
                    # if this flag is still true then there are multiple
                    # rows in the dB with no data in them
                    one_list.append(-9999)
        except:
            one_list.append(-9999)

    print "Behavioral Summary: %s" % (subid)
    for i in range(0, len(ColumnNames), 1):
        print "%s\t%d" % (ColumnNames[i], one_list[i])