Source code for spym.io.load

import os
from . import rhksm4, omicronscala

[docs] def load(filename, scaling=True): ''' Import data from common SPM file formats. Currently supported file formats are: * NeXus (.nx, .nxs). Package nxarray is needed. * RHK (.sm4). * Omicron Scala (.par). Args: filename: path to the SPM file. scaling: if True convert data to physical units (default), if False keep raw data. Returns: xarray Dataset with data and metadata. ''' if filename.endswith(".nx") or filename.endswith(".NX") or filename.endswith(".nxs") or filename.endswith(".NXS"): try: import nxarray except ImportError: print("Error: nxarray package is needed to open .nx/.nxs files.") return None try: ds = nxarray.load(filename) except: print("Error: the file does not appear to be valid.") return None if filename.endswith(".par") or filename.endswith(".PAR"): try: ds = omicronscala.to_dataset(filename, scaling=scaling) except: print("Error: the file does not appear to be valid.") return None if filename.endswith(".sm4") or filename.endswith(".SM4"): try: ds = rhksm4.to_dataset(filename, scaling=scaling) except: print("Error: the file does not appear to be valid.") return None for dr in ds: ds[dr].attrs["filename"] = os.path.basename(filename) return ds
[docs] def convert(filename, folder=None): ''' Convert data from supported SPM file formats to NeXus/HDF5. Args: filename: path to the SPM file. folder: (optional) path for converted files. If not provided, converted files are placed in the same folder of the originals. Returns: Nothing. ''' ds = load(filename, scaling=False) try: import nxarray filename = os.path.splitext(filename)[0] if folder: path = os.path.join(folder, os.path.basename(filename)) else: path = filename ds.nxr.save(path) except ImportError: print("Error: nxarray package is needed to convert files.")