Source code for nanite.read

import pathlib

import afmformats


[docs]def get_data_paths(path): """Obtain a list of data files Parameters ---------- path: str or pathlib.Path Path to a data file or a directory containing data files. Returns ------- paths: list of pathlib.Path All supported data files found in `path`. If `path` is a file, `[pathlib.Path(path)]` is returned. If `path` has an unsupported extion, an empty list is returned. """ path = pathlib.Path(path) paths = [] if path.is_dir(): # recurse into directories for ext in afmformats.supported_extensions: paths += sorted(path.rglob("*{}".format(ext))) elif path.suffix in afmformats.supported_extensions: paths = [path] return sorted(paths)
[docs]def get_data_paths_enum(path, skip_errors=False): paths = get_data_paths(path) 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 load_data(path, callback=None): """Load data and return list of :class:`afmformats.AFMForceDistance`""" paths = get_data_paths(path) data = [] for pp in paths: measurements = afmformats.load_data(pp, callback=callback) for dd in measurements: if dd.mode == "force-distance": data.append(dd) return data