Read/write 1d spectrum from/to fits file

The routines read1dFitsSpec() and write1dFitsSpec() provide simple interfaces for reading and writing one-dimensional fits spectra with pyfits (astropy.io.fits).

Reading fits spectrum

PyAstronomy.pyasl.read1dFitsSpec(fn, hdu=0, fullout=False, CRPIX1=None, keymap={})

Read a simple 1d spectrum from fits file.

Reads a 1d-spectrum from a file and constructs the associated wavelength axis. To this end, the expression: wvl = ((np.arange(N) + 1.0) - CRPIX1) * CDELT1 + CRVAL1 will be evaluated, where N is the number of bins and CRPIX1, CDELT1, and CRVAL1 are header keywords.

Parameters
fnstring

Filename

hduint, optional

The number of the HDU to be used. The default is 0, i.e., the primary HDU.

fulloutboolean, optional

If True, the header keywords used to construct the wavelength axis will be returned. The default is False.

CRPIX1int, optional

Can be used to circumvent missing CRPIX1 entry.

keymapdict, optional

Can be used to map header keywords

Returns
wvlarray

The wavelength array.

flxarray

The flux array.

Examples

from PyAstronomy import pyasl
wvl, flx = pyasl.read1dFitsSpec("mySpectrum.fits")

Writing fits spectrum

PyAstronomy.pyasl.write1dFitsSpec(fn, flux, wvl=None, waveParams=None, fluxErr=None, header=None, clobber=False, refFileName=None, refFileExt=0)

Write a 1d spectrum with equidistant binning to a fits file.

Write a 1d-spectrum to a file. Wavelength axis and header keywords are related through the following expression: wvl = ((np.arange(N) + 1.0) - CRPIX1) * CDELT1 + CRVAL1, where CRPIX1, CDELT1, and CRVAL1 are the relevant header keywords.

The function allows to specify an existing fits extension, from which the header will be cloned. Alternatively, an arbitrary, user-defined header may be given.

Parameters
fnstring

Filename

fluxarray

Flux array

wvlarray, optional

Wavelength array. Either the wavelength array or the header keywords have to be provided (see waveParams).

waveParamsdict, optional

Wavelength information required in the fits-header. Required keys are CDELT, CRVAL, CRPIX or (CDELT1, CRVAL1, CRPIX1).

fluxErrarray, optional

Flux errors. If given, the error will be stored in an additional extension.

headerdict, optional

Dictionary with header information to be transfered to the new file. Note that the wavelength information will be overwritten by the information given to this routine. If both, a reference file to clone the header from and the header parameters are given, the cloned header from the reference file will be overwritten and extended by the keywords specified here.

refFileNamestring, optional

Clone header keywords from a reference file. Note that the wavelength information will be overwritten by the information by the information given to this routine.

refFileExtint, optional

Reference-file extension to be used for cloning the header keywords. The default is 0.

Example of usage

import numpy as np
from PyAstronomy import pyasl

# Generate a "spectrum"
wvl = np.arange(5000., 5010., 0.01)
flux = np.random.normal(1.0, 0.01, wvl.size)

# Write spectrum providing wavelength array
pyasl.write1dFitsSpec("test1.fits", flux, wvl=wvl, clobber=True)

# Write spectrum specifying wavelength-related header keywords
# manually
wp = {"CRVAL1": 5000., "CDELT1": 0.01, "CRPIX1": 1}
pyasl.write1dFitsSpec("test2.fits", flux, waveParams=wp, clobber=True)