Metadata-Version: 2.4
Name: laplax
Version: 0.0.1
Summary: Laplace approximations in JAX.
Author-email: Bálint Mucsányi <b.h.mucsanyi@gmail.com>, Tobias Weber <t.weber@uni-tuebingen.de>
License-File: LICENSE
Keywords: Pierre Simon Marquis de Laplace,laplace approximation,uncertainty quantification
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: <3.14,>=3.11
Requires-Dist: jax
Requires-Dist: jaxtyping
Requires-Dist: loguru
Requires-Dist: tqdm
Provides-Extra: dev
Requires-Dist: coveralls; extra == 'dev'
Requires-Dist: curvlinops-for-pytorch; extra == 'dev'
Requires-Dist: equinox; extra == 'dev'
Requires-Dist: flax; extra == 'dev'
Requires-Dist: jupyterlab; extra == 'dev'
Requires-Dist: laplace-torch; extra == 'dev'
Requires-Dist: matplotlib; extra == 'dev'
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pyright; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cases; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: torch; extra == 'dev'
Requires-Dist: tox-uv; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs; extra == 'docs'
Requires-Dist: mkdocs-autorefs; extra == 'docs'
Requires-Dist: mkdocs-bibtex; extra == 'docs'
Requires-Dist: mkdocs-gen-files; extra == 'docs'
Requires-Dist: mkdocs-material; extra == 'docs'
Requires-Dist: mkdocstrings; extra == 'docs'
Requires-Dist: mkdocstrings-python; extra == 'docs'
Requires-Dist: mknotebooks; extra == 'docs'
Requires-Dist: pytkdocs-tweaks; extra == 'docs'
Provides-Extra: notebooks
Requires-Dist: flax; extra == 'notebooks'
Requires-Dist: ipywidgets; extra == 'notebooks'
Requires-Dist: optax; extra == 'notebooks'
Requires-Dist: pandas; extra == 'notebooks'
Requires-Dist: skerch; extra == 'notebooks'
Requires-Dist: torch; extra == 'notebooks'
Requires-Dist: torchvision; extra == 'notebooks'
Requires-Dist: tueplots; extra == 'notebooks'
Requires-Dist: wandb; extra == 'notebooks'
Description-Content-Type: text/markdown

<p align="center">
  <img src="./docs/images/laplax_logo.svg" width="541" height= "auto" alt="Laplax Logo"/>
</p>

---
[![Python
3.11+](https://img.shields.io/badge/python-3.11+-green.svg)](https://www.python.org/downloads/release/python-3110/)
[![Test](https://github.com/laplax-org/laplax/actions/workflows/test.yaml/badge.svg)](https://github.com/laplax-org/laplax/actions/workflows/test.yaml) [![Coverage Status](https://coveralls.io/repos/github/laplax-org/laplax/badge.svg?branch=laplax_api)](https://coveralls.io/github/laplax-org/laplax?branch=laplax_api)

## What is `laplax`?
The `laplax` package aims to provide a performant, minimal, and practical implementation of Laplace approximation techniques in [`jax`](https://github.com/google/jax). This package is designed to support a wide range of scientific libraries, initially focusing on compatibility with popular neural network libraries such as [`equinox`](https://github.com/patrick-kidger/equinox), [`flax.linen`](https://github.com/google/flax/tree/main/flax/linen), and [`flax.nnx`](https://github.com/google/flax/tree/main/flax/nnx). Our goal is to create a flexible tool for both practical applications and research, enabling rapid iteration and comparison of new approaches.

## Design Philosophy
The development of `laplax` is guided by the following principles:

- **Minimal Dependencies:** The package only depends on [`jax`](https://github.com/google/jax), ensuring compatibility and ease of integration.

- **Matrix-Vector Product Focus:** The core of our implementation revolves around efficient matrix-vector products. By passing around callables, we maintain a loose coupling between components, allowing for easy interaction with various other packages, including linear operator libraries in [`jax`](https://github.com/google/jax).

- **Performance and Practicality:** We prioritize a performant and minimal implementation that serves practical needs. The package offers a simple API for basic use cases while primarily serving as a reference implementation for researchers to compare new methods or iterate quickly over experiments.

- **PyTree-Centric Structure:** Internally, the package is structured around PyTrees. This design choice allows us to defer materialization until necessary, optimizing performance and memory usage.

## Roadmap and Contributions
We're developing this package in public, and discussions about the roadmap and feature priorities are structured in the [Issues](https://github.com/bmucsanyi/laplax/issues) section. If you're interested in contributing or want to see what's planned for the future, please check them out.
