Browse Source

Debugged version of DM for series production

Andrej Studen 1 year ago
parent
commit
cba44a449a
2 changed files with 100 additions and 6 deletions
  1. 11 6
      pythonScripts/runSegmentationDM.py
  2. 89 0
      templates/segmentationIRAEMM_ONKO_retro_DM.json

+ 11 - 6
pythonScripts/runSegmentationDM.py

@@ -50,6 +50,7 @@ def getSuffix(tempFile):
     return ''.join(p.suffixes)
     return ''.join(p.suffixes)
 
 
 def getSegmImagePath(tempFile):
 def getSegmImagePath(tempFile):
+    #return tempFile
     sfx=getSuffix(tempFile)
     sfx=getSuffix(tempFile)
     return re.sub(sfx,'_Segm'+sfx,tempFile)
     return re.sub(sfx,'_Segm'+sfx,tempFile)
 
 
@@ -75,7 +76,7 @@ def normalizeCT(ctFile,maskFile):
 
 
 def runDeepMedic(setup,pars):
 def runDeepMedic(setup,pars):
     args=[]
     args=[]
-    args.append(os.path.join(setup['paths']['deepMedicVE'],'bin','python'))
+    #args.append(os.path.join(setup['paths']['deepMedicVE'],'bin','python'))
     args.append(setup['paths']['deepMedicRun'])
     args.append(setup['paths']['deepMedicRun'])
     args.append('-model')
     args.append('-model')
     args.append(pars['deepmedic']['config']['model']['out'])
     args.append(pars['deepmedic']['config']['model']['out'])
@@ -97,7 +98,7 @@ def getSegmentationFile(pars):
     #this is how deep medic stores files
     #this is how deep medic stores files
     return getSegmImagePath(\
     return getSegmImagePath(\
             os.path.join(pars['tempBase'],'output','predictions','currentSession','predictions',\
             os.path.join(pars['tempBase'],'output','predictions','currentSession','predictions',\
-            pars['images']['segmentations']['tempFile'])
+            pars['images']['segmentation']['tempFile'])
             )
             )
 
 
 def runSegmentation(fb,row,pars,setup):
 def runSegmentation(fb,row,pars,setup):
@@ -116,6 +117,7 @@ def runSegmentation(fb,row,pars,setup):
     for im in images:
     for im in images:
         if 'queryField' in images[im]:
         if 'queryField' in images[im]:
             fb.readFileToFile(baseDir+'/'+row[images[im]['queryField']],fullFile[im])
             fb.readFileToFile(baseDir+'/'+row[images[im]['queryField']],fullFile[im])
+        print('Loaded {}'.format(fullFile[im]))
    
    
     #normalize 
     #normalize 
 
 
@@ -125,7 +127,8 @@ def runSegmentation(fb,row,pars,setup):
 
 
 
 
     #run deep medic
     #run deep medic
-    runDeepMedicDocker(setup,pars)
+    #runDeepMedicDocker(setup,pars)
+    runDeepMedic(setup,pars)
     
     
     #processed file is
     #processed file is
     segFile=getSegmentationFile(pars)
     segFile=getSegmentationFile(pars)
@@ -231,10 +234,9 @@ def doSegmentation(parameterFile):
     i=0
     i=0
     for row in ds["rows"]:
     for row in ds["rows"]:
        
        
-
         #check if file is already there
         #check if file is already there
         #dummy tf to get the suffix
         #dummy tf to get the suffix
-        tf=getSegmentationFile(pars,'XX')
+        tf=getSegmentationFile(pars)
         outpath=fb.buildPathURL(pars['project'],[pars['imageDir'],row['patientCode'],row['visitCode']])
         outpath=fb.buildPathURL(pars['project'],[pars['imageDir'],row['patientCode'],row['visitCode']])
         outName=addVersion(\
         outName=addVersion(\
                 getSegmImagePath(\
                 getSegmImagePath(\
@@ -252,6 +254,8 @@ def doSegmentation(parameterFile):
             fb.writeFileToFile(segFile,outFile)
             fb.writeFileToFile(segFile,outFile)
 
 
         
         
+        else:
+            print('File {} available'.format(outFile))
 
 
         #separate script (set version!)
         #separate script (set version!)
 
 
@@ -280,6 +284,7 @@ def doSegmentation(parameterFile):
 
 
 
 
 if __name__ == '__main__':
 if __name__ == '__main__':
-    main(sys.argv[1])
+    #main(sys.argv[1])
+    doSegmentation(sys.argv[1])
     #sys.exit()
     #sys.exit()
 
 

+ 89 - 0
templates/segmentationIRAEMM_ONKO_retro_DM.json

@@ -0,0 +1,89 @@
+{
+ "setVariables":["__tempBase__","__segBase__","__segModelPath__","__roiFile__","__petFile__","__ctFile__","__segFile__","__modelName__"],
+ "setVariablesComment":"this variables will get updated with local values like home and can be used to set variables further on",
+ "__tempBase__":"__home__/temp/iraemm",
+ "__segBase__":"/home/studen/software/src/irAEMM/segmentation",
+ "__segModelPath__":"/home/studen/software/src/iraemmsegmentationmodels",
+ "__roiFile__":"testMask.nii.gz",
+ "__ctFile__":"testCT.nii.gz",
+ "__petFile__":"testPET.nii.gz",
+ "__segFile__":"segmentation.nii.gz",
+ "__modelName__":"DM_defaults.DM_train_VISCERAL16_Fold1.final.2019-10-01.07.46.19.932616.model.ckpt",
+ "tempBase":"__tempBase__",
+ "model":"__model__",
+ "project":"IPNUMMretro/Study",
+ "targetSchema":"study",
+ "targetQuery":"Imaging1",
+ "viewName":"default",
+ "participantField":"PatientId",
+ "segmentationSchema":"study",
+ "segmentationQuery":"organSegmentationsDM",
+ "reportQuery":"reportImages",
+ "reportSchema":"lists",
+ "percentileQuery":"SUVQuantilesDM",
+ "imageDir":"preprocessedImages",
+ "version":"v2test",
+ "versionNumber":"2",
+ "images":{
+	"CT":{
+		"queryField":"ctResampled",
+		"tempFile":"__ctFile__"},
+	"PET":{
+		"queryField":"petResampled",
+		"tempFile":"__petFile__"},
+	"patientmask":{
+		"queryField":"ROImask",
+		"tempFile":"__roiFile__"},
+	"segmentation":{
+		"suffix":".nii.gz",
+		"tempFile":"__segFile__"}
+ },
+ "replacePattern":{
+	 "__workDir__":"__tempBase__",
+	 "__roi__":"__tempBase__/__roiFile__",
+	 "__pet__":"__tempBase__/__petFile__",
+	 "__ct__":"__tempBase__/__ctFile__",
+	 "__seg__":"__segFile__",
+	 "__cnnModelPath__":"__segModelPath__",
+	 "__model__":"__modelName__"
+ },
+ "nnUNet":{
+	 "ModelId":"501",
+	 "configuration":"3d_fullres",
+	 "env":{
+		"nnUNet_raw_data_base":"__tempBase__",
+		"nnUNet_preprocessed":"__tempBase__",
+		"RESULTS_FOLDER":"/home/studen/software/src/iraemmsegmentationmodels"
+	 }
+ },
+ "deepmedic": {
+	 "config":{
+		 "model":{
+		 	"template":"__segBase__/model/modelConfig.cfg.template",
+		 	"out":"__tempBase__/modelConfig.cfg"
+	 	},
+	 	"test":{
+			"template":"__segBase__/test/testConfig.cfg.template",
+		 	"out":"__tempBase__/testConfig.cfg"
+	 	},
+		"predictions":{
+			"template":"__segBase__/test/testNamesOfPredictions.cfg.template",
+			"out":"__tempBase__/testNamesOfPredictions.cfg"
+		},
+		"CT":{
+			"template":"__segBase__/test/testChannels_CT.cfg.template",
+			"out":"__tempBase__/testChannels_CT.cfg"
+		},
+		"ROI":{
+			"template":"__segBase__/test/testRoiMasks.cfg.template",
+			"out":"__tempBase__/testRoiMasks.cfg"
+		}
+
+
+
+	 }
+ }
+
+
+
+}