imars3d.backend.dataio package
data handling module for iMars3D.
Submodules
imars3d.backend.dataio.config module
Configuration file handler for the imars3d.
imars3d.backend.dataio.data module
Data handling for iMars3D.
- class imars3d.backend.dataio.data.Foldernames(self, default=<Undefined>, *, search_paths=<Undefined>, check_exists=<Undefined>, **params)[source]
Bases:
Foldername
Parameter that can be set to a string specifying the path of a folder, or a list of such strings.
The string(s) should be specified in UNIX style, but they will be returned in the format of the user’s operating system.
The specified path(s) can be absolute, or relative to either:
any of the paths specified in the search_paths attribute (if search_paths is not None);
or
any of the paths searched by resolve_dir_path() (if search_paths is None).
- imars3d.backend.dataio.data.extract_rotation_angle_from_filename(filename: str) float | None [source]
Extract rotation angle in degrees from filename.
- Parameters:
filename – Filename to extract rotation angle from.
- Returns:
Rotation angle in degrees if successfully extracted, None otherwise.
- Return type:
rotation_angle
- imars3d.backend.dataio.data.extract_rotation_angle_from_tiff_metadata(filename: str, metadata_idx: int = 65039) float | None [source]
Extract rotation angle in degrees from metadata of a tiff file.
- Parameters:
filename – Filename to extract rotation angle from.
metadata_idx – Index of metadata to extract rotation angle from, default is 65039.
- Returns:
Rotation angle in degrees if successfully extracted, None otherwise.
- Return type:
rotation_angle
- class imars3d.backend.dataio.data.load_data(*, ct_dir, ct_files, ct_fnmatch, dc_dir, dc_files, dc_fnmatch, max_workers, ob_dir, ob_files, ob_fnmatch, tqdm_class, name)[source]
Bases:
ParameterizedFunction
Load data with given input.
- Parameters:
ct_files (List[str]) – explicit list of radiographs (full path)
ob_files (List[str]) – explicit list of open beams (full path)
dc_files (Optional[List[str]]) – explicit list of dark current (full path)
ct_dir (str, Path) – directory contains radiographs
ob_dir (Union[str, Path, List[str, Path]]) – directory, or list of directories, containing open beams
dc_dir (Optional[Union[str, Path, List[str, Path]]]) – directory , or list of directories, containing dark current
ct_fnmatch (Optional[str]) – Unix shells-style wild card (
*.tiff
) for selecting radiographsob_fnmatch (Optional[str]) – Unix shells-style wild card (
*.tiff
) for selecting open beamsdc_fnmatch (Optional[str]) – Unix shells-style wild card (
*.tiff
) for selecting dark currentmax_workers (Optional[int]) – maximum number of processes allowed during loading, default to use a single core.
tqdm_class (panel.widgets.Tqdm) – Class to be used for rendering tqdm progress
- Return type:
radiograph stacks, obs, dcs and rotation angles as numpy.ndarray
Notes
There are three main signatures to load the data: 1. load_data(ct_files=ctfs, ob_files=obfs, dc_files=dcfs) 2. load_data(ct_dir=ctdir, ob_dir=obdir, dc_dir=dcdir) 3. load_data(ct_dir=ctdir, ob_files=obfs, dc_files=dcfs)
In all signatures dc_files and dc_dir are optional
The fnmatch selectors are applicable in all signature, which help to down-select files if needed. Default is set to “*”, which selects everything. Also, if ob_fnmatch and dc_fnmatch are set to “None” in the second signature call, the data loader will attempt to read the metadata embedded in the first ct file to find obs and dcs with similar metadata.
Currently, we are using a forgiving reader to load the image where a corrupted file will not block reading other data.
The rotation angles are extracted from the filenames if possible, otherwise from the metadata embedded in the tiff files. If both failed, the angle will be set to None.
- class imars3d.backend.dataio.data.save_checkpoint(*, data, outputbase, rot_angles, name)[source]
Bases:
ParameterizedFunction
Save current state to checkpoint in a datetime stamped directory name.
The filenames will be
<outputbase>/<name>_chkpt_YYYYMMDDhhmm/<name>_####.tiff
where a canonicaloutputbase
is/HFIR/CG1D/IPTS-23788/shared/processed_data/
.- Parameters:
data (Array) – array of data to save
outputbase (Path) – The parent directory of where to save the output on disk.
param.Foldername
will warn if the directory does not already exist.name (str) – Used to name file of output, defaults to output_{datetime}
rot_angles (Array) – Optional for writing out the array of rotational (omega) angles
- Return type:
The directory the files were actually saved in
- rot_angles = None
- class imars3d.backend.dataio.data.save_data(*, data, outputbase, rot_angles, name)[source]
Bases:
ParameterizedFunction
Save data with given input.
The filenames will be
<outputbase>/<name>_YYYYMMDDhhmm/<name>_####.tiff
where a canonicaloutputbase
is/HFIR/CG1D/IPTS-23788/shared/processed_data/
.- Parameters:
data (Array) – array of data to save
outputbase (Path) – where to save the output on disk.
param.Foldername
will warn if the directory does not already exist.name (str) – Used to name file of output, defaults to
save_data
rot_angles (Array) – Optional for writing out the array of rotational (omega) angles
- Return type:
The directory the files were actually saved in
- rot_angles = None
imars3d.backend.dataio.phantom module
Provides synthetic data set for demonstration and testing purposes.