CatalogΒΆ

Collections of SED objects can be stored and analyzed in a Catalog object. One can be initialized and populated with an SED object using the add_SED() method.

from sedkit import Catalog, VegaSED
vega = VegaSED()
cat1 = Catalog(name='My New Catalog')
cat1.add_SED(vega)

Catalogs can be merged with the addition operator.

from sedkit import SED
sirius = SED('Sirius', spectral_type='A1V', method_list=['find_2MASS', 'find_WISE'])
cat2 = Catalog('My Second Catalog')
cat2.add_SED(sirius)
cat = cat1 + cat2

To check the table of data and calculated parameters, just call the results` property. The wavelength and flux density units of all the SEDs can be checked and set with the wave_units` and flux_units` properties.

cat.results
import astropy.units as q
cat.wave_units = q.AA
cat.flux_units = q.W / q.m**3

Additional columns of data can be added to the results table with the add_column() method.

rv = np.array([-13.9, -5.5]) * q.km / q.s
rv_unc = np.array([0.9, 0.1]) * q.km / q.s
cat.add_column('radial_velocity', rv, rv_unc)

Data for individual columns (and associated uncertainties when applicable) can be retrieved by passing the desired column names to the get_data() method.

spt_data, plx_data = cat.get_data('spectral_type', 'parallax')

The SED object for a source can be retrieved with the get_SED() method.

vega = cat.get_SED('Vega')

An interactive scatter plot of any two numeric columns can be made by passing the desired x and y parameter names from the results table to the plot() method. Photometric colors can be calculated by passing two photometric band names with a - sign. The order argument accepts an integer and plots a polynomial of the given order. For busy plots, individual sources can be identified by passing the SED name to the identify argument. Similarly, setting the argument label_points=True prints the name of each source next to its data point.

cat.plot('Lbol', 'spectral_type', order=1)      # Lbol v. SpT plot with first order polynomial fit
cat.plot('spectral_type', '2MASS.J-2MASS.H')    # SpT v. J-H color plot
cat.plot('age', 'distance', identify=['Vega'])  # Age v. Dist with Vega circled in red
cat.plot('parallax', 'mbol', label_points=True) # Plx v. mbol with labeled points

The SEDs can be plotted for visual comparison with the plot_SEDs() method. The can be normalized to 1 by setting the argument normalize=True.

cat.plot_SEDs('*', normalize=True)  # Plot of all SEDs
cat.plot_SEDs(['Vega', 'Sirius'])   # Normalized plot of Vega and Sirius

The results table, photometry, and plots of each SED can be exported to a zip file or directory with the export() method.

cat.export('/path/to/target/dir', zip=True)

The whole Catalog object can be serialized and loaded with the save() and load() methods, respectively.

cat_file = '/path/to/cat.p'
cat.save(cat_file)
new_cat = Catalog('A-type stars')
new_cat.load(cat_file)

A catalog can also be made from an ASCII file with column names name, ra, and dec by passing the filepath to the from_file() method. For each source in the list, an SED is created, the methods in the run_methods argument are run, and the SED is added to the catalog.

source_list = '/path/to/sources.csv'
new_cat = Catalog()
new_cat.from_file(source_list, run_methods=['find_2MASS', 'find_WISE', 'find_Gaia'])