SpectralLine Class

Notebooks

Overview

This Class is designed to organize and analyze an spectral line, either emission or absorption. This is an abstract base class, i.e. one must instantiate one of its subclasses (e.g. AbsLine).

Sub Classes

The primary children of SpectralLine are AbsLine Class and EmissionLine (to be implemented). See their documentation for a description of instantiation and additional attributes.

Attributes

The base attributes for the SpectralLine class are:

Property Variable Type Description
Limits limits LineLimits The redshift and limits of the line in redshift, velocity (w/r to its redshift) and observed wavelength.
RA, Dec attrib[‘coord’] Coord astropy.coordinate
Velocity attrib[‘v’] Quantity line velocity relative to its redshift
Velocity sigma attrib[‘sig_v’] Quantity 1 sigma uncertainty in the velocity
Equivalent Width attrib[‘EW’] Quantity Equivalent width
EW sigma attrib[‘sig_EW’] Quantity 1 sigma uncertainty in EW
EW flag attrib[‘flag_EW’] int Equivalent width flag

Note that redshift is sufficiently important that it is contained within its own object. It is also accessible as a property, e.g.:

z = sline.z

Analysis

It is common that one wishes to associate a line with a spectrum to perform a range of analyses. This is accomplished through:

spline.analy['spec'] = sp

where sp is an XSpectrum1D Class object.

Methods

cut_spec

Provide a spectrum has been associated to the line (see Analysis): then this method returns the portion of the spectrum surrounding the line. The limits are specified in the LineLimits class held in the attribute limits, usually either with observed wavelengths or velocities relative to the line’s redshift. The code returns the flux, error array, and a dict containing the wavelength and velocity arrays.

spline.limits.set([-300., 300.]*u.km/u.s) # vlim
fx, sig, wv_dict = spline.cut_spec()

ismatch

Check whether two Lines are equal rest wavelength (to 1e-6 AA), whether they have common RA/DEC to 0.1” (if provided), and whether they are from the same ion:

print specline.ismatch(another_line)

measure_ew

Measure the observed Equivalent width for a SpectralLine. Following absorption-line convention, absorption will have a positive value and emission will have a negative value.

To perform the calculation, the line must be associated to a spectrum (see Analysis above) and the LineLimits of the line must have previously been specified.

When executed, the EW and sig_EW attibutes are filled:

specline.measure_ew()
print(specline.attrib['EW'])

measure_kin

Measure kinematic characteristics of an AbsLine. To perform the calculation, the line must be associated to a spectrum (see Analysis) and vlim must be specified. When executed, the ‘kin’ attribute is filled with a dict of measurements. Default set of measurements are the v90, fedg, and fmm statistics of Prochaska & Wolfe 1997:

specline.measure_kin()

measure_restew

Measure the rest-frame Equivalent width of a SpectralLine. See measure_ew for other details.

to_dict

Convert the Class to a JSON-friendly dict that might be easily written to the disk, e.g.:

adict = specline.to_dict()
with io.open(outfil, 'w', encoding='utf-8') as f:
   f.write(unicode(json.dumps(tdict, sort_keys=True,
      indent=4, separators=(',', ': '))))

Utilities

There are several utilites related to spectral lines. These are located in the line_utils module.

parse_speclines

Given a list of SpectralLines and desired property (key), this method returns a list or array of the values.:

from linetools import line_utils
array_of_values = line_utils.parse_speclines(list_of_speclines, mk_array=True)

transtable_from_speclines

Given a list of SpectralLines, this method returns a Table of a subset of the properties (e.g. wavelength, name, EW).:

trans_tbl = line_utils.transtable_from_speclines(list_of_speclines)