holospy.signals
#
|
Signal class for holograms acquired via off-axis electron holography. |
|
Lazy signal class for holograms acquired via off-axis electron holography. |
Modules containing the HoloSpy signals and their lazy counterparts.
- HologramImage
For holography data
- LazyHologramImage
For holography data processed lazily
- class holospy.signals.HologramImage(*args, **kwargs)#
Bases:
Signal2D
Signal class for holograms acquired via off-axis electron holography.
Create a signal instance.
- Parameters:
- data
numpy.ndarray
The signal data. It can be an array of any dimensions.
- axes[dict/axes], optional
List of either dictionaries or axes objects to define the axes (see the documentation of the
AxesManager
class for more details).- attributes
dict
, optional A dictionary whose items are stored as attributes.
- metadata
dict
, optional A dictionary containing a set of parameters that will to stores in the
metadata
attribute. Some parameters might be mandatory in some cases.- original_metadata
dict
, optional A dictionary containing a set of parameters that will to stores in the
original_metadata
attribute. It typically contains all the parameters that has been imported from the original data file.- raggedbool or
None
, optional Define whether the signal is ragged or not. Overwrite the
ragged
value in theattributes
dictionary. If None, it does nothing. Default is None.
- data
- estimate_sideband_position(ap_cb_radius=None, sb='lower', high_cf=True, show_progressbar=False, num_workers=None)#
Estimates the position of the sideband and returns its position.
- Parameters:
- ap_cb_radius
float
,None
The aperture radius used to mask out the centerband.
- sb
str
, optional Chooses which sideband is taken.
'lower'
or'upper'
- high_cfbool, optional
If False, the highest carrier frequency allowed for the sideband location is equal to half of the Nyquist frequency (Default: True).
- show_progressbar
None
or bool If
True
, display a progress bar. IfNone
, the default from the preferences settings is used.- num_workers
None
orint
Number of worker used by dask. If None, default to dask default value.
- ap_cb_radius
- Returns:
hyperspy.api.signals.Signal1D
Sideband positions (y, x), referred to the unshifted FFT.
- Raises:
NotImplementedError
If the signal axes are non-uniform axes.
Examples
>>> import holospy as holo >>> s = holo.data.Fe_needle_hologram() >>> sb_position = s.estimate_sideband_position() >>> sb_position.data
array([124, 452])
- estimate_sideband_size(sb_position, show_progressbar=False, num_workers=None)#
Estimates the size of the sideband and returns its size.
- Parameters:
- sb_position
hyperspy.api.signals.BaseSignal
The sideband position (y, x), referred to the non-shifted FFT.
- show_progressbar
None
or bool If
True
, display a progress bar. IfNone
, the default from the preferences settings is used.- num_workers
None
orint
Number of worker used by dask. If None, default to dask default value.
- sb_position
- Returns:
hyperspy.api.signals.Signal1D
Sideband size referred to the unshifted FFT.
- Raises:
NotImplementedError
If the signal axes are non-uniform axes.
Examples
>>> import holospy as holo >>> s = holo.data.Fe_needle_hologram() >>> sb_position = s.estimate_sideband_position() >>> sb_size = s.estimate_sideband_size(sb_position) >>> sb_size.data array([ 68.87670143])
- reconstruct_phase(reference=None, sb_size=None, sb_smoothness=None, sb_unit=None, sb='lower', sb_position=None, high_cf=True, output_shape=None, plotting=False, store_parameters=True, show_progressbar=False, num_workers=None)#
Reconstruct electron holograms. Operates on multidimensional hyperspy signals. There are several usage schemes:
Reconstruct 1d or Nd hologram without reference
Reconstruct 1d or Nd hologram using single reference hologram
Reconstruct Nd hologram using Nd reference hologram (applies each reference to each hologram in Nd stack)
The reconstruction parameters (sb_position, sb_size, sb_smoothness) have to be 1d or to have same dimensionality as the hologram.
- Parameters:
- reference
ndarray
,hyperspy.api.signals.Signal2D
,None
Vacuum reference hologram.
- sb_size
float
,ndarray
,hyperspy.api.signals.BaseSignal
,None
Sideband radius of the aperture in corresponding unit (see ‘sb_unit’). If None, the radius of the aperture is set to 1/3 of the distance between sideband and center band.
- sb_smoothness
float
,ndarray
,hyperspy.api.signals.BaseSignal
,None
Smoothness of the aperture in the same unit as sb_size.
- sb_unit
str
,None
Unit of the two sideband parameters ‘sb_size’ and ‘sb_smoothness’. Default: None - Sideband size given in pixels ‘nm’: Size and smoothness of the aperture are given in 1/nm. ‘mrad’: Size and smoothness of the aperture are given in mrad.
- sb
str
,None
Select which sideband is selected. ‘upper’ or ‘lower’.
- sb_position
tuple
,hyperspy.api.signals.Signal1D
,None
The sideband position (y, x), referred to the non-shifted FFT. If None, sideband is determined automatically from FFT.
- high_cfbool, optional
If False, the highest carrier frequency allowed for the sideband location is equal to half of the Nyquist frequency (Default: True).
- output_shape: tuple, None
Choose a new output shape. Default is the shape of the input hologram. The output shape should not be larger than the input shape.
- plottingbool
Shows details of the reconstruction (i.e. SB selection).
- store_parametersbool
Store reconstruction parameters in metadata
- show_progressbar
None
or bool If
True
, display a progress bar. IfNone
, the default from the preferences settings is used.- num_workers
None
orint
Number of worker used by dask. If None, default to dask default value.
- reference
- Returns:
hyperspy.api.signals.ComplexSignal2D
Reconstructed electron wave. By default object wave is divided by reference wave.
- Raises:
NotImplementedError
If the signal axes are non-uniform axes.
Examples
>>> import holospy as holo >>> s = holo.data.Fe_needle_hologram() >>> sb_position = s.estimate_sideband_position() >>> sb_size = s.estimate_sideband_size(sb_position) >>> wave = s.reconstruct_phase(sb_position=sb_position, sb_size=sb_size)
- set_microscope_parameters(beam_energy=None, biprism_voltage=None, tilt_stage=None)#
Set the microscope parameters.
If no arguments are given, raises an interactive mode to fill the values.
- Parameters:
Examples
>>> s.set_microscope_parameters(beam_energy=300.) >>> print('Now set to %s keV' % >>> s.metadata.Acquisition_instrument. >>> TEM.beam_energy)
Now set to 300.0 keV
- statistics(sb_position=None, sb='lower', high_cf=False, fringe_contrast_algorithm='statistical', apodization='hanning', single_values=True, show_progressbar=False, num_workers=None)#
Calculates following statistics for off-axis electron holograms:
1. Fringe contrast using either statistical definition or Fourier space approach (see description of fringe_contrast_algorithm parameter) 2. Fringe sampling (in pixels) 3. Fringe spacing (in calibrated units) 4. Carrier frequency (in calibrated units, radians and 1/px)
- Parameters:
- sb_position
tuple
,hyperspy.api.signals.Signal1D
,None
The sideband position (y, x), referred to the non-shifted FFT. It has to be tuple or to have the same dimensionality as the hologram. If None, sideband is determined automatically from FFT.
- sb
str
,None
Select which sideband is selected. ‘upper’, ‘lower’, ‘left’ or ‘right’.
- high_cfbool, optional
If False, the highest carrier frequency allowed for the sideband location is equal to half of the Nyquist frequency (Default: False).
- fringe_contrast_algorithm
str
Select fringe contrast algorithm between:
'fourier'
: fringe contrast is estimated as 2 * <I(k_0)> / <I(0)>, where I(k_0) is intensity of sideband and I(0) is the intensity of central band (FFT origin). This method delivers also reasonable estimation if the interference pattern do not cover full field of view.'statistical'
: fringe contrast is estimated by dividing the standard deviation by the mean of the hologram intensity in real space. This algorithm relies on regularly spaced fringes and covering the entire field of view.
(Default: ‘statistical’)
- apodization
str
orNone
, optional Used with
fringe_contrast_algorithm='fourier'
. If'hanning'
or'hamming'
apodization window will be applied in real space before FFT for estimation of fringe contrast. Apodization is typically needed to suppress striking due to sharp edges of the image, which often results in underestimation of the fringe contrast. (Default: ‘hanning’)- single_valuesbool, optional
If True calculates statistics only for the first navigation pixels and returns the values as single floats (Default: True)
- show_progressbar
None
or bool If
True
, display a progress bar. IfNone
, the default from the preferences settings is used.- num_workers
None
orint
Number of worker used by dask. If None, default to dask default value.
- sb_position
- Returns:
dict
Dictionary with the statistics
- Raises:
NotImplementedError
If the signal axes are non-uniform axes.
Examples
>>> import holospy as holo >>> s = holo.data.Fe_needle_reference_hologram() >>> sb_position = s.estimate_sideband_position(high_cf=True) >>> s.statistics(sb_position=sb_position) {'Fringe spacing (nm)': 3.4860442674236256, 'Carrier frequency (1/px)': 0.26383819985575441, 'Carrier frequency (mrad)': 0.56475154609203482, 'Fringe contrast': 0.071298357213623778, 'Fringe sampling (px)': 3.7902017241882331, 'Carrier frequency (1 / nm)': 0.28685808994016415}
- class holospy.signals.LazyHologramImage(*args, **kwargs)#
Bases:
LazySignal
,HologramImage
Lazy signal class for holograms acquired via off-axis electron holography.
The computation is delayed until explicitly requested.
This class is not expected to be instantiated directly, instead use:
>>> data = da.ones((10, 10)) >>> s = holospy.signals.HologramImage(data).as_lazy()
Create a signal instance.
- Parameters:
- data
numpy.ndarray
The signal data. It can be an array of any dimensions.
- axes[dict/axes], optional
List of either dictionaries or axes objects to define the axes (see the documentation of the
AxesManager
class for more details).- attributes
dict
, optional A dictionary whose items are stored as attributes.
- metadata
dict
, optional A dictionary containing a set of parameters that will to stores in the
metadata
attribute. Some parameters might be mandatory in some cases.- original_metadata
dict
, optional A dictionary containing a set of parameters that will to stores in the
original_metadata
attribute. It typically contains all the parameters that has been imported from the original data file.- raggedbool or
None
, optional Define whether the signal is ragged or not. Overwrite the
ragged
value in theattributes
dictionary. If None, it does nothing. Default is None.
- data