sedkit
is a collection of pure Python modules for simple SED construction and analysis. Users can create individual SEDs or SED catalogs from spectra and/or photometry and calculate fundamental parameters (fbol, Mbol, Lbol, Teff, mass, log(g)) using the methods presented in Filippazzo et al. (2015) and described in the documentation: https://sedkit.readthedocs.io/.
Install in an environment with Python 3.11, 3.12, 3.13.
pip install sedkit
If you plan to modify and/or contribute to the code, clone the repository and then install an editable version of the package and the requirements for running the tests.
pip install -e ".[test]"
An SED can be constructed by importing and initializing an SED
object.
from sedkit import SED
trap1 = SED(name='Trappist-1')
The name
argument triggers a lookup in the Simbad database for meta, astrometric, and spectral type data. Interstellar reddening is calculated when possible.
Photometry can be added manually...
trap1.add_photometry('Johnson.V', 18.798, 0.082, '2006AJ....132.1234C')
trap1.add_photometry('Cousins.R', 16.466, 0.065, '2006AJ....132.1234C')
trap1.add_photometry('Cousins.I', 14.024, 0.115, '2006AJ....132.1234C')
...and/or retrieved from Vizier catalogs with built-in methods.
trap1.find_2MASS()
trap1.find_WISE()
Spectrum arrays or ASCII/FITS files can also be added to the SED data.
import importlib.resources
spec_file = str(importlib.resources.files('sedkit')/ 'data/Trappist-1_NIR.fits')
import astropy.units as u
trap1.add_spectrum_file(spec_file, wave_units=u.um, flux_units=u.erg/u.s/u.cm**2/u.AA)
Other data which may affect the calculated and inferred fundamantal parameters can be set at any time.
trap1.spectral_type = 'M8', '2006AJ....132.1234C'
trap1.age = 7.6*u.Gyr, 2.2*u.Gyr, '2017ApJ...845..110B'
trap1.radius = 0.121*u.R_sun, 0.003*u.R_sun, '2021PSJ.....2....1A'
Results can be calculated at any time by checking the results
property.
trap1.results
param | value | unc | units |
---|---|---|---|
name | Trappist-1 | -- | -- |
ra | 346.6223683333333 | -- | -- |
dec | -5.0413974999999995 | -- | -- |
age | 7.6 | 2.2 | Gyr |
Lbol | 2.24e+30 | 6.49e+28 | erg / s |
Lbol_sun | -3.23 | 0.013 | -- |
Mbol | 12.836 | 0.031 | -- |
SpT | M8V | -- | -- |
Teff | 2581 | 37 | K |
fbol | 1.21e-10 | 3.49e-12 | erg / (cm2 s) |
logg | 5.281466666666667 | 0.005382456140353042 | -- |
mass | 0.0921333333333333 | 0.0013456140350877333 | solMass |
mbol | 13.308 | 0.031 | -- |
membership | -- | -- | -- |
parallax | 80.4512 | 0.12110000103712082 | mas |
radius | 0.121 | 0.003 | solRad |
reddening | 9.259104263037443e-05 | -- | -- |
spectral_type | 68.0 | 0.5 | -- |
A variety of evolutionary model grids can be used to infer fundamental parameters,
trap1.evo_model = 'DUSTY00'
trap1.infer_mass()
Any arbitrary atlas of models (stored in data\models\atmospheric
) can be used to fit the data with or without MCMC analysis.
from sedkit import SpexPrismLibrary
trap1.fit_modelgrid(SpexPrismLibrary(), mcmc=True)
Inspect the SED at any time with the interactive plotting method.
trap1.plot(integral=True, best_fit=True)
References for all data can be accessed via the refs
attribute.
Entire catalogs of SED
objects can also be created and their properties can be arbitrarily compared and analyzed with the sedkit.catalog.Catalog()
object.
Please read the full documentation for details on this functionality and much more.
Full documentation is available: https://sedkit.readthedocs.io/.
The package also contains detailed Jupyter notebooks highlighting the core functionality of its primary classes, including