Example #1
0
def create_indexing_config():
    # Creates a hexrd.config class from the indexing configuration

    # Make a copy to modify
    indexing_config = copy.deepcopy(HexrdConfig().indexing_config)
    available_materials = list(HexrdConfig().materials.keys())
    selected_material = indexing_config.get('_selected_material')

    if selected_material not in available_materials:
        raise Exception(f'Selected material {selected_material} not available')

    material = HexrdConfig().material(selected_material)

    omaps = indexing_config['find_orientations']['orientation_maps']
    omaps['active_hkls'] = list(range(len(material.planeData.getHKLs())))

    # Set the active material on the config
    tmp = indexing_config.setdefault('material', {})
    tmp['active'] = material.name

    # Create the root config from the indexing config dict
    config = RootConfig(indexing_config)

    # Create and set instrument config
    iconfig = InstrumentConfig(config)
    iconfig._hedm = create_hedm_instrument()
    config.instrument = iconfig

    # Create and set material config
    mconfig = MaterialConfig(config)
    mconfig.materials = HexrdConfig().materials
    config.material = mconfig

    # Set this so the config won't over-write our tThWidth
    config.set('material:tth_width', np.degrees(material.planeData.tThWidth))

    # Use unaggregated images if possible
    ims_dict = HexrdConfig().unagg_images
    if ims_dict is None:
        # This probably means the image series was never aggregated.
        # Try using the imageseries dict.
        ims_dict = HexrdConfig().imageseries_dict

    # Load omega data if it is missing
    load_omegas_dict = {
        k: ims for k, ims in ims_dict.items() if 'omega' not in ims.metadata
    }
    if load_omegas_dict:
        ImageLoadManager().add_omega_metadata(load_omegas_dict)

    # Convert image series into OmegaImageSeries
    for key, ims in ims_dict.items():
        if not isinstance(ims, OmegaImageSeries):
            ims_dict[key] = OmegaImageSeries(ims)

    config.image_series = ims_dict

    return config
Example #2
0
    def create_masks_list(self):
        self.masks = {}
        polar_data = HexrdConfig().polar_masks_line_data
        raw_data = HexrdConfig().raw_masks_line_data

        for i, (key, val) in enumerate(polar_data.items()):
            if not any(np.array_equal(m, val) for m in self.masks.values()):
                self.masks[key] = ('polar', val)
        for i, (key, val) in enumerate(raw_data.items()):
            if not any(np.array_equal(m, val) for m in self.masks.values()):
                self.masks[key] = val
        if HexrdConfig().threshold_mask_status:
            self.threshold = True
            self.masks['threshold'] = (
                'threshold', HexrdConfig().threshold_mask)
        HexrdConfig().visible_masks = list(self.masks.keys())
Example #3
0
    def load_settings(self):
        settings = HexrdConfig().config['calibration'].get('wppf')
        if not settings:
            return

        blockers = [QSignalBlocker(w) for w in self.all_widgets]  # noqa: F841
        for k, v in settings.items():
            setattr(self, k, v)
Example #4
0
    def load_settings(self):
        settings = HexrdConfig().config['calibration'].get('wppf')
        if not settings:
            return

        with block_signals(*self.all_widgets):
            for k, v in settings.items():
                if k == 'params' and isinstance(v, dict):
                    # The older WPPF dialog used a dict. Skip this
                    # as it is no longer compatible.
                    continue

                if not hasattr(self, k):
                    # Skip it...
                    continue

                setattr(self, k, v)

        # Add/remove params depending on what are allowed
        self.update_params()