Skip to main content

Unified liNe Intagration Turbo Engine

Project description

unite — Unified liNe Integration Turbo Engine

PyPI Python License: GPL v2 Tests codecov Documentation

unite is a Python package for fast, Bayesian inference of emission lines from astronomical spectra. It is built on JAX, NumPyro, and Astropy, and supports fitting multiple spectra simultaneously with shared kinematics, calibration tokens, and flexible priors.

Originally designed for JWST/NIRSpec but extensible to any spectrograph.

What it does

  • Exact pixel integration of line profiles — fast, memory-efficient, and correct even for undersampled data
  • Simultaneous multi-spectrum fitting across gratings and instruments with shared kinematic parameters (redshift, FWHM)
  • Multiple line profiles: Gaussian, Voigt, Cauchy, Pseudo-Voigt, Laplace, Gauss-Hermite, Split-Normal
  • Flexible continuum models: Linear, Power-Law, Polynomial — auto-generated from line configurations
  • Calibration tokens (flux scale, resolution scale, pixel offset) with free or fixed priors, shared across spectra
  • YAML serialization for reproducible, human-editable configurations
  • User-controlled samplerModelBuilder returns (model_fn, model_args) for use with any NumPyro backend (NUTS, SVI, nested sampling, ...)
  • Instrument support for JWST/NIRSpec (all gratings + PRISM) and generic spectrographs

Installation

pip install unite

Or with Pixi:

pixi add unite

Quick Start

from unite.line import LineConfiguration, Redshift, FWHM, Flux
from unite.continuum import ContinuumConfiguration
from unite.spectrum import Spectrum, Spectra
from unite.model import ModelBuilder

# Configure lines with shared kinematics
line_config = LineConfiguration(...)
continuum_config = ContinuumConfiguration.from_line_config(line_config)

# Load spectra and build the numpyro model
spectra = Spectra([Spectrum(...)])
model_fn, model_args = ModelBuilder(line_config, continuum_config, spectra).build()

# Run with any NumPyro sampler
import numpyro
from numpyro.infer import MCMC, NUTS
mcmc = MCMC(NUTS(model_fn), num_warmup=500, num_samples=1000)
mcmc.run(jax.random.PRNGKey(0), *model_args)

Contributing

Bug reports, feature requests, and pull requests are welcome on GitHub. If you find a bug or have an idea for an improvement, please open an issue — even a brief description is helpful.

Documentation

Full documentation, tutorials, and API reference at unite.readthedocs.io.

Citing

If you use unite in your research, please cite the Zenodo software release. Each versioned release has a unique DOI minted automatically when a GitHub release is created.

DOI

See CITATION.md for BibTeX and details. The Zenodo record lists all releases — visit the link to cite a specific version. GitHub's "Cite this repository" button (top-right of the repo page) also generates citation text directly from CITATION.cff.

License

GPL v3 or later. See LICENSE for details.

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

unite-1.2.0.tar.gz (292.8 kB view details)

Uploaded Source

Built Distribution

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

unite-1.2.0-py3-none-any.whl (188.7 kB view details)

Uploaded Python 3

File details

Details for the file unite-1.2.0.tar.gz.

File metadata

  • Download URL: unite-1.2.0.tar.gz
  • Upload date:
  • Size: 292.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unite-1.2.0.tar.gz
Algorithm Hash digest
SHA256 49f0d6981a5bc882b0c3d5c182291c055a6ad00341dae064ff74c4439d6cec25
MD5 af75cc4922c2e9c35ff7b378eb1dafa3
BLAKE2b-256 6a75f8cb59c8af0efb4018c312ae839a7361751467cd6f1976d1d49041e77a16

See more details on using hashes here.

Provenance

The following attestation bundles were made for unite-1.2.0.tar.gz:

Publisher: publish.yml on TheSkyentist/unite

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

File details

Details for the file unite-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: unite-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 188.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for unite-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ce78ccf7ae64e504aef1ad524945e4b8dc81726e3c1c778296101242dd2065a
MD5 1d9d9ae11b8bea487626826bcf8728c1
BLAKE2b-256 81207437e77b29ed87abb599e6546e1702358b1dbc4743dc21f465d69865880f

See more details on using hashes here.

Provenance

The following attestation bundles were made for unite-1.2.0-py3-none-any.whl:

Publisher: publish.yml on TheSkyentist/unite

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