Skip to content

Commit

Permalink
Merge pull request #1015 from dnjohnstone/ENH_model_signal_attr
Browse files Browse the repository at this point in the history
ENH model.signal attribute
  • Loading branch information
francisco-dlp committed May 25, 2016
2 parents 28a1120 + b627a1c commit c586137
Show file tree
Hide file tree
Showing 25 changed files with 349 additions and 349 deletions.
12 changes: 6 additions & 6 deletions hyperspy/_components/scalable_fixed_pattern.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def __init__(self, spectrum):

self._position = self.shift
self._whitelist['spectrum'] = ('init,sig', spectrum)
self.spectrum = spectrum
self.signal = spectrum
self.yscale.free = True
self.yscale.value = 1.
self.xscale.value = 1.
Expand Down Expand Up @@ -105,8 +105,8 @@ def prepare_interpolator(self, kind='linear', fill_value=0, **kwargs):
"""

self.f = interp1d(
self.spectrum.axes_manager.signal_axes[0].axis,
self.spectrum.data.squeeze(),
self.signal.axes_manager.signal_axes[0].axis,
self.signal.data.squeeze(),
kind=kind,
bounds_error=False,
fill_value=fill_value,
Expand All @@ -117,9 +117,9 @@ def function(self, x):
result = self.yscale.value * self.f(
x * self.xscale.value - self.shift.value)
else:
result = self.yscale.value * self.spectrum.data
if self.spectrum.metadata.Signal.binned is True:
return result / self.spectrum.axes_manager.signal_axes[0].scale
result = self.yscale.value * self.signal.data
if self.signal.metadata.Signal.binned is True:
return result / self.signal.axes_manager.signal_axes[0].scale
else:
return result

Expand Down
14 changes: 7 additions & 7 deletions hyperspy/component.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,18 +516,18 @@ def as_signal(self, field='values'):

def plot(self, **kwargs):
"""Plot parameter signal.
Parameters
----------
**kwargs
Any extra keyword arguments are passed to the signal plot.
Example
-------
-------
>>> parameter.plot()
Set the minimum and maximum displayed values
>>> parameter.plot(vmin=0, vmax=1)
"""
self.as_signal().plot(**kwargs)
Expand Down Expand Up @@ -943,8 +943,8 @@ def _component2plot(self, axes_manager, out_of_range2nans=True):
s = self.__call__()
if not self.active:
s.fill(np.nan)
if self.model.spectrum.metadata.Signal.binned is True:
s *= self.model.spectrum.axes_manager.signal_axes[0].scale
if self.model.signal.metadata.Signal.binned is True:
s *= self.model.signal.axes_manager.signal_axes[0].scale
if out_of_range2nans is True:
ns = np.empty(self.model.axis.axis.shape)
ns.fill(np.nan)
Expand Down
6 changes: 3 additions & 3 deletions hyperspy/gui/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -799,11 +799,11 @@ class ComponentFit(SpanSelectorInSpectrum):
def __init__(self, model, component, signal_range=None,
estimate_parameters=True, fit_independent=False,
only_current=True, **kwargs):
if model.spectrum.axes_manager.signal_dimension != 1:
if model.signal.axes_manager.signal_dimension != 1:
raise SignalDimensionError(
model.spectrum.axes_manager.signal_dimension, 1)
model.signal.axes_manager.signal_dimension, 1)

self.signal = model.spectrum
self.signal = model.signal
self.axis = self.signal.axes_manager.signal_axes[0]
self.span_selector = None
self.only_current = [True] if only_current else [] # CheckListEditor
Expand Down
6 changes: 3 additions & 3 deletions hyperspy/misc/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,16 @@ def attrsetter(target, attrs, value):
>>> s = hs.signals.Spectrum(np.arange(10))
>>> m = s.create_model()
>>> m.spectrum.data
>>> m.signal.data
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Now set the data of the model with attrsetter
>>> attrsetter(m, 'spectrum.data', np.arange(10)+2)
>>> m.spectrum.data
>>> m.signal.data
array([2, 3, 4, 5, 6, 7, 8, 9, 10, 10])
The behaviour is identical to
>>> m.spectrum.data = np.arange(10) + 2
>>> m.signal.data = np.arange(10) + 2
"""
Expand Down
60 changes: 30 additions & 30 deletions hyperspy/models/edsmodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def __init__(self, spectrum,
Model1D.__init__(self, spectrum, *args, **kwargs)
self.xray_lines = list()
end_energy = self.axes_manager.signal_axes[0].high_value
self.end_energy = min(end_energy, self.spectrum._get_beam_energy())
self.end_energy = min(end_energy, self.signal._get_beam_energy())
self.start_energy = self.axes_manager.signal_axes[0].low_value
self.background_components = list()
if 'dictionary' in kwargs or len(args) > 1:
Expand Down Expand Up @@ -170,12 +170,12 @@ def units_factor(self):

@property
def spectrum(self):
return self._spectrum
return self._signal

@spectrum.setter
def spectrum(self, value):
if isinstance(value, EDSSpectrum):
self._spectrum = value
self._signal = value
else:
raise ValueError(
"This attribute can only contain an EDSSpectrum "
Expand Down Expand Up @@ -207,12 +207,12 @@ def add_family_lines(self, xray_lines='from_elements'):
only_lines = ("Ka", "La", "Ma")

if xray_lines is None or xray_lines == 'from_elements':
if 'Sample.xray_lines' in self.spectrum.metadata \
if 'Sample.xray_lines' in self.signal.metadata \
and xray_lines != 'from_elements':
xray_lines = self.spectrum.metadata.Sample.xray_lines
elif 'Sample.elements' in self.spectrum.metadata:
xray_lines = self.spectrum._get_lines_from_elements(
self.spectrum.metadata.Sample.elements,
xray_lines = self.signal.metadata.Sample.xray_lines
elif 'Sample.elements' in self.signal.metadata:
xray_lines = self.signal._get_lines_from_elements(
self.signal.metadata.Sample.elements,
only_one=only_one,
only_lines=only_lines)
else:
Expand All @@ -221,14 +221,14 @@ def add_family_lines(self, xray_lines='from_elements'):

components_names = [xr.name for xr in self.xray_lines]
xray_lines = filter(lambda x: x not in components_names, xray_lines)
xray_lines, xray_not_here = self.spectrum.\
xray_lines, xray_not_here = self.signal.\
_get_xray_lines_in_spectral_range(xray_lines)
for xray in xray_not_here:
warnings.warn("%s is not in the data energy range." % (xray))

for xray_line in xray_lines:
element, line = utils_eds._get_element_and_line(xray_line)
line_energy, line_FWHM = self.spectrum._get_line_energy(
line_energy, line_FWHM = self.signal._get_line_energy(
xray_line,
FWHM_MnKa='auto')
component = create_component.Gaussian()
Expand All @@ -240,18 +240,18 @@ def add_family_lines(self, xray_lines='from_elements'):
self.append(component)
self.xray_lines.append(component)
self[xray_line].A.map[
'values'] = self.spectrum.isig[line_energy].data * \
line_FWHM / self.spectrum.axes_manager[-1].scale
'values'] = self.signal.isig[line_energy].data * \
line_FWHM / self.signal.axes_manager[-1].scale
self[xray_line].A.map['is_set'] = (
np.ones(self.spectrum.isig[line_energy].data.shape) == 1)
np.ones(self.signal.isig[line_energy].data.shape) == 1)
component.A.ext_force_positive = True
for li in elements_db[element]['Atomic_properties']['Xray_lines']:
if line[0] in li and line != li:
xray_sub = element + '_' + li
if self.spectrum.\
if self.signal.\
_get_xray_lines_in_spectral_range(
[xray_sub])[0] != []:
line_energy, line_FWHM = self.spectrum.\
line_energy, line_FWHM = self.signal.\
_get_line_energy(
xray_sub, FWHM_MnKa='auto')
component_sub = create_component.Gaussian()
Expand Down Expand Up @@ -416,7 +416,7 @@ def _set_energy_resolution(self, xray_lines, *args, **kwargs):
"""
if xray_lines == 'all_alpha':
xray_lines = [compo.name for compo in self.xray_lines]
energy_Mn_Ka, FWHM_MnKa_old = self.spectrum._get_line_energy('Mn_Ka',
energy_Mn_Ka, FWHM_MnKa_old = self.signal._get_line_energy('Mn_Ka',
'auto')
FWHM_MnKa_old *= eV2keV / self.units_factor
get_sigma_Mn_Ka = _get_sigma(
Expand All @@ -427,13 +427,13 @@ def _set_energy_resolution(self, xray_lines, *args, **kwargs):
raise ValueError("FWHM_MnKa of " + str(FWHM_MnKa) +
" smaller than" + "physically possible")
else:
self.spectrum.set_microscope_parameters(
self.signal.set_microscope_parameters(
energy_resolution_MnKa=FWHM_MnKa)
warnings.warn("Energy resolution (FWHM at Mn Ka) changed from " +
"%lf to %lf eV" % (FWHM_MnKa_old, FWHM_MnKa))
for component in self:
if component.isbackground is False:
line_FWHM = self.spectrum._get_line_energy(
line_FWHM = self.signal._get_line_energy(
component.name, FWHM_MnKa='auto')[1]
component.fwhm = line_FWHM

Expand All @@ -448,7 +448,7 @@ def _twin_xray_lines_scale(self, xray_lines):
"""
if xray_lines == 'all_alpha':
xray_lines = [compo.name for compo in self.xray_lines]
ax = self.spectrum.axes_manager[-1]
ax = self.signal.axes_manager[-1]
ref = []
for i, xray_line in enumerate(xray_lines):
component = self[xray_line]
Expand Down Expand Up @@ -482,8 +482,8 @@ def _set_energy_scale(self, xray_lines, ref):
"""
if xray_lines == 'all_alpha':
xray_lines = [compo.name for compo in self.xray_lines]
ax = self.spectrum.axes_manager[-1]
scale_old = self.spectrum.axes_manager[-1].scale
ax = self.signal.axes_manager[-1]
scale_old = self.signal.axes_manager[-1].scale
ind = np.argsort(np.array(
[compo.centre.value for compo in self.xray_lines]))[-1]
E = self[xray_lines[ind]].centre.value
Expand Down Expand Up @@ -538,9 +538,9 @@ def _set_energy_offset(self, xray_lines, ref):
if xray_lines == 'all_alpha':
xray_lines = [compo.name for compo in self.xray_lines]
diff = self[xray_lines[0]].centre.value - ref[0]
offset_old = self.spectrum.axes_manager[-1].offset
self.spectrum.axes_manager[-1].offset -= diff
offset = self.spectrum.axes_manager[-1].offset
offset_old = self.signal.axes_manager[-1].offset
self.signal.axes_manager[-1].offset -= diff
offset = self.signal.axes_manager[-1].offset
_logger.info("Offset changed from %lf to %lf", offset_old, offset)
for i, xray_line in enumerate(xray_lines):
component = self[xray_line]
Expand Down Expand Up @@ -829,25 +829,25 @@ def get_lines_intensity(self,
xray_lines = [component.name for component in self.xray_lines]
else:
if xray_lines == 'from_metadata':
xray_lines = self.spectrum.metadata.Sample.xray_lines
xray_lines = self.signal.metadata.Sample.xray_lines
xray_lines = filter(lambda x: x in [a.name for a in
self], xray_lines)
if not xray_lines:
raise ValueError("These X-ray lines are not part of the model.")
for xray_line in xray_lines:
element, line = utils_eds._get_element_and_line(xray_line)
line_energy = self.spectrum._get_line_energy(xray_line)
line_energy = self.signal._get_line_energy(xray_line)
data_res = self[xray_line].A.map['values']
if self.axes_manager.navigation_dimension == 0:
data_res = data_res[0]
img = self.spectrum.isig[0:1].integrate1D(-1)
img = self.signal.isig[0:1].integrate1D(-1)
img.data = data_res
img.metadata.General.title = (
'Intensity of %s at %.2f %s from %s' %
(xray_line,
line_energy,
self.spectrum.axes_manager.signal_axes[0].units,
self.spectrum.metadata.General.title))
self.signal.axes_manager.signal_axes[0].units,
self.signal.metadata.General.title))
if img.axes_manager.navigation_dimension >= 2:
img = img.as_image([0, 1])
elif img.axes_manager.navigation_dimension == 1:
Expand All @@ -856,7 +856,7 @@ def get_lines_intensity(self,
print("%s at %s %s : Intensity = %.2f"
% (xray_line,
line_energy,
self.spectrum.axes_manager.signal_axes[0].units,
self.signal.axes_manager.signal_axes[0].units,
img.data))
img.metadata.set_item("Sample.elements", ([element]))
img.metadata.set_item("Sample.xray_lines", ([xray_line]))
Expand Down
14 changes: 7 additions & 7 deletions hyperspy/models/eelsmodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,18 +89,18 @@ def __init__(self, spectrum, auto_background=True,
background = PowerLaw()
self.append(background)

if self.spectrum.subshells and auto_add_edges is True:
if self.signal.subshells and auto_add_edges is True:
self._add_edges_from_subshells_names()

@property
def spectrum(self):
return self._spectrum
return self._signal

@spectrum.setter
def spectrum(self, value):
if isinstance(value, EELSSpectrum):
self._spectrum = value
self.spectrum._are_microscope_parameters_missing()
self._signal = value
self.signal._are_microscope_parameters_missing()
else:
raise ValueError(
"This attribute can only contain an EELSSpectrum "
Expand All @@ -110,7 +110,7 @@ def spectrum(self, value):
def append(self, component):
super(EELSModel, self).append(component)
if isinstance(component, EELSCLEdge):
tem = self.spectrum.metadata.Acquisition_instrument.TEM
tem = self.signal.metadata.Acquisition_instrument.TEM
component.set_microscope_parameters(
E0=tem.beam_energy,
alpha=tem.convergence_angle,
Expand Down Expand Up @@ -183,7 +183,7 @@ def _add_edges_from_subshells_names(self, e_shells=None):
e_shells : list of strings
"""
if e_shells is None:
e_shells = list(self.spectrum.subshells)
e_shells = list(self.signal.subshells)
e_shells.sort()
master_edge = EELSCLEdge(e_shells.pop(), self.GOS)
# If self.GOS was None, the GOS is set by eels_cl_edge so
Expand Down Expand Up @@ -479,7 +479,7 @@ def two_area_background_estimation(self, E1=None, E2=None, powerlaw=None):
preferences.EELS.preedge_safe_window_width

if not powerlaw.estimate_parameters(
self.spectrum, E1, E2, only_current=False):
self.signal, E1, E2, only_current=False):
_logger.warning(
"The power law background parameters could not "
"be estimated.\n"
Expand Down

0 comments on commit c586137

Please sign in to comment.