A model-agnostic way to look at dark energy (DE) with 3×2pt surveys: project the constraints onto the plane
the comoving distance (Mpc) and the linear amplitude in 12 Mpc spheres, relative to a Planck 2018 ΛCDM fiducial, at a set of redshifts. Different DE model classes populate different regions and trajectories of this plane, so surveys analysed on a common basis can be compared, and models overlaid, without choosing a parametric DE model first.
The package provides:
de_plane.lib(pure Python, CAMB): DE histories (LCDM,W0WA, the non-parametricNodesmodel), backgrounds, plane coordinates, θ*-anchored model tracks, growth-index and growth-split helpers.- CosmoSIS modules that put these into a likelihood pipeline:
| module | role |
|---|---|
de_nodes |
DE history → tabulated w(a) for CAMB (PPF). Modes: nodes (sample de_nodes/ln_f_1..4, ln ρ_DE at z = 0.3, 0.6, 1.0, 1.5), w0wa, lcdm. Solves h from θ_MC when it is sampled. Writes the CPL fit (w0_eff, wa_eff) for HMcode. |
growth_split |
growth–geometry split: P_lin → A(z)² P_lin with A(z) a spline through growth_split/A_1..4; A = 1 recovers GR growth. |
plane_coords |
writes δlnχ, δlnχ_h, δlnσ12 at the plane redshifts (section de_plane) so every chain row carries them. |
hmcode_de |
HMcode2016 (pyhmcode) nonlinear P(k), one-parameter baryons (A_bary), with the DE background passed to HMcode. |
eu_prior |
correlated Planck 2018 early-universe prior on (ω_b, ω_c, 100θ_MC, n_s); A_s left free. |
theta_h |
100θ_MC → h for parametric w0–wa runs. |
w0wa_prior |
hard w0 + wa < 0 prior. |
sigma8_rescale |
DE-aware σ8 → A_s for pipelines that sample S8 (KiDS-1000). |
meascorr_general |
HSC Y3 measurement corrections (wp, r_p, ΔΣ) with distances from the block (needs the HSC Y3 likelihood code). |
de_plane.run_nautilus: runs a CosmoSIS pipeline with the nautilus sampler (v1 API, MPI) and writes a CosmoSIS-format chain;de_plane.nautilus_snapshotwrites provisional chains from running checkpoints.
git clone git@github.com:KIPAC/de_plane.git
cd de_plane
pip install -e ".[examples]" # numpy, scipy, camb + matplotlib, jupyterFor the CosmoSIS modules you also need a CosmoSIS installation with
the CosmoSIS standard library, and pip install -e ".[cosmosis]" (pyhmcode, nautilus-sampler, mpi4py).
examples/plane_predictions.ipynb: build DE histories with the node model and growth deviations with the growth split, and predict their tracks on the plane. Runs with the base install (no CosmoSIS).examples/cosmosis_desy3: DES Y3 MagLim 3×2pt CosmoSIS configurations for the smooth (nodes) and split models, with flat and Planck-θ* priors, including the public DES Y3 data vector. Needs a CosmoSIS setup; see its README.
from de_plane.lib.background import W0WA, Nodes, NODE_Z
from de_plane.lib.models import track
de = Nodes([0.10, 0.12, 0.05, 0.02]) # ln rho_DE(z_k)/rho_DE(0) at z_k = 0.3, 0.6, 1.0, 1.5
t = track(de, zs=[0.3, 0.6, 1.0]) # Planck18 early universe, theta_MC fixed, h solved
print(t["h"], t["dlnchi"], t["dlnsig12"])
print("CPL fit (w0, wa):", de.cpl_fit())BSD 3-Clause, see LICENSE.