|
@@ -273,8 +273,7 @@ class cardiacSPECTWidget(ScriptedLoadableModuleWidget):
|
|
|
segment="Segment_"+str(j+1)
|
|
|
#add node for data
|
|
|
dn = slicer.mrmlScene.AddNode(slicer.vtkMRMLDoubleArrayNode())
|
|
|
- a = dn.GetArray()
|
|
|
- a.SetNumberOfTuples(n)
|
|
|
+ dn.SetSize(n)
|
|
|
dt=0;
|
|
|
t0=0;
|
|
|
for i in range(0,n):
|
|
@@ -284,9 +283,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))
|
|
|
|
|
|
cn.AddArray(segment, dn.GetID())
|
|
@@ -485,6 +484,56 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
i+=1
|
|
|
return i-1
|
|
|
|
|
|
+
|
|
|
+ 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.
|