Source code for ncempy.io

from pathlib import Path

from . import dm
from . import ser
from . import emd
from . import mrc
from . import emdVelox
from . import smv
from . import dectris

[docs] def read(filename, dsetNum=0): """ Parameters ---------- filename : str or pathlib.Path The path and name of the file to attempt to load. This chooses the Reader() function based on the file suffix. dsetNum : int The data set number to load if there are multiple data sets in a file. This is implemented for EMD and DM files only. """ out = {} # check filename type if isinstance(filename, str): filename = Path(filename) elif isinstance(filename, Path): pass else: raise TypeError('Filename is supposed to be a string or pathlib.Path') if not filename.exists(): raise FileNotFoundError # ensure lowercase suffix suffix = filename.suffix.lower() if suffix == '.ser': out = ser.serReader(filename) elif suffix in ('.dm3', '.dm4'): out = dm.dmReader(filename) elif suffix in ('.h5', '.hdf5'): try: # Try Berkeley EMD out = emd.emdReader(filename, dsetNum) except emd.NoEmdDataSets: # Try Dectris Arina out = dectris.dectrisReader(filename) except: print('ncempy.read: Unknown H5 file.') raise elif suffix == '.emd': try: # Try Berkeley EMD out = emd.emdReader(filename, dsetNum) except emd.NoEmdDataSets: # Try Velox EMD try: out = emdVelox.emdVeloxReader(filename, dsetNum) except KeyError: print('ncempy.read: Unknown EMD file.') raise elif suffix in ('.mrc', '.rec', '.st', '.ali'): out = mrc.mrcReader(filename) elif suffix in ('.smv', '.img'): out = smv.smvReader(filename) else: print('File suffix {} is not recognized.'.format(suffix)) print('Supported formats are ser, mrc, rec, ali, st, emd, dm3, dm4, smv, img.') return out