Metadata-Version: 2.4
Name: furax
Version: 0.11.1
Summary: Operators and solvers for high-performance computing.
Project-URL: homepage, https://scipol.in2p3.fr
Project-URL: repository, https://github.com/CMBSciPol/furax
Author: Wassim Kabalan
Author-email: Pierre Chanial <chanial@apc.in2p3.fr>, Simon Biquard <biquard@apc.in2p3.fr>, Wuhyun Sohn <sohn@apc.in2p3.fr>
Maintainer-email: Pierre Chanial <chanial@apc.in2p3.fr>
License-Expression: MIT
License-File: LICENSE
Keywords: scientific computing
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.11
Requires-Dist: astropy>=7.2
Requires-Dist: equinox>=0.13.8
Requires-Dist: healpy>=1.19.0
Requires-Dist: jax-healpy>=0.5
Requires-Dist: jax>=0.10.0
Requires-Dist: jaxtyping>=0.3.9
Requires-Dist: lineax>=0.1.1
Requires-Dist: numpy>=2.0
Requires-Dist: scipy>=1.14
Requires-Dist: typing-extensions; python_version < '3.13'
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.16.1; 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.16.1; extra == 'lbs'
Provides-Extra: mapmaking
Requires-Dist: apischema>=0.19.0; 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'
Provides-Extra: sht
Requires-Dist: jax-healpy[recommended]>=0.5; extra == 'sht'
Requires-Dist: s2fft; extra == 'sht'
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://badge.fury.io/py/furax.svg)](https://badge.fury.io/py/furax)
[![Python version](https://img.shields.io/pypi/pyversions/furax)](https://pypi.org/project/furax/)
[![Documentation Status](https://readthedocs.org/projects/furax/badge/?version=latest)](https://furax.readthedocs.io/en/latest/?badge=latest)
[![CI](https://github.com/CMBSciPol/furax/actions/workflows/ci.yml/badge.svg)](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.11
- [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
```

## 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)
```
