|
@@ -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.
|