Commit 1d21c8fcd975794acd327c94af6b3370393020ba
1 parent
d1fe1aa7
Exists in
master
and in
68 other branches
FIX: Last mask threshold when project is opened
Showing
8 changed files
with
41 additions
and
35 deletions
Show diff stats
invesalius/control.py
| @@ -86,7 +86,6 @@ class Controller(): | @@ -86,7 +86,6 @@ class Controller(): | ||
| 86 | self.progress_dialog = dialog.ProgressDialog( | 86 | self.progress_dialog = dialog.ProgressDialog( |
| 87 | maximum = data[1]) | 87 | maximum = data[1]) |
| 88 | else: | 88 | else: |
| 89 | - print data[0] | ||
| 90 | if not(self.progress_dialog.Update(data[0],message)): | 89 | if not(self.progress_dialog.Update(data[0],message)): |
| 91 | self.progress_dialog.Close() | 90 | self.progress_dialog.Close() |
| 92 | self.progress_dialog = None | 91 | self.progress_dialog = None |
| @@ -120,9 +119,7 @@ class Controller(): | @@ -120,9 +119,7 @@ class Controller(): | ||
| 120 | 119 | ||
| 121 | if len(patients_groups): | 120 | if len(patients_groups): |
| 122 | group = dcm.SelectLargerDicomGroup(patients_groups) | 121 | group = dcm.SelectLargerDicomGroup(patients_groups) |
| 123 | - print "Group", group.GetHandSortedList() | ||
| 124 | imagedata, dicom = self.OpenDicomGroup(group, gui=False) | 122 | imagedata, dicom = self.OpenDicomGroup(group, gui=False) |
| 125 | - print "imagedata", imagedata | ||
| 126 | self.CreateDicomProject(imagedata, dicom) | 123 | self.CreateDicomProject(imagedata, dicom) |
| 127 | # OPTION 2: ANALYZE? | 124 | # OPTION 2: ANALYZE? |
| 128 | else: | 125 | else: |
| @@ -204,7 +201,6 @@ class Controller(): | @@ -204,7 +201,6 @@ class Controller(): | ||
| 204 | 201 | ||
| 205 | # Create imagedata | 202 | # Create imagedata |
| 206 | filelist = dicom_group.GetFilenameList() | 203 | filelist = dicom_group.GetFilenameList() |
| 207 | - print "filelist", filelist | ||
| 208 | zspacing = dicom_group.zspacing | 204 | zspacing = dicom_group.zspacing |
| 209 | imagedata = utils.CreateImageData(filelist, zspacing) | 205 | imagedata = utils.CreateImageData(filelist, zspacing) |
| 210 | 206 | ||
| @@ -227,14 +223,13 @@ class Controller(): | @@ -227,14 +223,13 @@ class Controller(): | ||
| 227 | 223 | ||
| 228 | thresh_modes = proj.threshold_modes.keys() | 224 | thresh_modes = proj.threshold_modes.keys() |
| 229 | thresh_modes.sort() | 225 | thresh_modes.sort() |
| 230 | - ps.Publisher().sendMessage('Set threshold modes', | ||
| 231 | - (thresh_modes,const.THRESHOLD_PRESETS_INDEX)) | ||
| 232 | 226 | ||
| 233 | - # Set default value into slices' default mask | ||
| 234 | - key= thresh_modes[const.THRESHOLD_PRESETS_INDEX] | ||
| 235 | - #value = proj.threshold_modes.get_value(key) | ||
| 236 | - value = proj.threshold_modes[key] | ||
| 237 | - (min_thresh, max_thresh) = value | 227 | + default_threshold = const.THRESHOLD_PRESETS_INDEX |
| 228 | + if proj.mask_dict: | ||
| 229 | + last = max(proj.mask_dict.keys()) | ||
| 230 | + default_threshold = proj.mask_dict[last].threshold_range | ||
| 231 | + ps.Publisher().sendMessage('Set threshold modes', | ||
| 232 | + (thresh_modes,default_threshold)) | ||
| 238 | 233 | ||
| 239 | def LoadRaycastingPreset(self, pubsub_evt): | 234 | def LoadRaycastingPreset(self, pubsub_evt): |
| 240 | label = pubsub_evt.data | 235 | label = pubsub_evt.data |
invesalius/data/slice_.py
| @@ -216,6 +216,10 @@ class Slice(object): | @@ -216,6 +216,10 @@ class Slice(object): | ||
| 216 | else: | 216 | else: |
| 217 | proj = Project() | 217 | proj = Project() |
| 218 | proj.mask_dict[index].threshold_range = threshold_range | 218 | proj.mask_dict[index].threshold_range = threshold_range |
| 219 | + | ||
| 220 | + proj = Project() | ||
| 221 | + proj.mask_dict[self.current_mask.index ].threshold_range = threshold_range | ||
| 222 | + | ||
| 219 | 223 | ||
| 220 | def ShowMask(self, index, value): | 224 | def ShowMask(self, index, value): |
| 221 | "Show a mask given its index and 'show' value (0: hide, other: show)" | 225 | "Show a mask given its index and 'show' value (0: hide, other: show)" |
| @@ -508,6 +512,8 @@ class Slice(object): | @@ -508,6 +512,8 @@ class Slice(object): | ||
| 508 | mask = mask_dict[key] | 512 | mask = mask_dict[key] |
| 509 | 513 | ||
| 510 | # update gui related to mask | 514 | # update gui related to mask |
| 515 | + print "__load_masks" | ||
| 516 | + print 'THRESHOLD_RANGE', mask.threshold_range | ||
| 511 | ps.Publisher().sendMessage('Add mask', | 517 | ps.Publisher().sendMessage('Add mask', |
| 512 | (mask.index, | 518 | (mask.index, |
| 513 | mask.name, | 519 | mask.name, |
invesalius/data/surface.py
| @@ -334,7 +334,7 @@ class SurfaceManager(): | @@ -334,7 +334,7 @@ class SurfaceManager(): | ||
| 334 | 334 | ||
| 335 | def OnShowSurface(self, pubsub_evt): | 335 | def OnShowSurface(self, pubsub_evt): |
| 336 | index, value = pubsub_evt.data | 336 | index, value = pubsub_evt.data |
| 337 | - print "OnShowSurface", index, value | 337 | + #print "OnShowSurface", index, value |
| 338 | self.ShowActor(index, value) | 338 | self.ShowActor(index, value) |
| 339 | 339 | ||
| 340 | def ShowActor(self, index, value): | 340 | def ShowActor(self, index, value): |
invesalius/data/viewer_slice.py
| @@ -215,7 +215,7 @@ class Viewer(wx.Panel): | @@ -215,7 +215,7 @@ class Viewer(wx.Panel): | ||
| 215 | self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_SIZING)) | 215 | self.interactor.SetCursor(wx.StockCursor(wx.CURSOR_SIZING)) |
| 216 | 216 | ||
| 217 | def __set_mode_zoom(self, pubsub_evt): | 217 | def __set_mode_zoom(self, pubsub_evt): |
| 218 | - print "Zoom" | 218 | + #print "Zoom" |
| 219 | self.append_mode('ZOOM') | 219 | self.append_mode('ZOOM') |
| 220 | self.mouse_pressed = 0 | 220 | self.mouse_pressed = 0 |
| 221 | ICON_IMAGE = wx.Image(os.path.join(const.ICON_DIR, | 221 | ICON_IMAGE = wx.Image(os.path.join(const.ICON_DIR, |
| @@ -735,7 +735,7 @@ class Viewer(wx.Panel): | @@ -735,7 +735,7 @@ class Viewer(wx.Panel): | ||
| 735 | 'Set slice viewer layout') | 735 | 'Set slice viewer layout') |
| 736 | 736 | ||
| 737 | def ChangeBrushOperation(self, pubsub_evt): | 737 | def ChangeBrushOperation(self, pubsub_evt): |
| 738 | - print pubsub_evt.data | 738 | + #print pubsub_evt.data |
| 739 | self._brush_cursor_op = pubsub_evt.data | 739 | self._brush_cursor_op = pubsub_evt.data |
| 740 | 740 | ||
| 741 | def __bind_events_wx(self): | 741 | def __bind_events_wx(self): |
| @@ -912,10 +912,10 @@ class Viewer(wx.Panel): | @@ -912,10 +912,10 @@ class Viewer(wx.Panel): | ||
| 912 | extent = slice_data.actor.GetDisplayExtent() | 912 | extent = slice_data.actor.GetDisplayExtent() |
| 913 | cam = slice_data.renderer.GetActiveCamera() | 913 | cam = slice_data.renderer.GetActiveCamera() |
| 914 | 914 | ||
| 915 | |||
| 916 | - print self.orientation | ||
| 917 | - print x, y, z | ||
| 918 | - print actor_bound | 915 | |
| 916 | + #print self.orientation | ||
| 917 | + #print x, y, z | ||
| 918 | + #print actor_bound | ||
| 919 | #print "ViewUp", cam.GetViewUp() | 919 | #print "ViewUp", cam.GetViewUp() |
| 920 | #print "Position", cam.GetPosition() | 920 | #print "Position", cam.GetPosition() |
| 921 | #print "Orientation", cam.GetOrientation() | 921 | #print "Orientation", cam.GetOrientation() |
| @@ -923,10 +923,10 @@ class Viewer(wx.Panel): | @@ -923,10 +923,10 @@ class Viewer(wx.Panel): | ||
| 923 | 923 | ||
| 924 | vCamera = numpy.array(cam.GetPosition()) - numpy.array(cam.GetFocalPoint()) | 924 | vCamera = numpy.array(cam.GetPosition()) - numpy.array(cam.GetFocalPoint()) |
| 925 | n_vCamera = vCamera / numpy.linalg.norm(vCamera) | 925 | n_vCamera = vCamera / numpy.linalg.norm(vCamera) |
| 926 | - print "Normalized", n_vCamera | 926 | + #print "Normalized", n_vCamera |
| 927 | 927 | ||
| 928 | pos = [j + 0.01 * i for i,j in zip(n_vCamera, (x, y, z))] | 928 | pos = [j + 0.01 * i for i,j in zip(n_vCamera, (x, y, z))] |
| 929 | - print "posicao", pos | 929 | + #print "posicao", pos |
| 930 | 930 | ||
| 931 | #yz = [x + abs(x * 0.001), y, z] | 931 | #yz = [x + abs(x * 0.001), y, z] |
| 932 | #xz = [x, y - abs(y * 0.001), z] | 932 | #xz = [x, y - abs(y * 0.001), z] |
| @@ -988,10 +988,10 @@ class Viewer(wx.Panel): | @@ -988,10 +988,10 @@ class Viewer(wx.Panel): | ||
| 988 | slice_number = slice_data.number | 988 | slice_number = slice_data.number |
| 989 | actor_bound = slice_data.actor.GetBounds() | 989 | actor_bound = slice_data.actor.GetBounds() |
| 990 | 990 | ||
| 991 | |||
| 992 | - print self.orientation | ||
| 993 | - print x, y, z | ||
| 994 | - print actor_bound | 991 | |
| 992 | + #print self.orientation | ||
| 993 | + #print x, y, z | ||
| 994 | + #print actor_bound | ||
| 995 | 995 | ||
| 996 | yz = [x + abs(x * 0.001), y, z] | 996 | yz = [x + abs(x * 0.001), y, z] |
| 997 | xz = [x, y - abs(y * 0.001), z] | 997 | xz = [x, y - abs(y * 0.001), z] |
| @@ -1107,7 +1107,7 @@ class Viewer(wx.Panel): | @@ -1107,7 +1107,7 @@ class Viewer(wx.Panel): | ||
| 1107 | evt.Skip() | 1107 | evt.Skip() |
| 1108 | 1108 | ||
| 1109 | def OnScrollBarRelease(self, evt): | 1109 | def OnScrollBarRelease(self, evt): |
| 1110 | - print "OnScrollBarRelease" | 1110 | + #print "OnScrollBarRelease" |
| 1111 | self.UpdateSlice3D(self.pos) | 1111 | self.UpdateSlice3D(self.pos) |
| 1112 | evt.Skip() | 1112 | evt.Skip() |
| 1113 | 1113 |
invesalius/gui/data_notebook.py
| @@ -172,6 +172,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | @@ -172,6 +172,7 @@ class MasksListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | ||
| 172 | 172 | ||
| 173 | def EditMaskThreshold(self, pubsub_evt): | 173 | def EditMaskThreshold(self, pubsub_evt): |
| 174 | index, threshold_range = pubsub_evt.data | 174 | index, threshold_range = pubsub_evt.data |
| 175 | + print "EditMaskThreshold", threshold_range | ||
| 175 | self.SetStringItem(index, 2, str(threshold_range)) | 176 | self.SetStringItem(index, 2, str(threshold_range)) |
| 176 | 177 | ||
| 177 | def EditMaskColour(self, pubsub_evt): | 178 | def EditMaskColour(self, pubsub_evt): |
invesalius/gui/task_slice.py
| @@ -325,8 +325,14 @@ class MaskProperties(wx.Panel): | @@ -325,8 +325,14 @@ class MaskProperties(wx.Panel): | ||
| 325 | def SetThresholdModes(self, pubsub_evt): | 325 | def SetThresholdModes(self, pubsub_evt): |
| 326 | (thresh_modes_names, default_thresh) = pubsub_evt.data | 326 | (thresh_modes_names, default_thresh) = pubsub_evt.data |
| 327 | self.combo_thresh.SetItems(thresh_modes_names) | 327 | self.combo_thresh.SetItems(thresh_modes_names) |
| 328 | - self.combo_thresh.SetSelection(default_thresh) | ||
| 329 | - (thresh_min, thresh_max) = self.threshold_modes[thresh_modes_names[default_thresh]] | 328 | + if isinstance(default_thresh, int): |
| 329 | + self.combo_thresh.SetSelection(default_thresh) | ||
| 330 | + (thresh_min, thresh_max) =\ | ||
| 331 | + self.threshold_modes[thresh_modes_names[default_thresh]] | ||
| 332 | + else: | ||
| 333 | + self.combo_thresh.SetSelection(3) | ||
| 334 | + thresh_min, thresh_max = default_thresh | ||
| 335 | + | ||
| 330 | self.gradient.SetMinValue(thresh_min) | 336 | self.gradient.SetMinValue(thresh_min) |
| 331 | self.gradient.SetMaxValue(thresh_max) | 337 | self.gradient.SetMaxValue(thresh_max) |
| 332 | 338 | ||
| @@ -349,6 +355,7 @@ class MaskProperties(wx.Panel): | @@ -349,6 +355,7 @@ class MaskProperties(wx.Panel): | ||
| 349 | def OnSlideChanged(self, evt): | 355 | def OnSlideChanged(self, evt): |
| 350 | thresh_min = self.gradient.GetMinValue() | 356 | thresh_min = self.gradient.GetMinValue() |
| 351 | thresh_max = self.gradient.GetMaxValue() | 357 | thresh_max = self.gradient.GetMaxValue() |
| 358 | + print "OnSlideChanged", thresh_min, thresh_max | ||
| 352 | if self.bind_evt_gradient: | 359 | if self.bind_evt_gradient: |
| 353 | ps.Publisher().sendMessage('Set threshold values', | 360 | ps.Publisher().sendMessage('Set threshold values', |
| 354 | (thresh_min, thresh_max)) | 361 | (thresh_min, thresh_max)) |
invesalius/project.py
| @@ -181,14 +181,14 @@ class Project(object): | @@ -181,14 +181,14 @@ class Project(object): | ||
| 181 | def OpenPlistProject(self, filename): | 181 | def OpenPlistProject(self, filename): |
| 182 | filelist = Extract(filename, tempfile.gettempdir()) | 182 | filelist = Extract(filename, tempfile.gettempdir()) |
| 183 | main_plist = min(filelist, key=lambda x: len(x)) | 183 | main_plist = min(filelist, key=lambda x: len(x)) |
| 184 | - print main_plist | 184 | + #print main_plist |
| 185 | project = plistlib.readPlist(main_plist) | 185 | project = plistlib.readPlist(main_plist) |
| 186 | 186 | ||
| 187 | - print "antes", self.__dict__ | 187 | + #print "antes", self.__dict__ |
| 188 | 188 | ||
| 189 | # Path were extracted project is | 189 | # Path were extracted project is |
| 190 | dirpath = os.path.split(filelist[0])[0] | 190 | dirpath = os.path.split(filelist[0])[0] |
| 191 | - print "* dirpath", dirpath | 191 | + #print "* dirpath", dirpath |
| 192 | 192 | ||
| 193 | for key in project: | 193 | for key in project: |
| 194 | if key == 'imagedata': | 194 | if key == 'imagedata': |
| @@ -220,7 +220,7 @@ class Project(object): | @@ -220,7 +220,7 @@ class Project(object): | ||
| 220 | self.surface_dict[s.index] = s | 220 | self.surface_dict[s.index] = s |
| 221 | else: | 221 | else: |
| 222 | setattr(self, key, project[key]) | 222 | setattr(self, key, project[key]) |
| 223 | - print "depois", self.__dict__ | 223 | + #print "depois", self.__dict__ |
| 224 | 224 | ||
| 225 | 225 | ||
| 226 | 226 | ||
| @@ -233,7 +233,7 @@ def Compress(folder, filename): | @@ -233,7 +233,7 @@ def Compress(folder, filename): | ||
| 233 | 233 | ||
| 234 | def Extract(filename, folder): | 234 | def Extract(filename, folder): |
| 235 | tar = tarfile.open(filename, "r:gz") | 235 | tar = tarfile.open(filename, "r:gz") |
| 236 | - tar.list(verbose=True) | 236 | + #tar.list(verbose=True) |
| 237 | tar.extractall(folder) | 237 | tar.extractall(folder) |
| 238 | filelist = [os.path.join(folder, i) for i in tar.getnames()] | 238 | filelist = [os.path.join(folder, i) for i in tar.getnames()] |
| 239 | tar.close() | 239 | tar.close() |
invesalius/reader/dicom_reader.py
| @@ -85,13 +85,11 @@ def yGetDicomGroups(directory, recursive=True, gui=True): | @@ -85,13 +85,11 @@ def yGetDicomGroups(directory, recursive=True, gui=True): | ||
| 85 | dirpath, dirnames, filenames = os.walk(directory) | 85 | dirpath, dirnames, filenames = os.walk(directory) |
| 86 | nfiles = len(filenames) | 86 | nfiles = len(filenames) |
| 87 | 87 | ||
| 88 | - print "TOTAL FILES:", nfiles | ||
| 89 | counter = 0 | 88 | counter = 0 |
| 90 | grouper = dicom_grouper.DicomPatientGrouper() | 89 | grouper = dicom_grouper.DicomPatientGrouper() |
| 91 | # Retrieve only DICOM files, splited into groups | 90 | # Retrieve only DICOM files, splited into groups |
| 92 | if recursive: | 91 | if recursive: |
| 93 | for dirpath, dirnames, filenames in os.walk(directory): | 92 | for dirpath, dirnames, filenames in os.walk(directory): |
| 94 | - print "@: ",dirpath | ||
| 95 | for name in filenames: | 93 | for name in filenames: |
| 96 | filepath = str(os.path.join(dirpath, name)) | 94 | filepath = str(os.path.join(dirpath, name)) |
| 97 | parser = dicom.Parser() | 95 | parser = dicom.Parser() |
| @@ -104,7 +102,6 @@ def yGetDicomGroups(directory, recursive=True, gui=True): | @@ -104,7 +102,6 @@ def yGetDicomGroups(directory, recursive=True, gui=True): | ||
| 104 | grouper.AddFile(dcm) | 102 | grouper.AddFile(dcm) |
| 105 | else: | 103 | else: |
| 106 | dirpath, dirnames, filenames = os.walk(directory) | 104 | dirpath, dirnames, filenames = os.walk(directory) |
| 107 | - print "@: ",dirpath | ||
| 108 | for name in filenames: | 105 | for name in filenames: |
| 109 | filepath = str(os.path.join(dirpath, name)) | 106 | filepath = str(os.path.join(dirpath, name)) |
| 110 | parser = dicom.Parser() | 107 | parser = dicom.Parser() |