Selaa lähdekoodia

Addint getPatientNIM to getData

Andrej 1 vuosi sitten
vanhempi
commit
94c1f26a25
1 muutettua tiedostoa jossa 31 lisäystä ja 10 poistoa
  1. 31 10
      pythonScripts/getData.py

+ 31 - 10
pythonScripts/getData.py

@@ -3,6 +3,7 @@ import sys
 import config
 import analysis
 import json
+import SimpleITK
 
 def connectDB(server):
    sPath=os.path.join(os.path.expanduser('~'),'.labkey','setup.json')
@@ -65,23 +66,20 @@ def downloadNode(fb,fileName,rPath,lPath):
         return
     print('Loading {}'.format(fileName))
     fb.readFileToFile(rPath1,lPath1)
-    
+
 def downloadFiles(fb,r,setup):
-    rPath=fb.formatPathURL(setup['project'],config.getOutputDir(r,setup))
-    lPath=config.getLocalDir(r,setup)
-    if not os.path.isdir(lPath):
-        os.makedirs(lPath)
     
     #CT
     fileName=config.getNodeName(r,setup,'CT')+'.nrrd'
-    downloadNode(fb,fileName,rPath,lPath)
+    copyFromServer(fb,r,setup,[fileName])
     
     for i in range(20):
         fileName=config.getNodeName(r,setup,'NM',i)+'.nrrd'
-        downloadNode(fb,fileName,rPath,lPath)
+        copyFromServer(fb,r,setup,[fileName])
+
     
     fileName=config.getNodeName(r,setup,'Dummy')+'.mcsv'
-    downloadNode(fb,fileName,rPath,lPath)
+    copyFromServer(fb,r,setup,[fileName])
     
 def downloadPatientFiles(db,fb,setup,qfilter=[]):
     rows=getPatients(db,setup,qfilter)
@@ -123,11 +121,34 @@ def copyFromServer(fb,r,setup,names):
    project=setup['project']
    remoteDir=fb.buildPathURL(project,config.getPathList(r,setup))
    for n in names:
-      localPath=os.path.join(tempDir,code,n)
+      localDir=os.path.join(tempDir,code)
+      if not os.path.isdir(localDir):
+         os.makedirs(localDir)
+      localPath=os.path.join(localDir,n)
       if os.path.isfile(localPath) and not forceReload:
          continue
       remotePath='{}/{}'.format(remoteDir,n)
-      fb.readFileToFile(localPath,remotePath)
+      fb.readFileToFile(remotePath,localPath)
+
+def getLocalPath(r,setup,name):
+   tempDir=config.getTempDir(setup)
+   code=config.getCode(r,setup)
+   return os.path.join(tempDir,code,name)
+
+def getURL(r,setup,name):
+   remoteDir=fb.buildPathURL(project,config.getPathList(r,setup))
+   return '/'.join(remoteDir,name)
+ 
+def getPatientNIM(fb,r,setup):
+    fileName=config.getNodeName(r,setup,'NM',19)+'.nrrd'
+    f=getLocalPath(r,setup,fileName)
+    if not os.path.isfile(f):
+#download from server
+       copyFromServer(fb,r,setup,[fileName])
+
+    im=SimpleITK.ReadImage(f)
+    nim=SimpleITK.GetArrayFromImage(im)
+    return nim