stempy.io package¶
Submodules¶
stempy.io.sparse_array module¶
-
exception
stempy.io.sparse_array.FullExpansionDenied¶ Bases:
Exception
-
class
stempy.io.sparse_array.SparseArray(data, scan_shape, frame_shape, dtype=numpy.uint32, sparse_slicing=True, allow_full_expand=False, metadata=None)¶ Bases:
objectUtility class for analyzing sparse electron counted data
This implements functions performed directly on the sparse data including binning scans/frames, and min/max/sum/mean operations for certain axes.
Standard slicing notation is also supported, including start, stop, and stride. Slicing returns either a new sparse array or a dense array depending on the user-defined settings.
-
VERSION= 3¶
-
bin_frames(bin_factor, in_place=False)¶ Perform a binning on the frame dimensions
This will sum frame values together to reduce the frame dimensions. The frame dimensions are the last 2 dimensions.
- Parameters
bin_factor (int) – the factor to use for binning
in_place (bool) – whether to modify the current SparseArray or create and return a new one.
- Returns
self if in_place is True, otherwise a new SparseArray
- Return type
-
bin_scans(bin_factor, in_place=False)¶ Perform a binning on the scan dimensions
This will sum sparse frames together to reduce the scan dimensions. The scan dimensions are the first 1 or 2 dimension.
- Parameters
bin_factor (int) – the factor to use for binning
in_place (bool) – whether to modify the current SparseArray or create and return a new one.
- Returns
self if in_place is True, otherwise a new SparseArray
- Return type
-
property
frame_axes¶ Get the axes for the frame positions
- Returns
the axes for the frame positions
- Return type
tuple(int)
-
classmethod
from_hdf5(filepath, **init_kwargs)¶ Create a SparseArray from a stempy HDF5 file
- Parameters
filepath (str) – the path to the HDF5 file
init_kwargs (dict) – any kwargs to forward to SparseArray.__init__()
- Returns
the generated sparse array
- Return type
-
max(axis=None, dtype=None, **kwargs)¶ Return the maximum along a given axis.
For specialized axes, a quick, optimized max will be performed using the sparse data. For non specialized axes, a full expansion will be performed and then the max taken of that.
Current specialized axes are: 1. (0,) for 3D shape 2. (0, 1) for 4D shape
- Parameters
axis (int or tuple) – the axis along which to perform the max
dtype (np.dtype) – the type of array to create and return. Defaults to self.dtype.
kwargs (dict) – any kwargs to pass to a non specialized axes operation
- Returns
the result of the max
- Return type
np.ndarray
-
mean(axis=None, dtype=None, **kwargs)¶ Return the mean along a given axis.
For specialized axes, a quick, optimized mean will be performed using the sparse data. For non specialized axes, a full expansion will be performed and then the mean taken of that.
Current specialized axes are: 1. (0,) for 3D shape 2. (0, 1) for 4D shape
- Parameters
axis (int or tuple) – the axis along which to perform the mean
dtype (np.dtype) – the type of array to create and return. Defaults to np.float32.
kwargs (dict) – any kwargs to pass to a non specialized axes operation
- Returns
the result of the mean
- Return type
np.ndarray
-
min(axis=None, dtype=None, **kwargs)¶ Return the minimum along a given axis.
For specialized axes, a quick, optimized min will be performed using the sparse data. For non specialized axes, a full expansion will be performed and then the min taken of that.
Current specialized axes are: 1. (0,) for 3D shape 2. (0, 1) for 4D shape
- Parameters
axis (int or tuple) – the axis along which to perform the min
dtype (np.dtype) – the type of array to create and return. Defaults to self.dtype.
kwargs (dict) – any kwargs to pass to a non specialized axes operation
- Returns
the result of the min
- Return type
np.ndarray
-
property
ndim¶ The number of dimensions of the data
This is equal to len(scan shape + frame shape)
- Returns
the number of dimensions of the data
- Return type
int
-
property
num_frames_per_scan¶ Get the number of frames per scan position
- Returns
the number of frames per scan position
- Return type
int
-
property
num_scans¶ Get the number of scan positions
- Returns
the number of scan positions
- Return type
int
-
ravel_scans()¶ Reshape the SparseArray so the scan shape is flattened
The resulting SparseArray will be 3D, with 1 scan dimension and 2 frame dimensions.
- Returns
self
- Return type
-
reshape(*shape)¶ Set the shape of the data (scan shape + frame shape)
- Parameters
shape (argument list or tuple of length 3 or 4) – the new shape of the data.
- Returns
self
- Return type
-
property
scan_axes¶ Get the axes for the scan positions
- Returns
the axes for the scan positions
- Return type
tuple(int)
-
property
scan_positions¶ Get an array of scan positions for the data
- Returns
the scan positions
- Return type
np.ndarray of int
-
property
shape¶ The full shape of the data (scan shape + frame shape)
- Returns
the full shape of the data
- Return type
tuple of length 3 or 4
-
sum(axis=None, dtype=None, **kwargs)¶ Return the sum along a given axis.
For specialized axes, a quick, optimized sum will be performed using the sparse data. For non specialized axes, a full expansion will be performed and then the sum taken of that.
Current specialized axes are: 1. (0,) for 3D shape 2. (0, 1) for 4D shape
- Parameters
axis (int or tuple) – the axis along which to perform the sum
dtype (np.dtype) – the type of array to create and return. Defaults to self.dtype.
kwargs (dict) – any kwargs to pass to a non specialized axes operation
- Returns
the result of the sum
- Return type
np.ndarray
-
to_dense()¶ Create and return a fully dense version of the sparse array
If the array shape is large, this may cause the system to run out of memory.
This is equivalent to array[:] if allow_full_expand is True and sparse_slicing is False.
- Returns
the fully dense array
- Return type
np.ndarray
-
write_to_hdf5(path)¶ Save the SparseArray to an HDF5 file.
- Parameters
path (str) – path to the HDF5 file.
-
-
stempy.io.sparse_array.load_h5_to_dict(group, d)¶
-
stempy.io.sparse_array.save_dict_to_h5(d, group)¶
Module contents¶
-
class
stempy.io.FileVersion¶ Bases:
object-
VERSION1= 1¶
-
VERSION2= 2¶
-
VERSION3= 3¶
-
VERSION4= 4¶
-
VERSION5= 5¶
-
-
class
stempy.io.Reader¶ Bases:
stempy.io.ReaderMixin,object
-
class
stempy.io.SectorThreadedReader¶ Bases:
stempy.io.ReaderMixin,object
-
stempy.io.load_electron_counts(path)¶ Load electron counted data from an HDF5 file.
- Parameters
path (str) – path to the HDF5 file.
- Returns
a SparseArray containing the electron counted data
- Return type
-
stempy.io.reader(path, version=FileVersion.VERSION1)¶ Create a file reader to read the data.
- Parameters
path (str or h5py file) – either the path to the file or an open h5py file.
version (version from stempy.io.FileVersion) – the version of the file reader to use (unused for h5py files).
- Returns
The reader for the data.
- Return type
stempy.io.Reader, stempy.io.SectorReader, or stempy.io.PyReader
-
stempy.io.save_electron_counts(path, array)¶ Save the electron counted data to an HDF5 file.
- Parameters
path (str) – path to the HDF5 file.
array (SparseArray) – the electron counted data.
-
stempy.io.save_raw_data(path, data, scan_dimensions=None, scan_positions=None, zip_data=False)¶ Save the raw data to an HDF5 file.
- Parameters
path (str) – path to the HDF5 file.
data (numpy.ndarray) – the raw data to save.
scan_dimensions (tuple of ints of length 2) – the dimensions of the scan, where the order is (width, height).
scan_positions (list of ints) – the scan positions of each frame. This is only needed if the frames are not sorted.
zip_data (bool) – whether or not to compress the data with gzip.
-
stempy.io.save_stem_images(outputFile, images, names)¶ Save STEM images to an HDF5 file.
- Parameters
outputFile (str) – path to the HDF5 file.
images (numpy.ndarray) – an array of STEM images.
names (a list of strings) – a list of names for the STEM images, to be saved as attributes. Must be the same length as images.
-
stempy.io.write_hdf5(path, reader, format=SectorReader.H5Format.Frame)¶ Write the data from a SectorReader to an HDF5 file.
- Parameters
path (str) – path to the output HDF5 file.
reader (stempy.io.SectorReader) – a SectorReader that has opened the data.
format (SectorReader.H5Format) – whether to write in frame format or data cube format.