def create_model(self, signal_dict, model_letter): _logger.debug('Creating model in worker {}'.format(self.identity)) sig = BaseSignal(**signal_dict) sig._assign_subclass() self.model = sig.models[model_letter].restore() for component in self.model: component.active_is_multidimensional = False component.active = True for par in component.parameters: par.map = par.map.copy() if self.model.signal.metadata.has_item( 'Signal.Noise_properties.variance'): var = self.model.signal.metadata.Signal.Noise_properties.variance if isinstance(var, BaseSignal): var.data = var.data.copy() self._array_views_to_copies()
def create_model(self, signal_dict, model_letter): _logger.debug('Creating model in worker {}'.format(self.identity)) sig = BaseSignal(**signal_dict) sig._assign_subclass() self.model = sig.models[model_letter].restore() self.model.signal.data = self.model.signal.data.copy() for component in self.model: component.active_is_multidimensional = False component.active = True for par in component.parameters: par.map = par.map.copy() var = self.model.signal.metadata.Signal.Noise_properties.variance if isinstance(var, BaseSignal): var.data = var.data.copy() if self.model.low_loss is not None: self.model.low_loss.data = self.model.low_loss.data.copy()
def as_signal(self, field='values'): """Get a parameter map as a signal object. Please note that this method only works when the navigation dimension is greater than 0. Parameters ---------- field : {'values', 'std', 'is_set'} Raises ------ NavigationDimensionError : if the navigation dimension is 0 """ from hyperspy.signal import BaseSignal s = BaseSignal(data=self.map[field], axes=self._axes_manager._get_navigation_axes_dicts()) if self.component is not None and \ self.component.active_is_multidimensional: s.data[np.logical_not(self.component._active_array)] = np.nan s.metadata.General.title = ("%s parameter" % self.name if self.component is None else "%s parameter of %s component" % (self.name, self.component.name)) for axis in s.axes_manager._axes: axis.navigate = False if self._number_of_elements > 1: s.axes_manager._append_axis( size=self._number_of_elements, name=self.name, navigate=True) s._assign_subclass() if field == "values": # Add the variance if available std = self.as_signal(field="std") if not np.isnan(std.data).all(): std.data = std.data ** 2 std.metadata.General.title = "Variance" s.metadata.set_item( "Signal.Noise_properties.variance", std) return s
def reconstruct_object(flags, value): """ Reconstructs the value (if necessary) after having saved it in a dictionary """ if not isinstance(flags, list): flags = parse_flag_string(flags) if 'sig' in flags: if isinstance(value, dict): from hyperspy.signal import BaseSignal value = BaseSignal(**value) value._assign_subclass() return value if 'fn' in flags: ifdill, thing = value if ifdill is None: return thing if ifdill in [True, 'True', b'True']: return dill.loads(thing) # should not be reached raise ValueError("The object format is not recognized") return value