Single Side Band
- class ptychography40.reconstruction.ssb.SSB_UDF(lamb, dpix, semiconv, semiconv_pix, dtype=<class 'numpy.float32'>, cy=None, cx=None, transformation=None, cutoff=1, method='subpix', mask_container=None)[source]
UDF to perform ptychography using the single side band (SSB) method [PLY+15].
- __init__(lamb, dpix, semiconv, semiconv_pix, dtype=<class 'numpy.float32'>, cy=None, cx=None, transformation=None, cutoff=1, method='subpix', mask_container=None)[source]
- Parameters:
lamb (float) – The illumination wavelength in m. The function
ptychography40.common.wavelength()
allows to calculate the electron wavelength as a function of acceleration voltage.dpix (float or Iterable(y, x)) – STEM pixel size in m
semiconv (float) – STEM semiconvergence angle in radians
dtype (np.dtype) – dtype to perform the calculation in
semiconv_pix (float) – Diameter of the primary beam in the diffraction pattern in pixels
cy (float, optional) – Position of the optical axis on the detector in px, center of illumination. Default: Center of the detector
cx (float, optional) – Position of the optical axis on the detector in px, center of illumination. Default: Center of the detector
transformation (numpy.ndarray() of shape (2, 2) or None) – Transformation matrix to apply to shift vectors. This allows to adjust for scan rotation and mismatch of detector coordinate system handedness, such as flipped y axis for MIB.
cutoff (int) – Minimum number of pixels in a trotter
method ('subpix' or 'shift') – Method to use for generating the mask stack
mask_container (MaskContainer) – Allows to pass in a precomputed mask stack when using with single thread live data or with an inline executor as a work-around. The number of masks is sanity-checked to match the other parameters. The proper fix is https://github.com/LiberTEM/LiberTEM/issues/335
- ptychography40.reconstruction.ssb.generate_masks(reconstruct_shape, mask_shape, dtype, lamb, dpix, semiconv, semiconv_pix, transformation=None, cy=None, cx=None, cutoff=1, cutoff_freq=np.float32(inf), method='subpix')[source]
Generate the trotter mask stack.
The y dimension is trimmed to size(y)//2 + 1 to exploit the inherent symmetry of the mask stack.
- Parameters:
reconstruct_shape (tuple(int)) – Shape of the reconstructed area
dtype (numpy dtype) – dtype to use for the mask stack
lamb (float) – Wavelength of the illuminating radiation in m
dpix (float or (float, float)) – Scan step in m. Tuple (y, x) in case scan step is different in x and y direction.
semiconv (float) – Semiconvergence angle of the illumination in radians
semiconv_pix (float) – Semiconvergence angle in measured in detector pixel, i.e. radius of the zero order disk.
transformation (numpy.ndarray, optional) – Matrix for affine transformation from the scan coordinate directions to the detector coordinate directions. This does not include the scale, which is handled by dpix, lamb, semiconv and semiconv_pix. It should only be used to rotate and flip the coordinate system as necessary. See also https://github.com/LiberTEM/LiberTEM/blob/master/src/libertem/corrections/coordinates.py
cy (float, optional) – Position of the optical axis on the detector in px, center of illumination. Default: Center of the detector
cx (float, optional) – Position of the optical axis on the detector in px, center of illumination. Default: Center of the detector
cutoff (int, optional) – Minimum number of pixels in the positive and negative trotter. This can be used to purge very small trotters to reduce noise. Default is 1, i.e. no cutoff unless one trotter is empty.
cutoff_freq (float) – Trotters belonging to a spatial frequency higher than this value in reciprocal pixel coordinates will be cut off.
method (str, optional) – Can be
'subpix'`(default) or :code:
’shift’` to switch betweenmask_pair_subpix()
andmask_pair_shift()
to generate a trotter pair.
- Returns:
masks – Masks in sparse.pydata.org COO format. y and x frequency index are FFT shifted, i.e. the zero frequency is at (0,0) and negative frequencies are in the far quadrant and reversed. The y frequency index is cut in half with size(y)//2 + 1 to exploit the inherent symmetry of a real-valued Fourier transform. The y and x index are then flattened to make it suitable for using it with MaskContainer.
- Return type:
sparse.COO