def OpenPlist(self, filename): translate_to_x = { "Bone": _("Bone"), "Soft Tissue": _("Soft Tissue"), "Enamel (Adult)": _("Enamel (Adult)"), "Enamel (Child)": _("Enamel (Child)"), "Compact Bone (Adult)": _("Compact Bone (Adult)"), "Compact Bone (Child)": _("Compact Bone (Child)"), "Spongial Bone (Adult)": _("Spongial Bone (Adult)"), "Spongial Bone (Child)": _("Spongial Bone (Child)"), "Muscle Tissue (Adult)": _("Muscle Tissue (Adult)"), "Muscle Tissue (Child)": _("Muscle Tissue (Child)"), "Fat Tissue (Adult)": _("Fat Tissue (Adult)"), "Fat Tissue (Child)": _("Fat Tissue (Child)"), "Skin Tissue (Adult)": _("Skin Tissue (Adult)"), "Skin Tissue (Child)": _("Skin Tissue (Child)"), "Custom": _("Custom") } with open(filename, 'rb') as f: p = plistlib.load(f, fmt=plistlib.FMT_XML) thresh_mri = p['thresh_mri'].copy() thresh_ct = p['thresh_ct'].copy() thresh_ct_new = {} for name in thresh_ct.keys(): thresh_ct_new[translate_to_x[name]] = thresh_ct[name] thresh_mri_new = {} for name in thresh_mri.keys(): thresh_mri_new[translate_to_x[name]] = thresh_mri[name] self.thresh_mri = TwoWaysDictionary(thresh_mri_new) self.thresh_ct = TwoWaysDictionary(thresh_ct_new)
def OpenPlist(self, filename): translate_to_x = { "Bone": "Bone", "Soft Tissue": "Soft Tissue", "Enamel (Adult)": "Enamel (Adult)", "Enamel (Child)": "Enamel (Child)", "Compact Bone (Adult)": "Compact Bone (Adult)", "Compact Bone (Child)": "Compact Bone (Child)", "Spongial Bone (Adult)": "Spongial Bone (Adult)", "Spongial Bone (Child)": "Spongial Bone (Child)", "Muscle Tissue (Adult)": "Muscle Tissue (Adult)", "Muscle Tissue (Child)": "Muscle Tissue (Child)", "Fat Tissue (Adult)": "Fat Tissue (Adult)", "Fat Tissue (Child)": "Fat Tissue (Child)", "Skin Tissue (Adult)": "Skin Tissue (Adult)", "Skin Tissue (Child)": "Skin Tissue (Child)", "Custom": "Custom" } p = plistlib.readPlist(filename) thresh_mri = p['thresh_mri'].copy() thresh_ct = p['thresh_ct'].copy() thresh_ct_new = {} for name in thresh_ct.keys(): thresh_ct_new[translate_to_x[name]] = thresh_ct[name] thresh_mri_new = {} for name in thresh_mri.keys(): thresh_mri_new[translate_to_x[name]] = thresh_mri[name] self.thresh_mri = TwoWaysDictionary(thresh_mri_new) self.thresh_ct = TwoWaysDictionary(thresh_ct_new)
def OpenPlist(self, filename): translate_to_x = {"Bone":_("Bone"), "Soft Tissue":_("Soft Tissue"), "Enamel (Adult)":_("Enamel (Adult)"), "Enamel (Child)": _("Enamel (Child)"), "Compact Bone (Adult)": _("Compact Bone (Adult)"), "Compact Bone (Child)":_("Compact Bone (Child)"), "Spongial Bone (Adult)":_("Spongial Bone (Adult)"), "Spongial Bone (Child)":_("Spongial Bone (Child)"), "Muscle Tissue (Adult)":_("Muscle Tissue (Adult)"), "Muscle Tissue (Child)":_("Muscle Tissue (Child)"), "Fat Tissue (Adult)":_("Fat Tissue (Adult)"), "Fat Tissue (Child)":_("Fat Tissue (Child)"), "Skin Tissue (Adult)":_("Skin Tissue (Adult)"), "Skin Tissue (Child)":_("Skin Tissue (Child)"), "Custom":_("Custom")} p = plistlib.readPlist(filename) thresh_mri = p['thresh_mri'].copy() thresh_ct = p['thresh_ct'].copy() thresh_ct_new = {} for name in thresh_ct.keys(): thresh_ct_new[translate_to_x[name]] = thresh_ct[name] thresh_mri_new = {} for name in thresh_mri.keys(): thresh_mri_new[translate_to_x[name]] = thresh_mri[name] self.thresh_mri = TwoWaysDictionary(thresh_mri_new) self.thresh_ct = TwoWaysDictionary(thresh_ct_new)
def __init__(self): # Patient/ acquistion information self.name = '' self.modality = '' self.original_orientation = '' self.window = '' self.level = '' self.affine = '' # Masks (vtkImageData) self.mask_dict = TwoWaysDictionary() # Surfaces are (vtkPolyData) self.surface_dict = {} self.last_surface_index = -1 # Measurements self.measurement_dict = {} # TODO: Future ++ self.annotation_dict = {} self.compress = False # InVesalius related data # So we can find bugs and reproduce user-related problems self.invesalius_version = version.get_svn_revision() self.presets = Presets() self.threshold_modes = self.presets.thresh_ct self.threshold_range = '' self.raycasting_preset = ''
def RemoveMask(self, index): new_dict = TwoWaysDictionary() new_index = 0 for i in self.mask_dict: if i == index: mask = self.mask_dict[i] mask.cleanup() else: new_dict[new_index] = self.mask_dict[i] self.mask_dict[i] = new_index new_index += 1 self.mask_dict = new_dict
def __init__(self): self.thresh_ct = TwoWaysDictionary({ _("Bone"): (226, 3071), _("Soft Tissue"): (-700, 225), _("Enamel (Adult)"): (1553, 2850), _("Enamel (Child)"): (2042, 3071), _("Compact Bone (Adult)"): (662, 1988), _("Compact Bone (Child)"): (586, 2198), _("Spongial Bone (Adult)"): (148, 661), _("Spongial Bone (Child)"): (156, 585), _("Muscle Tissue (Adult)"): (-5, 135), _("Muscle Tissue (Child)"): (-25, 139), _("Fat Tissue (Adult)"): (-205, -51), _("Fat Tissue (Child)"): (-212, -72), _("Skin Tissue (Adult)"): (-718, -177), _("Skin Tissue (Child)"): (-766, -202), _("Custom"): (0, 0) }) self.thresh_mri = TwoWaysDictionary({ _("Bone"): (1250, 4095), _("Soft Tissue"): (324, 1249), _("Enamel (Adult)"): (2577, 3874), _("Enamel (Child)"): (3066, 4095), _("Compact Bone (Adult)"): (1686, 3012), _("Compact Bone (Child)"): (1610, 3222), _("Spongial Bone (Adult)"): (1172, 1685), _("Spongial Bone (Child)"): (1180, 1609), _("Muscle Tissue (Adult)"): (1019, 1159), _("Muscle Tissue (Child)"): (999, 1163), _("Fat Tissue (Adult)"): (819, 973), _("Fat Tissue (Child)"): (812, 952), _("Skin Tissue (Adult)"): (306, 847), _("Skin Tissue (Child)"): (258, 822), _("Custom"): (0, 0) }) self.__bind_events()
def __init__(self): self.thresh_ct = TwoWaysDictionary({ _("Bone"):(226,3071), _("Soft Tissue"):(-700,225), _("Enamel (Adult)"):(1553,2850), _("Enamel (Child)"):(2042,3071), _("Compact Bone (Adult)"):(662,1988), _("Compact Bone (Child)"):(586,2198), _("Spongial Bone (Adult)"):(148,661), _("Spongial Bone (Child)"):(156,585), _("Muscle Tissue (Adult)"):(-5,135), _("Muscle Tissue (Child)"):(-25,139), _("Fat Tissue (Adult)"):(-205,-51), _("Fat Tissue (Child)"):(-212,-72), _("Skin Tissue (Adult)"):(-718,-177), _("Skin Tissue (Child)"):(-766,-202), _("Custom"):('', '') }) self.thresh_mri = TwoWaysDictionary({ _("Bone"):(1250,4095), _("Soft Tissue"):(324,1249), _("Enamel (Adult)"):(2577,3874), _("Enamel (Child)"):(3066,4095), _("Compact Bone (Adult)"):(1686,3012), _("Compact Bone (Child)"):(1610,3222), _("Spongial Bone (Adult)"):(1172,1685), _("Spongial Bone (Child)"):(1180,1609), _("Muscle Tissue (Adult)"):(1019,1159), _("Muscle Tissue (Child)"):(999,1163), _("Fat Tissue (Adult)"):(819,973), _("Fat Tissue (Child)"):(812,952), _("Skin Tissue (Adult)"):(306,847), _("Skin Tissue (Child)"):(258,822), _("Custom"):('', '') }) self.__bind_events()
class Presets(): def __init__(self): self.thresh_ct = TwoWaysDictionary({ _("Bone"): (226, 3071), _("Soft Tissue"): (-700, 225), _("Enamel (Adult)"): (1553, 2850), _("Enamel (Child)"): (2042, 3071), _("Compact Bone (Adult)"): (662, 1988), _("Compact Bone (Child)"): (586, 2198), _("Spongial Bone (Adult)"): (148, 661), _("Spongial Bone (Child)"): (156, 585), _("Muscle Tissue (Adult)"): (-5, 135), _("Muscle Tissue (Child)"): (-25, 139), _("Fat Tissue (Adult)"): (-205, -51), _("Fat Tissue (Child)"): (-212, -72), _("Skin Tissue (Adult)"): (-718, -177), _("Skin Tissue (Child)"): (-766, -202), _("Custom"): (0, 0) }) self.thresh_mri = TwoWaysDictionary({ _("Bone"): (1250, 4095), _("Soft Tissue"): (324, 1249), _("Enamel (Adult)"): (2577, 3874), _("Enamel (Child)"): (3066, 4095), _("Compact Bone (Adult)"): (1686, 3012), _("Compact Bone (Child)"): (1610, 3222), _("Spongial Bone (Adult)"): (1172, 1685), _("Spongial Bone (Child)"): (1180, 1609), _("Muscle Tissue (Adult)"): (1019, 1159), _("Muscle Tissue (Child)"): (999, 1163), _("Fat Tissue (Adult)"): (819, 973), _("Fat Tissue (Child)"): (812, 952), _("Skin Tissue (Adult)"): (306, 847), _("Skin Tissue (Child)"): (258, 822), _("Custom"): (0, 0) }) self.__bind_events() def __bind_events(self): Publisher.subscribe(self.UpdateThresholdModes, 'Update threshold limits list') def UpdateThresholdModes(self, threshold_range): thresh_min, thresh_max = threshold_range presets_list = (self.thresh_ct, self.thresh_mri) for presets in presets_list: for key in presets: (t_min, t_max) = presets[key] print(key, t_min, t_max) if (t_min is None) or (t_max is None): # setting custom preset t_min = thresh_min t_max = thresh_max if (t_min < thresh_min): t_min = thresh_min if (t_max > thresh_max): t_max = thresh_max # This has happened in Analyze files # TODO: find a good solution for presets in Analyze files if (t_min > thresh_max): t_min = thresh_min if (t_max < thresh_min): t_max = thresh_max presets[key] = (t_min, t_max) Publisher.sendMessage('Update threshold limits', threshold_range=(thresh_min, thresh_max)) def SavePlist(self, filename): filename = "%s$%s" % (filename, 'presets.plist') preset = {} translate_to_en = { _("Bone"): "Bone", _("Soft Tissue"): "Soft Tissue", _("Enamel (Adult)"): "Enamel (Adult)", _("Enamel (Child)"): "Enamel (Child)", _("Compact Bone (Adult)"): "Compact Bone (Adult)", _("Compact Bone (Child)"): "Compact Bone (Child)", _("Spongial Bone (Adult)"): "Spongial Bone (Adult)", _("Spongial Bone (Child)"): "Spongial Bone (Child)", _("Muscle Tissue (Adult)"): "Muscle Tissue (Adult)", _("Muscle Tissue (Child)"): "Muscle Tissue (Child)", _("Fat Tissue (Adult)"): "Fat Tissue (Adult)", _("Fat Tissue (Child)"): "Fat Tissue (Child)", _("Skin Tissue (Adult)"): "Skin Tissue (Adult)", _("Skin Tissue (Child)"): "Skin Tissue (Child)", _("Custom"): "Custom" } thresh_mri_new = {} for name in self.thresh_mri.keys(): thresh_mri_new[translate_to_en[name]] = self.thresh_mri[name] thresh_ct_new = {} for name in self.thresh_ct.keys(): thresh_ct_new[translate_to_en[name]] = self.thresh_ct[name] preset['thresh_mri'] = thresh_mri_new preset['thresh_ct'] = thresh_ct_new with open(filename, 'w+b') as f: plistlib.dump(preset, f) return os.path.split(filename)[1] def OpenPlist(self, filename): translate_to_x = { "Bone": _("Bone"), "Soft Tissue": _("Soft Tissue"), "Enamel (Adult)": _("Enamel (Adult)"), "Enamel (Child)": _("Enamel (Child)"), "Compact Bone (Adult)": _("Compact Bone (Adult)"), "Compact Bone (Child)": _("Compact Bone (Child)"), "Spongial Bone (Adult)": _("Spongial Bone (Adult)"), "Spongial Bone (Child)": _("Spongial Bone (Child)"), "Muscle Tissue (Adult)": _("Muscle Tissue (Adult)"), "Muscle Tissue (Child)": _("Muscle Tissue (Child)"), "Fat Tissue (Adult)": _("Fat Tissue (Adult)"), "Fat Tissue (Child)": _("Fat Tissue (Child)"), "Skin Tissue (Adult)": _("Skin Tissue (Adult)"), "Skin Tissue (Child)": _("Skin Tissue (Child)"), "Custom": _("Custom") } with open(filename, 'rb') as f: p = plistlib.load(f, fmt=plistlib.FMT_XML) thresh_mri = p['thresh_mri'].copy() thresh_ct = p['thresh_ct'].copy() thresh_ct_new = {} for name in thresh_ct.keys(): thresh_ct_new[translate_to_x[name]] = thresh_ct[name] thresh_mri_new = {} for name in thresh_mri.keys(): thresh_mri_new[translate_to_x[name]] = thresh_mri[name] self.thresh_mri = TwoWaysDictionary(thresh_mri_new) self.thresh_ct = TwoWaysDictionary(thresh_ct_new)
def load_from_folder(self, dirpath): """ Loads invesalius3 project files from dipath. """ import invesalius.data.measures as ms import invesalius.data.mask as msk import invesalius.data.surface as srf # Opening the main file from invesalius 3 project main_plist = os.path.join(dirpath, 'main.plist') with open(main_plist, 'r+b') as f: project = plistlib.load(f, fmt=plistlib.FMT_XML) format_version = project["format_version"] if format_version > const.INVESALIUS_ACTUAL_FORMAT_VERSION: from invesalius.gui.dialogs import ImportOldFormatInvFile ImportOldFormatInvFile() # case info self.name = project["name"] self.modality = project["modality"] self.original_orientation = project["orientation"] self.window = project["window_width"] self.level = project["window_level"] self.threshold_range = project["scalar_range"] self.spacing = project["spacing"] self.compress = project.get("compress", True) # Opening the matrix containing the slices filepath = os.path.join(dirpath, project["matrix"]["filename"]) self.matrix_filename = filepath self.matrix_shape = project["matrix"]['shape'] self.matrix_dtype = project["matrix"]['dtype'] if project.get("affine", ""): self.affine = project["affine"] # Opening the masks self.mask_dict = TwoWaysDictionary() for index in sorted(project.get("masks", []), key=lambda x: int(x)): filename = project["masks"][index] filepath = os.path.join(dirpath, filename) m = msk.Mask() m.spacing = self.spacing m.OpenPList(filepath) m.index = len(self.mask_dict) self.mask_dict[m.index] = m # Opening the surfaces self.surface_dict = {} for index in sorted(project.get("surfaces", []), key=lambda x: int(x)): filename = project["surfaces"][index] filepath = os.path.join(dirpath, filename) s = srf.Surface(int(index)) s.OpenPList(filepath) self.surface_dict[s.index] = s # Opening the measurements self.measurement_dict = {} measures_file = os.path.join( dirpath, project.get("measurements", "measurements.plist")) if os.path.exists(measures_file): with open(measures_file, 'r+b') as f: measurements = plistlib.load(f, fmt=plistlib.FMT_XML) for index in measurements: if measurements[index]["type"] in (const.DENSITY_ELLIPSE, const.DENSITY_POLYGON): measure = ms.DensityMeasurement() else: measure = ms.Measurement() measure.Load(measurements[index]) self.measurement_dict[int(index)] = measure
class Presets(): def __init__(self): self.thresh_ct = TwoWaysDictionary({ _("Bone"):(226,3071), _("Soft Tissue"):(-700,225), _("Enamel (Adult)"):(1553,2850), _("Enamel (Child)"):(2042,3071), _("Compact Bone (Adult)"):(662,1988), _("Compact Bone (Child)"):(586,2198), _("Spongial Bone (Adult)"):(148,661), _("Spongial Bone (Child)"):(156,585), _("Muscle Tissue (Adult)"):(-5,135), _("Muscle Tissue (Child)"):(-25,139), _("Fat Tissue (Adult)"):(-205,-51), _("Fat Tissue (Child)"):(-212,-72), _("Skin Tissue (Adult)"):(-718,-177), _("Skin Tissue (Child)"):(-766,-202), _("Custom"):('', '') }) self.thresh_mri = TwoWaysDictionary({ _("Bone"):(1250,4095), _("Soft Tissue"):(324,1249), _("Enamel (Adult)"):(2577,3874), _("Enamel (Child)"):(3066,4095), _("Compact Bone (Adult)"):(1686,3012), _("Compact Bone (Child)"):(1610,3222), _("Spongial Bone (Adult)"):(1172,1685), _("Spongial Bone (Child)"):(1180,1609), _("Muscle Tissue (Adult)"):(1019,1159), _("Muscle Tissue (Child)"):(999,1163), _("Fat Tissue (Adult)"):(819,973), _("Fat Tissue (Child)"):(812,952), _("Skin Tissue (Adult)"):(306,847), _("Skin Tissue (Child)"):(258,822), _("Custom"):('', '') }) self.__bind_events() def __bind_events(self): Publisher.subscribe(self.UpdateThresholdModes, 'Update threshold limits list') def UpdateThresholdModes(self, evt): thresh_min, thresh_max = evt.data presets_list = (self.thresh_ct, self.thresh_mri) for presets in presets_list: for key in presets: (t_min, t_max) = presets[key] if (t_min is None) or (t_max is None): # setting custom preset t_min = thresh_min t_max = thresh_max if (t_min < thresh_min): t_min = thresh_min if (t_max > thresh_max): t_max = thresh_max # This has happened in Analyze files # TODO: find a good solution for presets in Analyze files if (t_min > thresh_max): t_min = thresh_min if (t_max < thresh_min): t_max = thresh_max presets[key] = (t_min, t_max) Publisher.sendMessage('Update threshold limits', (thresh_min, thresh_max)) def SavePlist(self, filename): filename = "%s$%s" % (filename, 'presets.plist') preset = {} translate_to_en = {_("Bone"):"Bone", _("Soft Tissue"):"Soft Tissue", _("Enamel (Adult)"):"Enamel (Adult)", _("Enamel (Child)"): "Enamel (Child)", _("Compact Bone (Adult)"):"Compact Bone (Adult)", _("Compact Bone (Child)"):"Compact Bone (Child)", _("Spongial Bone (Adult)"):"Spongial Bone (Adult)", _("Spongial Bone (Child)"):"Spongial Bone (Child)", _("Muscle Tissue (Adult)"):"Muscle Tissue (Adult)", _("Muscle Tissue (Child)"):"Muscle Tissue (Child)", _("Fat Tissue (Adult)"):"Fat Tissue (Adult)", _("Fat Tissue (Child)"):"Fat Tissue (Child)", _("Skin Tissue (Adult)"):"Skin Tissue (Adult)", _("Skin Tissue (Child)"):"Skin Tissue (Child)", _("Custom"):"Custom"} thresh_mri_new = {} for name in self.thresh_mri.keys(): thresh_mri_new[translate_to_en[name]] = self.thresh_mri[name] thresh_ct_new = {} for name in self.thresh_ct.keys(): thresh_ct_new[translate_to_en[name]] = self.thresh_ct[name] preset['thresh_mri'] = thresh_mri_new preset['thresh_ct'] = thresh_ct_new plistlib.writePlist(preset, filename) return os.path.split(filename)[1] def OpenPlist(self, filename): translate_to_x = {"Bone":_("Bone"), "Soft Tissue":_("Soft Tissue"), "Enamel (Adult)":_("Enamel (Adult)"), "Enamel (Child)": _("Enamel (Child)"), "Compact Bone (Adult)": _("Compact Bone (Adult)"), "Compact Bone (Child)":_("Compact Bone (Child)"), "Spongial Bone (Adult)":_("Spongial Bone (Adult)"), "Spongial Bone (Child)":_("Spongial Bone (Child)"), "Muscle Tissue (Adult)":_("Muscle Tissue (Adult)"), "Muscle Tissue (Child)":_("Muscle Tissue (Child)"), "Fat Tissue (Adult)":_("Fat Tissue (Adult)"), "Fat Tissue (Child)":_("Fat Tissue (Child)"), "Skin Tissue (Adult)":_("Skin Tissue (Adult)"), "Skin Tissue (Child)":_("Skin Tissue (Child)"), "Custom":_("Custom")} p = plistlib.readPlist(filename) thresh_mri = p['thresh_mri'].copy() thresh_ct = p['thresh_ct'].copy() thresh_ct_new = {} for name in thresh_ct.keys(): thresh_ct_new[translate_to_x[name]] = thresh_ct[name] thresh_mri_new = {} for name in thresh_mri.keys(): thresh_mri_new[translate_to_x[name]] = thresh_mri[name] self.thresh_mri = TwoWaysDictionary(thresh_mri_new) self.thresh_ct = TwoWaysDictionary(thresh_ct_new)