Installation Guide
System Requirements
Operating System:
Linux (recommended for best performance)
macOS (fully supported)
Windows (supported via WSL2)
Python Version:
Python 3.9 - 3.11 (3.10 recommended)
Python 3.12+ has not been fully tested
Hardware Recommendations:
CPU: 4+ cores (for parallel MCMC sampling)
RAM: 8GB+ (16GB+ recommended for large-scale MCMC)
GPU (optional): NVIDIA CUDA 11.8+ for JAX GPU acceleration
Basic Installation
Install from source (recommended):
# Clone the repository
git clone https://github.com/yourname/hicosmo.git
cd hicosmo
# Create a virtual environment (recommended)
python -m venv venv
source venv/bin/activate # Linux/macOS
# or venv\Scripts\activate # Windows
# Install
pip install -e .
Using conda:
conda create -n hicosmo python=3.10
conda activate hicosmo
pip install -e .
Development Installation
If you need to develop or debug HIcosmo:
pip install -e ".[dev]"
This installs additional development dependencies:
pytest: testing frameworkpytest-cov: coverage reportingblack: code formattingisort: import sortingmypy: type checkingflake8: code style checking
GPU Acceleration
HIcosmo is built on JAX and supports GPU acceleration. For NVIDIA GPUs:
# First install the CPU version
pip install -e .
# Then install JAX GPU version (CUDA 11.8+)
pip install --upgrade "jax[cuda11_local]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
# Or use CUDA 12
pip install --upgrade "jax[cuda12_local]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Verify GPU installation:
import jax
print(jax.devices())
# Should display something like: [GpuDevice(id=0, process_index=0)]
Core Dependencies
HIcosmo’s core dependencies include:
Package |
Version |
Purpose |
|---|---|---|
jax |
>=0.4.20 |
High-performance numerical computing and automatic differentiation |
jaxlib |
>=0.4.20 |
JAX compilation backend |
numpyro |
>=0.13.0 |
Probabilistic programming and NUTS sampler |
numpy |
>=1.24.0 |
Array operations |
scipy |
>=1.10.0 |
Scientific computing |
astropy |
>=5.0 |
Astronomical constants and units |
getdist |
>=1.4.0 |
MCMC visualization (corner plots) |
matplotlib |
>=3.7.0 |
Plotting |
pyyaml |
>=6.0 |
Configuration file parsing |
rich |
>=13.0.0 |
Enhanced terminal output |
Optional Dependencies
emcee sampler (alternative sampler):
pip install emcee
Documentation building:
pip install sphinx sphinx_rtd_theme
Jupyter support:
pip install jupyter ipykernel
Verifying Installation
After installation, run the following commands to verify:
# Run the test suite
pytest tests/ -v --tb=short
Python verification:
import hicosmo
print(hicosmo.__version__)
# Verify JAX and precision configuration
import jax
import jax.numpy as jnp
x = jnp.array([1.0, 2.0, 3.0])
print(f"JAX working: {x.sum()}")
print(f"float64 enabled: {jax.config.jax_enable_x64}") # should be True
Note
Cosmological distance integrals and covariance solves need float64,
so import hicosmo automatically enables JAX’s x64 mode. Import
hicosmo before running any JAX computation. If you genuinely need
float32 (e.g. tight GPU memory), set the environment variable
HICOSMO_DISABLE_X64=1 before importing.
# Verify NumPyro import numpyro print(f”NumPyro version: {numpyro.__version__}”)
# Quick cosmology calculation test from hicosmo.models import LCDM model = LCDM(H0=70, Omega_m=0.3) print(f”d_L(z=1) = {model.luminosity_distance(1.0):.2f} Mpc”)
Troubleshooting
JAX version conflicts:
If you encounter JAX-related errors, ensure jax and jaxlib versions match:
pip install --upgrade jax jaxlib
NumPyro import errors:
Make sure the correct version of NumPyro is installed:
pip install --upgrade numpyro
GetDist plotting issues:
If corner plots fail, check the matplotlib backend:
import matplotlib
matplotlib.use('Agg') # Non-interactive backend
Out of memory:
For large-scale MCMC, configure JAX memory pre-allocation:
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.8
CI/CD Environment Configuration
For CI environments, the following settings are recommended:
# Force CPU usage (avoid GPU-related issues)
export JAX_PLATFORM_NAME=cpu
# Disable JAX pre-allocation
export XLA_PYTHON_CLIENT_PREALLOCATE=false
# Set random seed for reproducibility
export PYTHONHASHSEED=42
Read the Docs Build
This project’s English documentation is built from the docs_en/ directory.
The configuration file is located at docs_en/source/conf.py.
Building the documentation:
cd docs_en
make html
# Output in docs_en/build/html/