Source code for pyspeckit.spectrum.readers.hdf5_reader

"""
==========================
PySpecKit HDF5 Reader
==========================

Routines for reading in spectra from HDF5 files.

Note: Current no routines for parsing HDF5 headers in classes.py.

.. moduleauthor:: Adam Ginsburg <adam.g.ginsburg@gmail.com>
.. moduleauthor:: Jordan Mirocha <mirochaj@gmail.com>
"""
import numpy as np
from .. import units

try:
    import astropy.io.fits as pyfits
except ImportError:
    import pyfits

[docs]def open_hdf5(filename, xaxkey = 'xarr', datakey = 'data', errkey = 'error'): """ This reader expects three datasets to exist in the hdf5 file 'filename': 'xarr', 'data', and 'error', by default. Can specify other dataset names. """ import h5py f = h5py.File(filename, 'r') try: xarr = f[xaxkey].value except KeyError: print('Dataset \'%s\' not found.' % xaxkey) try: data = f[datakey].value except KeyError: print('Dataset \'%s\' not found.' % datakey) try: error = f[errkey].value except KeyError: print('Dataset \'%s\' not found. Assuming uniform errors.' % errkey) error = np.ones_like(data) try: xunits = f[xaxkey].attrs['units'] if xunits == '': xunits = 'unknown' except KeyError: xunits = 'unknown' try: yunits = f[datakey].attrs['units'] if yunits == '': yunits = 'unknown' except KeyError: yunits = 'unknown' try: xtype = f[xaxkey].attrs['type'] if xtype == '': xtype = xaxkey except KeyError: xtype = xaxkey try: ytype = f[datakey].attrs['type'] if ytype == '': ytype = datakey except KeyError: ytype = datakey XAxis = units.SpectroscopicAxis(xarr, xunits) header = {'xunits': xunits, 'xtype': xtype, 'yunits': yunits, 'ytype': ytype} return data, error, XAxis, header