SPISEA: Stellar Population Interface for Stellar Evolution and Atmospheres¶
SPISEA is an open-source python package that generates single-age, single-metallicity populations (i.e. star clusters). It gives the user control over many parameters:
Cluster characteristics (age, metallicity, mass, distance)
Total extinction, differential extinction, and extinction law
Stellar evolution and atmosphere models
Stellar multiplicity and Initial Mass Function
Initial-Final Mass Relation
Photometric filters
Here is a brief list of things that SPISEA can do:
make a cluster isochrone in many filters using different stellar models
make a star cluster at any age with an unusual IMF and unresolved multiplicity
make a spectrum of a star cluster in integrated light
SPISEA can be downloaded from Github. Please cite Hosek et al. (2020) if you use SPISEA in your research.
Getting Started¶
Documentation¶
Advanced Documentation¶
Contributions¶
Have an idea? We’d love to have you join our team! We welcome and encourage contributions to SPISEA.
For feature additions, we ask that users make their own fork of the repository, make their changes, and then submit a pull request to the “dev” branch.
All contributions will be acknowledged on the Contributors page (with permission). Contributors with features used in code releases will be co-authors in future SPISEA software papers.
Change Log¶
- 2.4 (2026-03-20)
Added backward compatibility for isochrone file names created before v2.3
When reading isochrone from existing file, only keep user requested filters in resulting table.
Changed the global random seed to a random generator within each class, but still retaining the reproducibility. Test cluster files in test_data also updated accordingly for testing purposes
Added filter support for IRTF L-band
Added conversion function between ST mags and Vega mags
- 2.3 (2026-02-10)
Achieves faster cluster generation (factor of about 2x) by using replacing ragged arrays with masked arrays when calculating multiplicity properties
Added new test functions (and associated test data files) ensuring that the primary mass and companion mass distibutions remain the same as generated with SPISEA <= v2.2
Added support to Euclid VIS filter
- 2.2 (2026-01-16)
Compatibility updates for SPISEA to work with SynthPop. Updates include:
Low mass objects below the isochrone grid can optionally be kept in clusters (off by default) and will have
current_mass=initial_massandphase=98, with no other evolutionary information or photometry.Evolution model versions are now logged in IsochronePhot files and checked if present.
The option
synthpop_extensionis now available for MISTv1 version=1.2 evolution. This fills in the missing parameter space down to initial mass 0.1Msun in isochrones where needed. Use of this option will require downloading updated isochrone files.Added support for Euclid filters.
- 2.1.15 (2025-10-25)
Updated Roman filter name from outdated w146 to current f146. From now on a STScI CDBS data version from 2024-03-22 or later is required to use the Roman filter photometry.
- 2.1.14 (2025-10-23)
Added support for NACO intermediate bands
Added metallicity bounds check when calling atmosphere model grid
Added check to make sure desired filter columns are present in isochrone file when deciding whether a new isochrone needs to be calculated
Small bugfix: ensures that imf_mass_limit is reset properly when generating multiple clusters from same imf object
- 2.1.13 (2024-12-10)
Small bugfix to make iso_dir creation more robust
- 2.1.12 (2024-12-02)
Added support for Rubin Observatory filters
- 2.1.11 (2023-09-15)
Small bugfix to RedLawFritz11 so paths work regardless of operating system used
- 2.1.10 (2023-06-01)
Added support for Roman Space Telescope filters (via pysynphot)
Note: this requires the pysynphot
cdbs/mtabandcdbs/comp/directories to be at least the 2021-07-16 version or later. See Install From Git for how to download these files
- 2.1.9 (2023-01-10)
Small bugfix: updating pytest setup.cfg and conftest.py files to work with latest python/astropy versions
Added additional print statements in verbose condition flags
- 2.1.8 (2023-01-09)
Small bugfix: Updating numpy array definitions to use dtype=’objects’ instead of depreciated dtype=’np.object’
- 2.1.7 (2022-10-26)
Made several updates to the extinction law objects, including:
Added Indebetouw05, Schoedel10, Fritz11, and NoguerasLara20 laws
Improved docs and added plotting functions for Nishiyama09 and RomanZuniga07 laws
Updated K-band scale wavelength for Fitzpatrick07 and NoguerasLara18 to match published values
Updated assorted “under the hood” functions to handle new laws
Added more test functions for the extinction laws
Updated Extinction Law Object page so laws are in chronological order
- 2.1.6 (2022-09-15)
Bugfix in how evolution object identifies what age and metallicity model to pull from the grid of available models. Previously, it used first grid model where grid model value > requested value (numpy.searchsorted routine). Now, is takes grid model where the difference between the grid model value and requested value is minimized. This is most relevant for metallicity selection for MIST isochrones, where the model grid metallicities are spaced out.
- 2.1.5 (2022-07-20)
Added additional parameters to get_bb_atmosphere function to give user control over the min and max wavelength values, as well as wavelength sampling. See Atmosphere Model Object for details.
2.1.4 (2022-05-24)
Expanded MISTv1 evolution model grid age range to logAge = 5.01 – 10.30
Begun version tracking for evolution model grid; updated grid (with new MISTv1 age range) is grid 1.1
A new ModelMismatch exception will be raised if evolution model object requires a higher version of the model grid than the user has installed. See Evolution Model Object for details
Fixed MISTv1 sub-directory names so proper Z_solar value of 0.0142 is used (only naming convention, does not effect output results)
Updated evolution model and atmosphere model doc pages with tables describing properties of installed options
Small tweaks to installation instructions for clarity
Updated test functions and removed outdated dependence on nose package
2.1.3 (2022-04-23)
Updates to documentation and Quick-Start Guide
Fully depreciated Hosek18 extinction law to avoid confusion with Hosek18b
2.1.2 (2022-04-01)
New installation methods using Docker containers and Singularity
2.1.1 (2022-03-30)
Bugfix: fixed application of IFMR to objects in companions table (ResolvedCluster and associated subclasses: applies when multiplicity + IFMR are used)
Minor additions to docs
2.1.0 (2022-01-24)
Added ability to create resolved multiple systems, with orbital elements assigned to each companion (see Stellar Multiplicity Object)
Added new metallicity-dependent IFMR models (see IFMR Object)
Added blackbody atmosphere class
Additional test functions, filter functions, and documentation updates
2.0.0 (2020-07-09)
Top-level software name change from PyPopStar to SPISEA (see Switching from version 1 (PyPopStar) to version 2 (SPISEA) for instructions to do this). This version of code was released in Hosek et al. (2020).
1.0.1 (2020-06-24)
Bug fix for photometric column headers for some filters, added new tests regarding total cluster mass, small documentation edits
1.0.0 (2019-12-01)
Initial release
Logo by Natasha Abrams