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
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())
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)
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()