Skip to main content

Stellar Evolutionary Stage Heuristic Assessment Tool (SESHAT)

SESHAT logo

Important caveat: In the current distribution, MIR data are necessary to classify YSOs to the expected performance. Without MIR data, the real performance deviates significantly from the synthetic set performance. This does not apply to other classes.

If you use this package, please cite Crompvoets et al. 2025. Please also cite the original producers of the data used/producers of the software used to create the data used for this work:
YSOs: Richardson et al. (2024)
Brown dwarfs: ATMO -- Phillips et al. (2020)
White dwarfs: Blouin et al. (2018)
Field stars: PARSEC -- Bressen et al. (2012)
Galaxies: CIGALE -- Burgarella et al. 2005, Noll et al. 2009 Boquin et al. (2020)

Catalog set-up

Please have your catalog set-up with the columns as:
Spitzer: ['IRAC1', 'IRAC2', 'IRAC3', 'IRAC4', 'MIPS1']
2MASS: ['J', 'H', 'Ks']
JWST: in the frame of 'f090w', or 'f322w2'.

Please include errors as 'e_' + filter name; e.g. 'e_f090w', 'e_IRAC2'.

All columns must be in Vega mags.

If you have labels already known, these should be under the column: 'Class'
The labels should match the following:
Young Stellar Objects: "YSO"
Field stars: "FS"
Galaxies: "Gal"
White dwarfs: "WD"
Brown dwarfs: "BD"

Other important information

The function classify accepts pandas DataFrames or Astropy Tables.

When testing filters, you must input limiting and saturating magnitudes of each filter, as well as what an appropriate distribution of errors for the data might be. These errors are used to add noise to the training/testing data.

SESHAT only takes medium, wide, and very-wide filters as input for JWST, no narrow filters.

Example of obtaining classifications

from seshat_classifier import seshat
import pandas as pd

# Read in catalog
my_catalog = pd.read_csv("my_catalog.csv")

# Specify classes to be identified
classes = ['YSO', 'FS', 'Gal']

# Get classifications
my_catalog_classified = seshat.classify(real = my_catalog, classes = classes, cosmological = False, return_test=False, threads = 8)

# Get classifications and test set performance
my_catalog_classified, test_results = seshat.classify(real = my_catalog, classes = classes, return_test=True, threads = 8)

Example of testing filters

from seshat_classifier import seshat
import numpy as np
import matplotlib.pyplot as plt

# Specify filters to test
filters = ['f090w', 'f200w', 'f356w', 'f480m', 'f770w', 'f1500w']
# Specify classes to search for
classes = ['YSO', 'FS', 'Gal']

# Specify the limiting and saturating magnitudes of your proposed observations
limiting_mags = {'f090w':22, 'f200w':23, 'f356w':24, 'f480m':25, 'f770w':22, 'f1500w':24}
saturating_mags = {'f090w':14, 'f200w':13, 'f356w':12, 'f480m':11, 'f770w':15, 'f1500w':14}

# Specify the expected distribution of errors
sig = 0.02
mean = 0.1
errs = [np.random.normal(mean, sig, size=100) for f in filters] # Choose a suitably large size to capture shape of distribution

# Get the performance
test_results = seshat.test_filters(filters = filters, classes=classes, limiting_mags = limiting_mags, saturating_mags = saturating_mags, errs=errs, threads = 8)

# Plot performance
ax = seshat.cm_custom(test_results.Class,test_results.Predicted_Class,cmap='Greys',display_labels=classes)
plt.show()

Release files for seshat-classifier 0.1.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for seshat-classifier 0.1.11
File Size Uploaded
seshat_classifier-0.1.11.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for seshat-classifier 0.1.11
File Interpreter ABI Platform
seshat_classifier-0.1.11-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / seshat_classifier-0.1.11.tar.gz

Download URL seshat_classifier-0.1.11.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
7eab4af1fce4618bb90fd3be76ce626be141d981d2f2b4086f80515cb887ad72
BLAKE2b-256 checksum
How to use checksums
6e57eaa6a0a2d18ccd59b09ee715e8cf34b482e4123ad73f12a6f15e1ebdb2e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 19, 2026.

Transparency log

Release files / seshat_classifier-0.1.11-py3-none-any.whl

Download URL seshat_classifier-0.1.11-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
b0f149ebd33f4c5f61c790bd4093e404e997dd85f828e7c8f9d40e81e8a1b058
BLAKE2b-256 checksum
How to use checksums
8f1ad65875b8e9c725f0eb0035d7db37b36318cecf4d4120488febc16257c895
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 19, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page