Source code for pyspex.ascdump

#!/usr/bin/env python

from . import pyspex_f2py
import numpy
from astropy.table import QTable, Column
import astropy.units as u


[docs]class Ascdump: """Generic ascdump interface to retreive ascdump output tables and return an Astropy table. :ivar table: Output table. :vartype table: astropy.table.QTable """ def __init__(self): self.table = QTable()
[docs] def get(self, isect, icomp, atype): """Run and get the ascdump output for a certain ascdump type (atype) for a model component defined by its sector number (isect) and component number (icomp). :param isect: Sector number of the component. :type isect: int :param icomp: Component number. :type icomp: int :param atype: Ascdump type (see :ref:`sec:ascdump` for more information). :type atype: str """ ier = pyspex_f2py.api_ascdump.asc_run(isect, icomp, atype) if ier == 0: nrows = pyspex_f2py.api_ascdump.asc_nuse for i in numpy.arange(pyspex_f2py.api_ascdump.asc_nv): ier = pyspex_f2py.api_ascdump.asc_get_col(i+1) datatype = int(pyspex_f2py.api_ascdump.asc_type) name = str(pyspex_f2py.api_ascdump.asc_name.astype('U32')).strip() acro = str(pyspex_f2py.api_ascdump.asc_acro.astype('U4')).strip() unit = str(pyspex_f2py.api_ascdump.asc_units.astype('U16')).strip() form = int(pyspex_f2py.api_ascdump.asc_na.astype(int)) format = '' if datatype == 1: data = pyspex_f2py.api_ascdump.asc_la.astype(bool) elif datatype == 3: data = pyspex_f2py.api_ascdump.asc_ia.astype(int) elif datatype == 4: data = pyspex_f2py.api_ascdump.asc_ra.astype(float) format = '0.0'+str(form)+'E' elif datatype == 8: data = pyspex_f2py.api_ascdump.asc_da.astype(float) format = '0.0'+str(form)+'E' elif datatype == 9: format = '' stype = 'U'+str(form) data = numpy.zeros(nrows, dtype=stype) for j in numpy.arange(nrows): bytestring = pyspex_f2py.api_ascdump.asc_get_char(i+1, j+1) data[j] = str(bytestring.decode('utf-8')).strip() else: print('Error: Data type of column unknown.') ier = 1 return ier if unit != '': col = Column(data, name=acro, description=name, unit=unit, format=format) else: col = Column(data, name=acro, description=name, format=format) self.table.add_column(col) pyspex_f2py.api_ascdump.asc_final() return ier