Metadata-Version: 2.5
Name: furax
Version: 0.15.1
Summary: A JAX framework for linear operators in astrophysical and cosmological data analysis.
Project-URL: homepage, https://scipol.in2p3.fr
Project-URL: documentation, https://furax.readthedocs.io/en/stable/
Project-URL: repository, https://github.com/CMBSciPol/furax
Project-URL: issues, https://github.com/CMBSciPol/furax/issues
Project-URL: changelog, https://furax.readthedocs.io/en/stable/development/changelog/
Author: Wassim Kabalan
Author-email: Pierre Chanial <chanial@apc.in2p3.fr>, Simon Biquard <simon.biquard@manchester.ac.uk>, Wuhyun Sohn <sohn@apc.in2p3.fr>
Maintainer-email: Pierre Chanial <chanial@apc.in2p3.fr>, Simon Biquard <simon.biquard@manchester.ac.uk>
License-Expression: MIT
License-File: LICENSE
Keywords: CMB,cosmology,jax,linear operators,mapmaking,scientific computing
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Astronomy
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.12
Requires-Dist: astropy>=7.2
Requires-Dist: equinox>=0.13.8
Requires-Dist: fastquat>=1.0b2
Requires-Dist: healpy>=1.19.0
Requires-Dist: jax-healpy[recommended]>=0.8
Requires-Dist: jax>=0.11.0
Requires-Dist: jaxtyping>=0.3.9
Requires-Dist: lineax>=0.1.1
Requires-Dist: numpy>=2.1
Requires-Dist: scipy>=1.15
Requires-Dist: typing-extensions; python_version < '3.13'
Requires-Dist: wadler-lindig>=0.1.7
Provides-Extra: comp-sep
Requires-Dist: pysm3; extra == 'comp-sep'
Provides-Extra: interfaces
Requires-Dist: cyclopts>=4.6.0; extra == 'interfaces'
Requires-Dist: litebird-sim>=0.17; extra == 'interfaces'
Requires-Dist: so3g>=0.2.4; (python_version < '3.13') and extra == 'interfaces'
Requires-Dist: so3g>=0.2.7; (python_version >= '3.13') and extra == 'interfaces'
Requires-Dist: sotodlib[site-pipeline]>=0.6.19; extra == 'interfaces'
Requires-Dist: toast>=3.0.3; extra == 'interfaces'
Provides-Extra: lbs
Requires-Dist: litebird-sim>=0.17; extra == 'lbs'
Provides-Extra: mapmaking
Requires-Dist: jax-cadre>=0.1.2; extra == 'mapmaking'
Requires-Dist: matplotlib>=3.8.4; extra == 'mapmaking'
Requires-Dist: pixell>=0.31.3; extra == 'mapmaking'
Requires-Dist: pyyaml>=6.0.3; extra == 'mapmaking'
Requires-Dist: typedload>=2.41; extra == 'mapmaking'
Provides-Extra: so
Requires-Dist: cyclopts>=4.6.0; extra == 'so'
Requires-Dist: so3g>=0.2.4; (python_version < '3.13') and extra == 'so'
Requires-Dist: so3g>=0.2.7; (python_version >= '3.13') and extra == 'so'
Requires-Dist: sotodlib[site-pipeline]>=0.6.19; extra == 'so'
Provides-Extra: toast
Requires-Dist: toast>=3.0.3; extra == 'toast'
Description-Content-Type: text/markdown

# Furax

[![PyPI version](https://img.shields.io/pypi/v/furax)](https://pypi.org/project/furax/)
[![Python version](https://img.shields.io/pypi/pyversions/furax)](https://pypi.org/project/furax/)
[![License](https://img.shields.io/pypi/l/furax)](https://github.com/CMBSciPol/furax/blob/main/LICENSE)
[![arXiv](https://img.shields.io/badge/arXiv-2603.19600-b31b1b.svg)](https://arxiv.org/abs/2603.19600)
[![Documentation Status](https://readthedocs.org/projects/furax/badge/?version=stable)](https://furax.readthedocs.io/en/stable/)
[![CI](https://github.com/CMBSciPol/furax/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/CMBSciPol/furax/actions/workflows/ci.yml)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

[**Docs**](https://furax.readthedocs.io/en/stable)

Furax: a Framework for Unified and Robust data Analysis with JAX.

This framework provides building blocks for solving inverse problems, in particular in the astrophysical and cosmological domains.

## Requirements

- Python 3.12 or higher
- [JAX](https://jax.readthedocs.io/en/latest/installation.html) — install separately for your target hardware (CPU, CUDA, Metal, …)

## Installation

Furax is available as [`furax`](https://pypi.org/project/furax/) on PyPI, and can be installed with:

```bash
uv add furax       # uv, recommended
pip install furax  # pip, alternative
```

> [!NOTE]
> Transposing spherical harmonic transforms (`furax.math.sht`) requires an `s2fft` fix ([#380](https://github.com/astro-informatics/s2fft/pull/380)) that is not yet released.
> Until the next release, install `s2fft` from GitHub alongside Furax:
>
> ```bash
> uv add "s2fft @ git+https://github.com/astro-informatics/s2fft"
> pip install "s2fft @ git+https://github.com/astro-informatics/s2fft"
> ```

## Developing Furax

We strongly recommend using [`uv`](https://docs.astral.sh/uv) to work on Furax.

```bash
uv sync                  # automatic editable install with `dev` dependency group
uv sync --extra <extra>  # same with additional, optional dependencies
```

We use [pytest](https://docs.pytest.org/en/stable/) for testing.
You can run the tests with:

```bash
uv run pytest
```

To ensure that your code passes the quality checks, you can use our [pre-commit](https://pre-commit.com/) configuration.
We recommend using [`prek`](https://prek.j178.dev/) to run the pre-commit hooks.

```bash
uvx prek install  # install pre-commit hooks; every commit will trigger them
uvx prek run      # run hooks on demand (staged files)
uvx prek run -a   # run hooks (all files)
```

## Citing Furax

If you use Furax in your work, please cite the [paper](https://arxiv.org/abs/2603.19600):

> Chanial et al., *Furax: A Modular JAX Framework for Linear Operators in Astrophysical and
> Cosmological Data Analysis*, arXiv:2603.19600 (2026).

Citation metadata is also available in [`CITATION.cff`](CITATION.cff).
