Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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 = ''
Esempio n. 4
0
 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
Esempio n. 5
0
    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()
Esempio n. 6
0
    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