Spec Class
Class to store and manipulate spectra.
- class spookyspec.Spec.Spec(l, f, **kwargs)
Store 1D spectral data
This class was designed to be easy to use, especially to create figures spectra are transformed by appending class methods to the variable. For example, to redshift a spectrum spec by 10 km/s, call spec.dopshift(10) self.show() returns the axes as astropy.Quantity objects.
- Parameters
l (np.array) – wavelength points
f (np.array) – flux points
- Keyword Arguments
u_l (str) – unit of wavelength axis. Should be readable by astropy.units.Unit(). Default ‘Angstrom’
u_f (str) – unit of flux axis. Should be readable by astropy.units.Unit(). Default ‘erg cm-2 s-1 Angstrom-1’
stype (str) – type of information stored. Either ‘data’ or ‘model’. This is important for finding the continuum
'data' (and normalization. Default) –
hdr (astropy.io.fits.header.Header) – Fits header to be stored with the spectrum. Default None
- air()
Vacuum to Air
Convert a spectrum from vacuum to air.
- Parameters
None –
- Returns
Converted spectrum
- Return type
(Spec)
- combine(*others)
Combine
Combine multiple Spec objects to increase snr in a wavelength range that they share
- Parameters
others (list of type Spec) – Spec objects to be combined with self
- Returns
new combined spectrum
- Return type
(Spec)
- continuum(w1, w2, **kwargs)
Continuum
Get a polynomial fit of the continuum.
- Parameters
w1 (float) – starting wavelength to fit in units of self.u_l
w2 (float) – ending wavelength to fit in units of self.u_l
- Keyword Arguments
degree (int) – degree of polynomial to fit
- Returns
flux of the continuum. Shape is same as self.l
- Return type
(np.array)
- dopshift(v)
Doppler Shift
Shift the spectrum by some radial velocity
- Parameters
v (float) – velocity in km/s
- Returns
Doppler shifted spectrum
- Return type
(Spec)
- ew(w1, w2, W1, W2, **kwargs)
Equivalent Width
Get the equivalent width of a region of spectrum.
- Parameters
w1 (float) – starting wavelength of EW region in units of self.u_l
w2 (float) – ending wavelength of EW region in units of self.u_l
W1 (float) – starting wavelength of continuum region in units of self.u_l
W2 (float) – ending wavelength of continuum region in units of self.u_l
- Keyword Arguments
plot (bool) – whether or not to plot the line and region. Default False
- Returns
Equivalent width of the region
- Return type
(astropy.Quantity)
- fnu()
Fnu
Convert from Flambda to Fnu. This function should not allow a spectrum that is already in Fnu to be converted.
- Parameters
None –
- Returns
new spectrum in Fnu
- Return type
(Spec)
- gauss(R=None, sigma=None)
Gauss Convolve to instrument resolutuion with gaussian. May have to convert to evenly spaced x axis for this to work not implemented yet
- Parameters
None –
- Keyword Arguments
R (float) – Resolving power of convolution.
sigma (float) – resolution of convolution in units of self.u_l
- Returns
None – Raises NotImplementedError
- new_units(**kwargs)
Change unit keyword Change the units stored in self.u_l and/or self.u_f. Does not change the arrays that store data. This is for fixing mistakes and other data management actions. To cast your data to another unit, please use astropy.units.to().
- Parameters
None –
- Keyword Arguments
u_l (str) – new unit of wavelength axis. Should be readable by astropy.units.Unit().
u_f (str) – new unit of flux axis. Should be readable by astropy.units.Unit().
- normalize(w1, w2, **kwargs)
Normalize
Normalize a region of the spectrum. Great if comparing a model to uncalibrated echelle spectra.
- Parameters
w1 (float) – starting wavelength to normalize in units of self.u_l
w2 (float) – ending wavelength to normalize in units of self.u_l
- Keyword Arguments
degree (int) – degree of polynomial to fit
- Returns
normalized spectrum
- Return type
(Spec)
- quick_plot(w1, w2)
Plot a simple view
Show the spectrum in a simple non-interactive window. This is good to quickly check your work.
- Parameters
w1 (float) – starting wavelength in units of self.u_l
w2 (float) – ending wavelength in units of self.u_l
- Returns
None
- regions(*wavelengths)
Select Regions
Choose regions of the spectrum to keep, discarding the rest.
- Parameters
wavelength (array-like of type astropy.Quantity) – start-stop points for each region. Must have even length.
- Returns
Spectrum containing only selected regions
- Return type
(Spec)
- resample(lnew)
Resample
Resample the flux at new wavelengths using scipy.interp1d
- Parameters
lnew (np.array) – new wavelength values to sample at in units of self.u_l
- Returns
new resampled spectrum
- Return type
(Spec)
- scale(k)
Scale spectrum
Multiply flux by a scaler, preserving equivalent width.
- Parameters
k (float) – scale factor
- Returns
new spectrum
- Return type
(Spec)
- set_snr(l0, snr0, thrux=None, thruy=None, snr_max=inf)
Set SNR
Add noise to the spectrum to simulate an observation. The signal-to-noise ratio (SNR) is set at a reference wavelength and from there scales with the square root of the flux according to Poisson satistics. Optionally, a description of the instrument throughput can be given and applied to the SNR calculation. This is best when used in conjunction with an exposure time calculator.
- Parameters
l0 (float) – wavelength of the reference SNR in units of self.u_l
snr0 (float) – reference SNR in SNR per pixel. For SNR per resolution element, smooth first (e.g. self.smooth(5) for COS)
- Keyword Arguments
thrux (np.array) – wavelength values of throughput data in self.u_l. Default None
thruy (np.array) – thoughput at each wavelength point in thrux. Only the relative value is important.
snr_max (float) – the maximum SNR achievable with this instrument. e.g. for COS use 45
- Returns
spectrum with noise added
- Return type
(Spec)
- show()
Show spectrum
Return wavelength and flux so spectrum can be plotted or otherwise used
- Parameters
None –
- Returns
wavelengths (astropy.Quantity array-like): fluxes
- Return type
(astropy.Quantity array-like)
- spookyspec.Spec.read(filename, **kwargs)
Read file
Read a spectrum from a fits file or a two-column file
- Parameters
filename (str) – path to the file
- Keyword Arguments
u_l (str) – unit of wavelength axis. Should be readable by astropy.units.Unit(). Default ‘Angstrom’
u_f (str) – unit of flux axis. Should be readable by astropy.units.Unit(). Default ‘erg cm-2 s-1 Angstrom-1’
stype (str) – type of information stored. Either ‘data’ or ‘model’. This is important for finding the continuum
'data' (and normalization. Default) –
col (str) – column of psg file to read. Default ‘Total’
- Returns
Spectrum contained in fits file
- Return type
(Spec)
- spookyspec.Spec.readfits(filename, u_l=Unit('Angstrom'), u_f=Unit('erg / (Angstrom cm2 s)'), stype='data')
Read fits
Read a spectrum from a fits file
- Parameters
filename (str) – path to the file
- Keyword Arguments
u_l (str) – unit of wavelength axis. Should be readable by astropy.units.Unit(). Default ‘Angstrom’
u_f (str) – unit of flux axis. Should be readable by astropy.units.Unit(). Default ‘erg cm-2 s-1 Angstrom-1’
stype (str) – type of information stored. Either ‘data’ or ‘model’. This is important for finding the continuum
'data' (and normalization. Default) –
- Returns
Spectrum contained in fits file
- Return type
(Spec)