|
@@ -488,7 +488,6 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
|
|
if not os.path.isdir(self.tempDir):
|
|
if not os.path.isdir(self.tempDir):
|
|
os.mkdir(self.tempDir)
|
|
os.mkdir(self.tempDir)
|
|
self.lookups={}
|
|
self.lookups={}
|
|
- self.segmentList=["Liver","Blood","Marrow","Disease","Deauville","Metastases"]
|
|
|
|
print('imageBrowserLogic setup complete')
|
|
print('imageBrowserLogic setup complete')
|
|
|
|
|
|
|
|
|
|
@@ -753,24 +752,20 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
|
|
seg=segNode.GetSegmentation()
|
|
seg=segNode.GetSegmentation()
|
|
segNames=[seg.GetNthSegmentID(i) for i in range(seg.GetNumberOfSegments())]
|
|
segNames=[seg.GetNthSegmentID(i) for i in range(seg.GetNumberOfSegments())]
|
|
print('Segments')
|
|
print('Segments')
|
|
- try:
|
|
|
|
- segmentList=self.isetup['segmentList']
|
|
|
|
- except KeyError:
|
|
|
|
- segmentList=self.segmentList
|
|
|
|
|
|
+ segmentList=self.getSegmentList()
|
|
for s in segmentList:
|
|
for s in segmentList:
|
|
if s not in segNames:
|
|
if s not in segNames:
|
|
seg.AddEmptySegment(s,s)
|
|
seg.AddEmptySegment(s,s)
|
|
print(s)
|
|
print(s)
|
|
|
|
+ self.updateSegmentColors(seg)
|
|
print('Done')
|
|
print('Done')
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
def saveSegmentation(self):
|
|
def saveSegmentation(self):
|
|
#get the latest key by adding an entry to SegmentationList
|
|
#get the latest key by adding an entry to SegmentationList
|
|
copyFields=[self.isetup['participantField'],'patientCode','visitCode','User']
|
|
copyFields=[self.isetup['participantField'],'patientCode','visitCode','User']
|
|
outRow={x:self.segmentationEntry[x] for x in copyFields}
|
|
outRow={x:self.segmentationEntry[x] for x in copyFields}
|
|
- sList=self.isetup['datasets']['SegmentationsList']
|
|
|
|
|
|
+ ssList=self.isetup['datasets']['SegmentationsList']
|
|
respJSON=self.db.modifyRows('insert',sList['project'],
|
|
respJSON=self.db.modifyRows('insert',sList['project'],
|
|
sList['schema'],sList['query'],[outRow])
|
|
sList['schema'],sList['query'],[outRow])
|
|
outRow=respJSON['rows'][0]
|
|
outRow=respJSON['rows'][0]
|
|
@@ -843,14 +838,27 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
|
|
slicer.mrmlScene.AddNode(segNode)
|
|
slicer.mrmlScene.AddNode(segNode)
|
|
segNode.CreateDefaultDisplayNodes()
|
|
segNode.CreateDefaultDisplayNodes()
|
|
segNode.SetReferenceImageGeometryParameterFromVolumeNode(self.volumeNode['PET'])
|
|
segNode.SetReferenceImageGeometryParameterFromVolumeNode(self.volumeNode['PET'])
|
|
- try:
|
|
|
|
- segmentList=self.isetup['segmentList']
|
|
|
|
- except KeyError:
|
|
|
|
- segmentList=self.segmentList
|
|
|
|
|
|
+ segmentList=self.getSegmentList()
|
|
for s in segmentList:
|
|
for s in segmentList:
|
|
segNode.GetSegmentation().AddEmptySegment(s,s)
|
|
segNode.GetSegmentation().AddEmptySegment(s,s)
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ self.updateSegmentColors(segNode.GetSegmentation())
|
|
|
|
+
|
|
|
|
+ def getSegmentList(self):
|
|
|
|
+ return self.isetup.get('segmentList', \
|
|
|
|
+ ["Liver","Blood","Marrow","Disease","Deauville","Metastases","Lesion"])
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ def updateSegmentColors(self,seg):
|
|
|
|
+ colorMap={'Liver':(1,1,0),'Blood':(1,0,0),'Marrow':(1,0,1),
|
|
|
|
+ 'Disease':(0,0.5,1),'Deauville':(0,1,1),'Metastases':(0.5,1,0),
|
|
|
|
+ 'Lesion':(0,0.67,0.33)}
|
|
|
|
+#map colors to segments
|
|
|
|
+ for segIdx in range(seg.GetNumberOfSegments()):
|
|
|
|
+ segmentId = seg.GetNthSegmentID(segIdx)
|
|
|
|
+ segment = seg.GetSegment(segmentId)
|
|
|
|
+ color=colorMap[segmentId]
|
|
|
|
+ segment.SetColor(color[0],color[1],color[2]) # red
|
|
|
|
+
|
|
|
|
|
|
def clearVolumesAndSegmentations(self):
|
|
def clearVolumesAndSegmentations(self):
|
|
nodes=slicer.util.getNodesByClass("vtkMRMLVolumeNode")
|
|
nodes=slicer.util.getNodesByClass("vtkMRMLVolumeNode")
|