瀏覽代碼

Merge branch 'master' of f9pc22.ijs.si:~/public_html/git/dynamicSPECT

Andrej Studen/Merlin 3 年之前
父節點
當前提交
01a50fefaf
共有 2 個文件被更改,包括 21 次插入8 次删除
  1. 20 7
      cardiacSPECT/cardiacSPECT.py
  2. 1 1
      cardiacSPECT/parseDicom.py

+ 20 - 7
cardiacSPECT/cardiacSPECT.py

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

+ 1 - 1
cardiacSPECT/parseDicom.py

@@ -301,7 +301,7 @@ class parseDicomLogic(ScriptedLoadableModuleLogic):
 
 
 
-        return [self.frame_data,self.frame_time,self.center,
+        return [self.frame_data,self.frame_time,self.frame_duration,self.center,
             self.pixel_size,self.frame_orientation]
 
     def readCTDirectory(self,mypath):