Andrej Studen vor 6 Jahren
Ursprung
Commit
452c69f768
1 geänderte Dateien mit 57 neuen und 6 gelöschten Zeilen
  1. 57 6
      cardiacSPECT/cardiacSPECT.py

+ 57 - 6
cardiacSPECT/cardiacSPECT.py

@@ -298,9 +298,10 @@ class cardiacSPECTWidget(ScriptedLoadableModuleWidget):
         for j in range(0,ns):
             #add node for data
             dn = slicer.mrmlScene.AddNode(slicer.vtkMRMLDoubleArrayNode())
-            dn.SetName(self.patientId.text+'_'+self.logic.getSegmentName(j))
-            a = dn.GetArray()
-            a.SetNumberOfTuples(n)
+
+            dn.SetSize(n)
+            dn.SetName(self.logic.getSegmentName(j))
+
             dt=0;
             t0=0;
             for i in range(0,n):
@@ -310,9 +311,9 @@ class cardiacSPECTWidget(ScriptedLoadableModuleWidget):
                 dt=2*ft[i]-t0
                 t0+=dt
 
-                a.SetComponent(i, 0, fx)
-                a.SetComponent(i, 1, fy/dt)
-                a.SetComponent(i, 2, 0)
+                dn.SetValue(i, 0, fx)
+                dn.SetValue(i, 1, fy/dt)
+                dn.SetValue(i, 2, 0)
                 print("[{0} at {1:.2f}:{2:.2f}]".format(vol,fx,fy))
 
 
@@ -690,6 +691,56 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
 
 
 
+
+   def calculateInputFunction(self):
+       n=self.frame_data.shape[3]
+
+       dns = slicer.mrmlScene.GetNodesByClassByName('vtkMRMLDoubleArrayNode','Ventricle')
+       if dns.GetNumberOfItems() == 0:
+           dn = slicer.mrmlScene.AddNode(slicer.vtkMRMLDoubleArrayNode())
+           dn.SetName('Ventricle')
+       else:
+           dn = dns.GetItemAsObject(0)
+
+
+
+       dn.SetSize(n)
+
+
+       fNodes=slicer.mrmlScene.GetNodesByClass("vtkMRMLSegmentationNode")
+       if fNodes.GetNumberOfItems() == 0:
+           return
+       fNode=fNodes.GetItemAsObject(0)
+       segNode=slicer.vtkMRMLSegmentationNode.SafeDownCast(fNode)
+       segmentation=segNode.GetSegmentation()
+
+       juse=-1
+       for j in range(0,segmentation.GetNumberOfSegments()):
+           segment=segNode.GetSegmentation().GetNthSegmentID(j)
+           if segment.GetName()=='Ventricle':
+               juse=j
+               break
+
+       if juse<0:
+           print 'Failed to find Ventricle segment'
+           return
+
+       dt=0;
+       t0=0;
+       for i in range(0,n):
+           vol="testVolume"+str(i)
+           fx=ft[i]
+           fy=self.logic.meanROI(vol,juse)
+           dt=2*ft[i]-t0
+           t0+=dt
+
+           dn.SetValue(i, 0, fx)
+           dn.SetValue(i, 1, fy/dt)
+           dn.SetValue(i, 2, 0)
+           print("[{0} at {1:.2f}:{2:.2f}]".format(vol,fx,fy))
+
+
+
 class cardiacSPECTTest(ScriptedLoadableModuleTest):
   """
   This is the test case for your scripted module.