Browse Source

Speeding up organ_percentile by looking up a set of participants only

nixWorker 5 hours ago
parent
commit
a0db02555b
1 changed files with 20 additions and 2 deletions
  1. 20 2
      pythonScripts/organ_percentile.py

+ 20 - 2
pythonScripts/organ_percentile.py

@@ -67,18 +67,34 @@ def main(parameterFile):
     segVersion=pars['version']
     segVersionI=int(pars['versionNumber'])
 
+    participantField=pars['participantField']
+
     tempBase=pars['tempBase']
     if not os.path.isdir(tempBase):
         os.makedirs(tempBase)
     
-    participantField=pars['participantField']
+    qFilter=[]
+    try:
+        vList=';'.join(pars['participants'])
+        qFilter.append({'variable':participantField,'value':vList,'oper':'in'})
+    except KeyError:
+        pass
+    try:
+        vList=';'.join(pars['visits'])
+        qFilter.append({'variable':'visitCode','value':vList,'oper':'in'})
+    except KeyError:
+        pass
+
+
 
     #all images from database
-    ds=db.selectRows(project,schema,dataset,[],view)
+    ds=db.selectRows(project,schema,dataset,qFilter,view)
     
     petField=pars['images']['PET']['queryField']
     
     rows=ds['rows']
+    print('Selected {} rows'.format(len(rows)))
+
     #rows=[ds['rows'][0]]
 
     pv=numpy.concatenate((numpy.linspace(10,50,5),
@@ -145,6 +161,7 @@ def main(parameterFile):
         #4 thyroid
         #5 bowel
         dsP=db.selectRows(project,schema,qQuery,[idFilter,visitFilter,vFilter])
+        print('Deleting {} rows'.format(len(dsP['rows'])))
         db.modifyRows('delete',project,schema,qQuery,dsP['rows'])
         dspRows=[]
         for level in [1,2,3,4,5,6,7,8]:
@@ -172,6 +189,7 @@ def main(parameterFile):
                 rowDSP['value']=y
                 rowDSP['organ']=level
                 dspRows.append(rowDSP)
+        print('Inserting {} rows'.format(len(dspRows)))
         db.modifyRows('insert',project,schema,qQuery,dspRows)