Selaa lähdekoodia

Debugging NM format

Andrej Studen 6 vuotta sitten
vanhempi
commit
5d4d34d74a
3 muutettua tiedostoa jossa 38 lisäystä ja 11 poistoa
  1. 26 2
      cardiacSPECT/cardiacSPECT.py
  2. 7 3
      cardiacSPECT/parseDicom.py
  3. 5 6
      cardiacSPECT/vtkInterface.py

+ 26 - 2
cardiacSPECT/cardiacSPECT.py

@@ -6,6 +6,8 @@ from slicer.ScriptedLoadableModule import *
 import logging
 import parseDicom as pd
 import vtkInterface as vi
+import fileIO
+import slicer
 #
 # cardiacSPECT
 #
@@ -43,6 +45,10 @@ class cardiacSPECTWidget(ScriptedLoadableModuleWidget):
   def setup(self):
     ScriptedLoadableModuleWidget.setup(self)
 
+    self.selectRemote=fileIO.remoteFileSelector()
+    self.network=slicer.modules.labkeySlicerPythonExtensionWidget.network
+    self.selectRemote.setMaster(self)
+
     # Instantiate and connect widgets ...
     dataButton = ctk.ctkCollapsibleButton()
     dataButton.text = "Data"
@@ -56,11 +62,22 @@ class cardiacSPECTWidget(ScriptedLoadableModuleWidget):
     self.dataPath=qt.QLineEdit(pathGuess)
     dataFormLayout.addRow("Data location",self.dataPath)
 
-    browseButton = qt.QPushButton("Browse")
+
+    self.remotePath=qt.QLineEdit();
+    dataFormLayout.addRow('Remote Path', self.remotePath)
+    self.remotePath.textChanged.connect(self.onRemotePathTextChanged)
+
+    browseButton = qt.QPushButton("Browse local")
     browseButton.toolTip="Set file location"
-    dataFormLayout.addRow("Change data location",browseButton)
+    dataFormLayout.addRow("Select local",browseButton)
     browseButton.connect('clicked(bool)',self.onBrowseButtonClicked)
 
+    browseRemoteButton = qt.QPushButton("Browse remote")
+    browseRemoteButton.toolTip="Set remote location"
+    dataFormLayout.addRow("Select remote",browseRemoteButton)
+    browseRemoteButton.connect('clicked(bool)',self.onRemoteBrowseButtonClicked)
+
+
     dataLoadButton = qt.QPushButton("Load")
     dataLoadButton.toolTip="Load data from DICOM"
     dataFormLayout.addRow("Data",dataLoadButton)
@@ -198,9 +215,15 @@ class cardiacSPECTWidget(ScriptedLoadableModuleWidget):
 
       self.dataPath.setText("file://"+inputDir)
 
+  def onRemoteBrowseButtonClicked(self):
+      self.selectRemote.show()
+
   def onDataLoadButtonClicked(self):
       self.logic.loadData(self)
 
+  def onRemotePathTextChanged(self,str):
+      self.dataPath.setText('labkey://'+str)
+
   def onTimeFrameSelect(self):
        it=self.time_frame_select.value
        selectionNode = slicer.app.applicationLogic().GetSelectionNode()
@@ -354,6 +377,7 @@ class cardiacSPECTLogic(ScriptedLoadableModuleLogic):
   def addFrames(self):
        #convert data from numpy.array to vtkImageData
        #use time point it
+       print "NFrames: {}".format(self.frame_data.shape[3])
        for it in range(0,self.frame_data.shape[3]):
            frame_data=self.frame_data[:,:,:,it];
            nodeName='testVolume'+str(it)

+ 7 - 3
cardiacSPECT/parseDicom.py

@@ -41,8 +41,10 @@ def filelist(mypath):
         print("Found network")
         #url=slicer.modules.labkeySlicerPythonExtensionWidget.serverURL.text
         #print("Seting url={}".format(url))
-        files=net.listDir(labkeyPath)
-        print files
+        ok, files=net.listRemoteDir(labkeyPath)
+        if not ok:
+            print "Error accessing path"
+            return []
 
     if mypath.find('file://')==0:
         print("Using local files")
@@ -126,7 +128,7 @@ def read_dynamic_SPECT(mypath):
 
         g,ok=getfile(origin,f)
         if not(ok):
-                return
+                continue
 
         try:
             plan = dicom.read_file(g)
@@ -179,6 +181,8 @@ def read_dynamic_SPECT(mypath):
                 pixel_size_read[i])
 
         center_read=plan.DetectorInformationSequence[0].ImagePositionPatient
+        print "Stored center at ({0},{1},{2})".format(center[0],center[1],center[2])
+        print "Read   center at ({0},{1},{2})".format(center_read[0],center_read[1],center_read[2])
         for i in range(0,3):
             if center[i] == 0:
                 center[i] = float(center_read[i])

+ 5 - 6
cardiacSPECT/vtkInterface.py

@@ -23,15 +23,14 @@ class vtkInterface:
     self.parent = parent
 
 
-def numpyToVTK(numpy_array, shape, data_type=None):
+def numpyToVTK(numpy_array, shape, data_type=vtk.VTK_FLOAT):
     v=vtk.vtkImageData()
-    v.SetDimensions(shape)
-    v.SetOrigin(0,0,0)
-    v.SetSpacing(1,1,1)
     v.GetPointData().SetScalars(
         vtk.util.numpy_support.numpy_to_vtk(
-            numpy_array.ravel(),deep=True, array_type=data_type))
-    v.Update()
+            np.ravel(numpy_array,order='F'),deep=True, array_type=data_type))
+    v.SetOrigin(0,0,0)
+    v.SetSpacing(1,1,1)
+    v.SetDimensions(shape)
     return v