Ejemplo n.º 1
0
    def __init__(self, spectrum, auto_background=True, auto_add_edges=True, ll=None, GOS=None, dictionary=None):
        Model.__init__(self, spectrum)
        self._suspend_auto_fine_structure_width = False
        self.convolved = False
        self.low_loss = ll
        self.GOS = GOS
        self.edges = list()
        if dictionary is not None:
            auto_background = False
            auto_add_edges = False
            self._load_dictionary(dictionary)

        if auto_background is True:
            interactive_ns = get_interactive_ns()
            background = PowerLaw()
            background.name = "background"
            warnings.warn(
                'Adding "background" to the user namespace. ' "This feature will be removed in HyperSpy 0.9.",
                VisibleDeprecationWarning,
            )
            interactive_ns["background"] = background
            self.append(background)

        if self.spectrum.subshells and auto_add_edges is True:
            self._add_edges_from_subshells_names()
Ejemplo n.º 2
0
 def power_law_extrapolation(self,
                             window_size=20,
                             extrapolation_size=1024,
                             add_noise=False,
                             fix_neg_r=False):
     """Extrapolate the spectrum to the right using a powerlaw
     
     
     Parameters
     ----------
     window_size : int
         The number of channels from the right side of the 
         spectrum that are used to estimate the power law 
         parameters.        
     extrapolation_size : int
         Size of the extrapolation in number of channels
     add_noise : bool
         If True, add poissonian noise to the extrapolated spectrum.
     fix_neg_r : bool
         If True, the negative values for the "components.PowerLaw" 
         parameter r will be flagged and the extrapolation will be 
         done with a constant zero-value.
     
     Returns
     -------
     A new spectrum, with the extrapolation.
         
     """
     self._check_signal_dimension_equals_one()
     axis = self.axes_manager.signal_axes[0]
     s = self.deepcopy()
     s.mapped_parameters.title += (' %i channels extrapolated' %
                                   extrapolation_size)
     if s.tmp_parameters.has_item('filename'):
         s.tmp_parameters.filename += ('_%i_channels_extrapolated' %
                                       extrapolation_size)
     new_shape = list(self.data.shape)
     new_shape[axis.index_in_array] += extrapolation_size
     s.data = np.zeros((new_shape))
     s.get_dimensions_from_data()
     s.data[..., :axis.size] = self.data
     pl = PowerLaw()
     pl._axes_manager = self.axes_manager
     pl.estimate_parameters(s, axis.index2value(axis.size - window_size),
                            axis.index2value(axis.size - 1))
     if fix_neg_r is True:
         _r = pl.r.map['values']
         _A = pl.A.map['values']
         _A[_r <= 0] = 0
         pl.A.map['values'] = _A
     s.data[..., axis.size:] = (
         pl.A.map['values'][..., np.newaxis] *
         s.axes_manager.signal_axes[0].axis[np.newaxis, axis.size:]
         **(-pl.r.map['values'][..., np.newaxis]))
     return s
Ejemplo n.º 3
0
 def __init__(self, spectrum, auto_background=True,
              auto_add_edges=True, ll=None, 
              GOS=None, *args, **kwargs):
     Model.__init__(self, spectrum, *args, **kwargs)
     self.convolved = False
     self.low_loss = ll
     self.GOS = GOS
     if auto_background is True:
         background = PowerLaw()
         background.name = 'background'
         interactive_ns['background'] = background
         self.append(background)
         
     if self.spectrum.subshells and auto_add_edges is True:
         self._add_edges_from_subshells_names()
Ejemplo n.º 4
0
 def __init__(self, spectrum, auto_background=True,
              auto_add_edges=True, ll=None, 
              GOS=None, *args, **kwargs):
     Model.__init__(self, spectrum, *args, **kwargs)
     self.convolved = False
     self.low_loss = ll
     self.GOS = GOS
     if auto_background is True:
         background = PowerLaw()
         background.name = 'background'
         interactive_ns['background'] = background
         self.append(background)
         
     if self.spectrum.subshells and auto_add_edges is True:
         self._add_edges_from_subshells_names()
Ejemplo n.º 5
0
    def __init__(self, spectrum, auto_background=True, auto_add_edges=True, ll=None, GOS=None, *args, **kwargs):
        Model.__init__(self, spectrum, *args, **kwargs)
        self._suspend_auto_fine_structure_width = False
        self.convolved = False
        self.low_loss = ll
        self.GOS = GOS
        self.edges = list()
        if auto_background is True:
            interactive_ns = get_interactive_ns()
            background = PowerLaw()
            background.name = "background"
            interactive_ns["background"] = background
            self.append(background)

        if self.spectrum.subshells and auto_add_edges is True:
            self._add_edges_from_subshells_names()
Ejemplo n.º 6
0
    def __init__(self,
                 spectrum,
                 auto_background=True,
                 auto_add_edges=True,
                 ll=None,
                 GOS=None,
                 dictionary=None):
        Model1D.__init__(self, spectrum)
        self._suspend_auto_fine_structure_width = False
        self.convolved = False
        self.low_loss = ll
        self.GOS = GOS
        self.edges = []
        self._background_components = []
        if dictionary is not None:
            auto_background = False
            auto_add_edges = False
            self._load_dictionary(dictionary)

        if auto_background is True:
            background = PowerLaw()
            self.append(background)

        if self.spectrum.subshells and auto_add_edges is True:
            self._add_edges_from_subshells_names()
Ejemplo n.º 7
0
    def __init__(self, spectrum, auto_background=True, auto_add_edges=True, ll=None, *args, **kwargs):
        Model.__init__(self, spectrum, *args, **kwargs)
        self.ll = ll

        if auto_background is True:
            background = PowerLaw()
            background.name = "background"
            interactive_ns["background"] = background
            self.append(background)
        if self.ll is not None:
            self.convolved = True
            if self.experiments.convolution_axis is None:
                self.experiments.set_convolution_axis()
        else:
            self.convolved = False
        if self.spectrum.subshells and auto_add_edges is True:
            self._add_edges_from_subshells_names()
Ejemplo n.º 8
0
    def __init__(self,
                 spectrum,
                 auto_background=True,
                 auto_add_edges=True,
                 ll=None,
                 *args,
                 **kwargs):
        Model.__init__(self, spectrum, *args, **kwargs)
        self.ll = ll

        if auto_background is True:
            bg = PowerLaw()
            interactive_ns['bg'] = bg
            self.append(bg)
        if self.ll is not None:
            self.convolved = True
            if self.experiments.convolution_axis is None:
                self.experiments.set_convolution_axis()
        else:
            self.convolved = False
        if self.spectrum.subshells and auto_add_edges is True:
            self._add_edges_from_subshells_names()
Ejemplo n.º 9
-1
 def power_law_extrapolation(self, window_size=20,
                             extrapolation_size=1024,
                             add_noise=False,
                             fix_neg_r=False):
     """Extrapolate the spectrum to the right using a powerlaw
     
     
     Parameters
     ----------
     window_size : int
         The number of channels from the right side of the 
         spectrum that are used to estimate the power law 
         parameters.        
     extrapolation_size : int
         Size of the extrapolation in number of channels
     add_noise : bool
         If True, add poissonian noise to the extrapolated spectrum.
     fix_neg_r : bool
         If True, the negative values for the "components.PowerLaw" 
         parameter r will be flagged and the extrapolation will be 
         done with a constant zero-value.
     
     Returns
     -------
     A new spectrum, with the extrapolation.
         
     """
     self._check_signal_dimension_equals_one()
     axis = self.axes_manager.signal_axes[0]
     s = self.deepcopy()
     s.mapped_parameters.title += (
         ' %i channels extrapolated' % 
             extrapolation_size)
     if s.tmp_parameters.has_item('filename'):
             s.tmp_parameters.filename += (
                 '_%i_channels_extrapolated' % extrapolation_size)
     new_shape = list(self.data.shape)
     new_shape[axis.index_in_array] += extrapolation_size 
     s.data = np.zeros((new_shape))
     s.get_dimensions_from_data()
     s.data[...,:axis.size] = self.data
     pl = PowerLaw()
     pl._axes_manager = self.axes_manager
     pl.estimate_parameters(
         s, axis.index2value(axis.size - window_size),
         axis.index2value(axis.size - 1))
     if fix_neg_r is True:
         _r = pl.r.map['values']
         _A = pl.A.map['values']
         _A[_r<=0] = 0
         pl.A.map['values'] = _A
     s.data[...,axis.size:] = (
         pl.A.map['values'][...,np.newaxis]*
         s.axes_manager.signal_axes[0].axis[np.newaxis,axis.size:]**(
         -pl.r.map['values'][...,np.newaxis]))
     return s