Fast, differentiable cosmology in pure JAX. CMB Cls, matter Pk (linear and nonlinear), distances, derived parameters, and halo-model tSZ Cl^yy via high-accuracy ede-v2 CosmoPower emulators.
Project description
classy_szlite
Fast, differentiable cosmology in pure JAX.
classy_szlite provides JIT-compiled, jax.grad-friendly access to:
- CMB angular power spectra — TT, TE, EE
- Linear and nonlinear matter Pk — P(k, z), Pnl(k, z)
- Distances — H(z), comoving χ(z), angular-diameter D_A(z)
- Derived parameters — σ8, Ω_m, S8
- Halo-model tSZ Cl^yy — Arnaud 2010 GNFW pressure profile
Backed by the high-accuracy v2 CosmoPower emulators — the same
emulators used in the ACT DR6 extended-cosmology
analysis (2025) and the
ACT DR6 + DESI DR2 analysis by
Poulin et al. (2025), matching the CAMB-based
Jense et al. (2024) emulators
to well under 0.1 σ in ΛCDM. See
Installation
for the emulator-coverage details.
Runtime dependencies: jax, numpy, mcfit.
Install
pip install classy_szlite
Or from source:
git clone https://github.com/CLASS-SZ/classy_szlite
cd classy_szlite
pip install -e .
You also need the CosmoPower emulator .npz files at ~/class_sz_data/
(or the path in $CLASSY_SZLITE_DATA_DIR). See
Installation.
Quick start
import jax.numpy as jnp
import classy_szlite as csl
cosmo = csl.CosmoParams() # Planck-18 ΛCDM defaults
# Derived parameters
csl.derived(cosmo)
# → {'sigma_8': 0.812, 'Omega_m': 0.311, 'S8': 0.827, 'der_full': ...}
# CMB Cls (dimensionless D_ℓ; × Tcmb² for μK²)
csl.cl_TTTEEE(cosmo)
# → {'ell', 'tt', 'te', 'ee'}
# Matter Pk at multiple z
k, pk = csl.Pk(cosmo, [0., 0.5, 1., 2.])
k, pnl = csl.Pnl(cosmo, [0., 0.5, 1., 2.])
# Distances
Hz, chi, Da = csl.distances(cosmo, [0.1, 0.5, 1.0])
# Halo-model tSZ Cl^yy
profile = csl.ProfileParamsA10(P0=8.13, beta=5.48, B=1.25)
ell = jnp.geomspace(2, 9000, 80)
cl_1h, cl_2h = csl.cl_yy(cosmo, profile, ell)
# MCMC fast path: precompute cosmology + halo grids once → ~5 ms/call
ev = csl.cl_yy_factory(cosmo, ell)
cl_1h, cl_2h = ev(profile)
Throughput
Warm-call timing, n = 100 calls per benchmark, freshly randomised inputs:
| Function | mean ± std (ms) | calls/s |
|---|---|---|
derived |
0.54 ± 0.04 | 1850 ± 150 |
cl_TTTEEE |
2.52 ± 0.14 | 400 ± 25 |
Pk |
1.49 ± 0.12 | 670 ± 55 |
distances |
1.29 ± 0.09 | 770 ± 60 |
cl_yy (full pipeline) |
17.84 ± 0.58 | 56 ± 2 |
cl_yy_factory (fixed-cosmo) |
5.38 ± 0.42 | 185 ± 15 |
cl_yy_factory + jax.grad |
17.12 ± 1.01 | 58 ± 3 |
Reference platform: macOS arm64 (M-series CPU), single-thread JAX. See Throughput for a more detailed table + reproduction script.
JAX gradients
All public functions are JAX-traceable. The factory closure is the recommended path for gradient-based inference at fixed cosmology:
import jax
ev = csl.cl_yy_factory(cosmo, ell)
def loss(P0, beta):
cl_1h, cl_2h = ev(csl.ProfileParamsA10(P0=P0, beta=beta, B=1.25))
return jnp.sum(cl_1h + cl_2h)
d_loss = jax.grad(loss, argnums=(0, 1))(8.13, 5.48)
Gradients also work through the full pipeline (cosmology + profile) and
w.r.t. the whole CosmoParams pytree — see
Gradients.
Documentation
Full docs at https://classy-szlite.readthedocs.io.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file classy_szlite-0.2.8.tar.gz.
File metadata
- Download URL: classy_szlite-0.2.8.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d789634585ee3c483102ad3befa3dfe88f80ccd531507cae9f13bc5a6daeecf
|
|
| MD5 |
b9a24a503d8101fa81a2038f58ba93a8
|
|
| BLAKE2b-256 |
d3fd84f97eb1b14932146e72c2bb91b5143b5ccc5bd1ee12ba891fa57db82e46
|
Provenance
The following attestation bundles were made for classy_szlite-0.2.8.tar.gz:
Publisher:
publish.yml on CLASS-SZ/classy_szlite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
classy_szlite-0.2.8.tar.gz -
Subject digest:
1d789634585ee3c483102ad3befa3dfe88f80ccd531507cae9f13bc5a6daeecf - Sigstore transparency entry: 1616404123
- Sigstore integration time:
-
Permalink:
CLASS-SZ/classy_szlite@3f305df863d6dc152cd7afb83e61ed587892361a -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/CLASS-SZ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3f305df863d6dc152cd7afb83e61ed587892361a -
Trigger Event:
push
-
Statement type:
File details
Details for the file classy_szlite-0.2.8-py3-none-any.whl.
File metadata
- Download URL: classy_szlite-0.2.8-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fd0e7a10ffb1f695e9d25e203ced3da879a1eb290704b3d6168d3b155a5d6e7
|
|
| MD5 |
5eb5f64b876c28393d9571c1daad9a00
|
|
| BLAKE2b-256 |
12284ace376c0406bdf7dea530fa717fcbe2748f6fe5c1916e1a87b28352c0d8
|
Provenance
The following attestation bundles were made for classy_szlite-0.2.8-py3-none-any.whl:
Publisher:
publish.yml on CLASS-SZ/classy_szlite
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
classy_szlite-0.2.8-py3-none-any.whl -
Subject digest:
5fd0e7a10ffb1f695e9d25e203ced3da879a1eb290704b3d6168d3b155a5d6e7 - Sigstore transparency entry: 1616404219
- Sigstore integration time:
-
Permalink:
CLASS-SZ/classy_szlite@3f305df863d6dc152cd7afb83e61ed587892361a -
Branch / Tag:
refs/tags/v0.2.8 - Owner: https://github.com/CLASS-SZ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3f305df863d6dc152cd7afb83e61ed587892361a -
Trigger Event:
push
-
Statement type: