hyperspy.io_plugins.emd module

class hyperspy.io_plugins.emd.EMD(signals=None, user=None, microscope=None, sample=None, comments=None)

Bases: object

Class for storing electron microscopy datasets.

The EMD class can hold an arbitrary amount of datasets in the signals dictionary. These are saved as HyperSpy Signal instances. Global metadata are saved in four dictionaries (user, microscope, sample, comments). To print relevant information about the EMD instance use the log_info() function. EMD instances can be loaded from and saved to emd-files, an hdf5 standard developed at Lawrence Berkeley National Lab (https://emdatasets.com/).

signals

Dictionary which contains all datasets as Signal instances.

Type:

dictionary

user

Dictionary which contains user related metadata.

Type:

dictionary

microscope

Dictionary which contains microscope related metadata.

Type:

dictionary

sample

Dictionary which contains sample related metadata.

Type:

dictionary

comments

Dictionary which contains additional commentary metadata.

Type:

dictionary

add_signal(signal, name=None, metadata=None)

Add a HyperSpy signal to the EMD instance and make sure all metadata is present.

Parameters:
  • signal (Signal) – HyperSpy signal which should be added to the EMD instance.

  • name (string, optional) – Name of the (used as a key for the signals dictionary). If not specified, signal.metadata.General.title will be used. If this is an empty string, both name and signal title are set to ‘dataset’ per default. If specified, name overwrites the signal title.

  • metadata (dictionary) – Dictionary which holds signal specific metadata which will be added to the signal.

Return type:

None

Notes

This is the preferred way to add signals to the EMD instance. Directly adding to the signals dictionary is possible but does not make sure all metadata are correct. This method is also called in the standard constructor on all entries in the signals dictionary!

classmethod load_from_emd(filename, lazy=False, dataset_name=None)

Construct EMD object from an emd-file.

Parameters:
  • filename (str) – The name of the emd-file from which to load the signals. Standard file extesnion is ‘.emd’.

  • False (bool, optional) – If False (default) loads data to memory. If True, enables loading only if requested.

  • dataset_name (str or iterable, optional) – Only add dataset with specific name. Note, this has to be the full group path in the file. For example ‘/experimental/science_data’. If the dataset is not found, an IOError with the possible datasets will be raised. Several names can be specified in the form of a list.

Returns:

emd – A EMD object containing the loaded signals.

Return type:

EMD

log_info()

( all relevant information about the EMD instance.

save_to_emd(filename='datacollection.emd')

Save EMD data in a file with emd(hdf5)-format.

Parameters:

filename (string, optional) – The name of the emd-file in which to store the signals. The default is ‘datacollection.emd’.

Return type:

None

class hyperspy.io_plugins.emd.EMD_NCEM

Bases: object

Class for reading and writing the Berkeley variant of the electron microscopy datasets (EMD) file format. It reads files EMD NCEM, including files generated by the prismatic software.

dictionaries

List of dictionaries which are passed to the file_reader.

Type:

list

static _get_emd_group_type(group)

Return the value of the ‘emd_group_type’ attribute if it exist, otherwise returns False

static _parse_axis(axis_data)

Estimate, offset, scale from a 1D array

static _read_dataset(dataset)

Read dataset and use the h5py AsStrWrapper when the dataset is of string type (h5py 3.0 and newer)

_read_emd_version(group)

Return the group version if the group is an EMD group, otherwise return None.

classmethod find_dataset_paths(file, supported_dataset=True)

Find the paths of all groups containing valid EMD data.

Parameters:
  • file (hdf5 file handle) –

  • supported_dataset (bool, optional) – If True (default), returns the paths of all supported datasets, otherwise returns the path of the non-supported other dataset. This is relevant for groups containing auxiliary dataset(s) which are not supported by HyperSpy or described in the EMD NCEM dataset specification.

Returns:

datasets – List of path to these group.

Return type:

list

read_file(file, lazy=None, dataset_path=None, stack_group=None)

Read the data from an emd file

Parameters:
  • file (file handle) – Handle of the file to read the data from.

  • lazy (bool, optional) – Load the data lazily. The default is False.

  • dataset_path (None, str or list of str) – Path of the dataset. If None, load all supported datasets, otherwise the specified dataset. The default is None.

  • stack_group (bool, optional) – Stack datasets of groups with common name. Relevant for emd file version >= 0.5 where groups can be named ‘group0000’, ‘group0001’, etc.

write_file(file, signal, **kwargs)

Write signal to file.

Parameters:
  • file (str of h5py file handle) – If str, filename of the file to write, otherwise a h5py file handle

  • signal (instance of hyperspy signal) – The signal to save.

  • **kwargs (dict) – Keyword argument are passed to the h5py.Group.create_dataset method.

class hyperspy.io_plugins.emd.FeiEMDReader(filename=None, select_type=None, first_frame=0, last_frame=None, sum_frames=True, sum_EDS_detectors=True, rebin_energy=1, SI_dtype=None, load_SI_image_stack=False, lazy=False)

Bases: object

Class for reading FEI electron microscopy datasets.

The FeiEMDReader reads EMD files saved by the FEI Velox software package.

dictionaries

List of dictionaries which are passed to the file_reader.

Type:

list

im_type

String specifying whether the data is an image, spectrum or spectrum image.

Type:

string

_read_image(image_group, image_sub_group_key)

Return a dictionary ready to parse of return to io module

class hyperspy.io_plugins.emd.FeiSpectrumStream(stream_group, reader)

Bases: object

Read spectrum image stored in FEI’s stream format

Once initialized, the instance of this class supports numpy style indexing and slicing of the data stored in the stream format.

stream_to_array(stream_data, spectrum_image=None)

Convert stream to array.

Parameters:
  • stream_data (array) –

  • spectrum_image (array or None) – If array, the data from the stream are added to the array. Otherwise it creates a new array and returns it.

stream_to_sparse_array(stream_data)

Convert stream in sparse array

Parameters:

stream_data (array) –

hyperspy.io_plugins.emd.file_reader(filename, lazy=False, **kwds)

Read EMD file, which can be a NCEM or a Velox variant of the EMD format.

Parameters:
  • filename (str) – Filename of the file to write.

  • lazy (bool) – Open the data lazily. Default is False.

  • **kwds (dict) – Keyword argument pass to the EMD NCEM or EMD Velox reader. See user guide or the docstring of the load function for more information.

hyperspy.io_plugins.emd.file_writer(filename, signal, **kwds)

Write signal to EMD NCEM file.

Parameters:
  • file (str of h5py file handle) – If str, filename of the file to write, otherwise a h5py file handle

  • signal (instance of hyperspy signal) – The signal to save.

  • **kwargs (dict) – Dictionary containing metadata which will be written as attribute of the root group.

hyperspy.io_plugins.emd.is_EMD_NCEM(file)
Parameters:

file (h5py file handle) – DESCRIPTION.

Returns:

DESCRIPTION.

Return type:

bool

hyperspy.io_plugins.emd.is_EMD_Velox(file)

Function to check if the EMD file is an Velox file.

Parameters:

file (string or HDF5 file handle) – The name of the emd-file from which to load the signals. Standard file extension is ‘emd’.

Return type:

True if the file is a Velox file, otherwise False

hyperspy.io_plugins.emd.read_emd_version(group)

Function to read the emd file version from a group. The EMD version is saved in the attributes ‘version_major’ and ‘version_minor’.

Parameters:

group (hdf5 group) – The group to extract the version from.

Returns:

file version – Empty string if the file version is not defined in this group

Return type:

str