Source code for nanite.read

import warnings

import afmformats
from .indent import Indentation

#: The default imaging modality when loading AFM data. Set this to `None`
#: to also be able to load e.g. creep-compliance data. See issue
#: https://github.com/AFM-analysis/nanite/issues/11 for more
#: information. Note that especially the export of rating containers
#: may not work with any imaging modality other than force-distance.
DEFAULT_MODALITY = "force-distance"


[docs] def get_data_paths(path): """Return list of data paths with force-distance data DEPRECATED """ warnings.warn("`get_data_paths` is deprecated! Please use " + "afmformats.find_data(path, modality='force-distance') " + "instead!", DeprecationWarning) return afmformats.find_data(path, modality=DEFAULT_MODALITY)
[docs] def get_data_paths_enum(path, skip_errors=False): """Return a list with paths and their internal enumeration Parameters ---------- path: str or pathlib.Path or list of str or list of pathlib.Path path to data files or directory containing data files; if directories are given, they are searched recursively skip_errors: bool skip paths that raise errors Returns ------- path_enum: list of lists each entry in the list is a list of [pathlib.Path, int], enumerating all curves in each file """ paths = afmformats.find_data(path, modality=DEFAULT_MODALITY) enumpaths = [] for pp in paths: try: data = load_data(pp) except BaseException: if skip_errors: continue else: raise for dd in data: enumpaths.append([pp, dd.enum]) return enumpaths
[docs] def get_load_data_modality_kwargs(): """Return imaging modality kwargs for afmformats.load_data Uses :const:`DEFAULT_MODALITY`. Returns ------- kwargs: dict keyword arguments for :func:`afmformats.load_data` """ kwargs = { "modality": DEFAULT_MODALITY, "data_classes_by_modality": { "force-distance": Indentation, "creep-compliance": Indentation, "stress-relaxation": Indentation} } return kwargs
[docs] def load_data(path, callback=None, meta_override=None): """Load data and return list of :class:`afmformats.AFMForceDistance` This is essentially a wrapper around :func:`afmformats.formats.find_data` and :func:`afmformats.formats.load_data` that returns force-distance datasets. Parameters ---------- path: str or pathlib.Path or list of str or list of pathlib.Path path to data files or directory containing data files; if directories are given, they are searched recursively callback: callable function for progress tracking; must accept a float in [0, 1] as an argument. meta_override: dict if specified, contains key-value pairs of metadata that are used when loading the files (see :data:`afmformats.meta.META_FIELDS`) """ paths = afmformats.find_data(path, modality=DEFAULT_MODALITY) data = [] for ii, pp in enumerate(paths): measurements = afmformats.load_data( pp, # recurse callback function with None as default callback=lambda x: callback((ii + x) / len(paths)) if callback else None, meta_override=meta_override, **get_load_data_modality_kwargs() ) data += measurements return data