|
@@ -428,7 +428,7 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
|
|
|
inputDir=str(widget.dataPath.text)
|
|
|
self.pd.readMasterDirectory(inputDir)
|
|
|
- self.frame_data, self.frame_time, self.frame_origin, \
|
|
|
+ self.frame_data, self.frame_time, self.frame_duration, self.frame_origin, \
|
|
|
self.frame_pixel_size, self.frame_orientation=self.pd.readNMDirectory(inputDir)
|
|
|
|
|
|
self.ct_data,self.ct_origin,self.ct_pixel_size, \
|
|
@@ -481,7 +481,7 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
|
|
|
|
|
|
self.pd.readMasterDirectory(masterPath)
|
|
|
- self.frame_data, self.frame_time, self.frame_origin, \
|
|
|
+ self.frame_data, self.frame_time, self.frame_duration,self.frame_origin, \
|
|
|
self.frame_pixel_size, self.frame_orientation=self.pd.readNMDirectory(nmPath)
|
|
|
self.ct_data,self.ct_origin,self.ct_pixel_size, \
|
|
|
self.ct_orientation=self.pd.readCTDirectory(ctPath)
|
|
@@ -504,11 +504,13 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
|
|
|
n=dnsNode.GetSize();
|
|
|
self.frame_time=np.zeros(n);
|
|
|
+ self.frame_duration=np.zeros(n);
|
|
|
|
|
|
a=vtk.reference(1)
|
|
|
for i in range(0,n):
|
|
|
self.loadVolume(patientId,i)
|
|
|
self.frame_time[i]=dnsNode.GetValue(i,0,a)
|
|
|
+ self.frame_duration[i]=dnsNode.GetValue(i,1,a)
|
|
|
|
|
|
self.loadCTVolume(patientId)
|
|
|
self.loadSegmentation(patientId)
|
|
@@ -848,6 +850,10 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
if refNode!=None:
|
|
|
self.resampler.rebinNode(node,refNode)
|
|
|
print("Completed transformation {}").format(it)
|
|
|
+ #unset transformation
|
|
|
+ node.SetAndObserveTransformNodeID('NONE')
|
|
|
+
|
|
|
+
|
|
|
|
|
|
nodeName=patientId+'CT'
|
|
|
node=slicer.util.getFirstNodeByName(nodeName)
|
|
@@ -858,11 +864,15 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
if refNode!=None:
|
|
|
self.resampler.rebinNode(node,refNode)
|
|
|
|
|
|
+ node.SetAndObserveTransformNodeID('NONE')
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def calculateInputFunction(self,patientId):
|
|
|
+ debug=True
|
|
|
n=len(self.frame_time)
|
|
|
|
|
|
dnsNodeName=patientId+'_Ventricle'
|
|
@@ -900,15 +910,17 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
dt=0;
|
|
|
t0=0;
|
|
|
ft=self.frame_time
|
|
|
+ dt=self.frame_duration
|
|
|
for i in range(0,n):
|
|
|
vol=patientId+"Volume"+str(i)
|
|
|
fx=ft[i]
|
|
|
fy=self.meanROI(vol,juse)
|
|
|
- dt=2*ft[i]-t0
|
|
|
- t0+=dt
|
|
|
+ if debug:
|
|
|
+ print('{}: t0={} tp={} dt={}'.format(i,t0,fx,dt))
|
|
|
+ t0+=dt[i]
|
|
|
|
|
|
dn.SetValue(i, 0, fx)
|
|
|
- dn.SetValue(i, 1, fy/dt)
|
|
|
+ dn.SetValue(i, 1, fy/dt[i])
|
|
|
dn.SetValue(i, 2, 0)
|
|
|
print("[{0} at {1:.2f}:{2:.2f}]".format(vol,fx,fy))
|
|
|
|
|
@@ -930,11 +942,12 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
|
|
|
|
|
|
|
|
|
ft=self.frame_time
|
|
|
+ dt=self.frame_duration
|
|
|
for i in range(0,n):
|
|
|
fx=ft[i]
|
|
|
-
|
|
|
+ fy=dt[i]
|
|
|
dn.SetValue(i, 0, fx)
|
|
|
- dn.SetValue(i, 1, 0)
|
|
|
+ dn.SetValue(i, 1, fy)
|
|
|
dn.SetValue(i, 2, 0)
|
|
|
|
|
|
|