Skip to main content

A package for classifying tabular photometry data from JWST, Spitzer, and 2MASS according to one of YSOs, field stars, brown dwarfs, white dwarfs, or galaxies.

Project description

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 data producers:
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()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

seshat_classifier-0.1.10.tar.gz (1.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

seshat_classifier-0.1.10-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file seshat_classifier-0.1.10.tar.gz.

File metadata

  • Download URL: seshat_classifier-0.1.10.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for seshat_classifier-0.1.10.tar.gz
Algorithm Hash digest
SHA256 b3d959a6c1acdc6424f63aa5053dd3333a734ec5e80a655ba4678126343fc34c
MD5 376d5f4b699b0dcddc130fbb2db83041
BLAKE2b-256 d392c19c4685fa0b9a9d6b369da1139963e322f97d6e52b4b5e9517dd7fa40b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for seshat_classifier-0.1.10.tar.gz:

Publisher: pypi_publish.yml on bcrompvoets/SESHAT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seshat_classifier-0.1.10-py3-none-any.whl.

File metadata

File hashes

Hashes for seshat_classifier-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 0e550ef158efccccd2301ed8e958dcaa6abe9fd36292660617d52adf251b3581
MD5 8fbdbb3a80daa58c3bb504c813165070
BLAKE2b-256 1261c2de592ab3cc4ccaeb31dff8d360c1edecf18a01a3fde4d30b9df4b9cac5

See more details on using hashes here.

Provenance

The following attestation bundles were made for seshat_classifier-0.1.10-py3-none-any.whl:

Publisher: pypi_publish.yml on bcrompvoets/SESHAT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page