Metadata-Version: 2.4
Name: kalman_inversion_lib
Version: 1.0.2
Summary: The package implements various Kalman Inversion algorithms in Python.
Author-email: Konstantin Ibadullaev <konstantin.ibadullaev.post@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/K-Ibadullaev/kalman-inversion-lib.git
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=2.0.0
Requires-Dist: scipy>=1.12.0
Requires-Dist: tqdm>=4.3.0
Requires-Dist: joblib>=1.6.0
Dynamic: license-file

# KALMAN-INVERSION-LIB PACKAGE
## Intro
Welcome to the page of the **kalman-inversion-lib** package! This package contains Python implementations of Kalman Inversion algorithms.

**The package is currently under development**. The project structure undergoes changes.

Currently, the following algorithms are available:
- Ensemble Kalman Inversion, *EKI*
- Unscented Kalman Inversion, *UKI*
- Ensemble Kalman Sampler, *EKS*
- Gradient-Free ALDI, *ALDI*

The documentation is available for each class and its methods via **help()**, e.g. ```python help(EnsembleKalmanInversion)```.
Later Wiki pages with a more thorough description for each algorithm are going to be published 

## Installation
```shell
$ python -m pip install kalman-inversion-lib
```

## How to use
The directory **examples** contains Jupyter notebooks, which demonstrate the workflow for each available algorithm.
For some notebooks one might need to install extra packages, e.g. **ipympl** for interactive plots.

**NEW**
We enabled parallel computation of the forward-model evaluations using the **joblib** package. Just specify the 'n_jobs', 'prefer' or 'backend' arguments, as it is recommended for the Parallel class on https://joblib.readthedocs.io  . You can also pass arguments as a dictionary '**backend_kwargs' to the constructor method of a Kalman algorithm.

## List of the core packages
- NumPy https://numpy.org/
- SciPy https://scipy.org/
- tqdm  https://tqdm.github.io/
- joblib https://joblib.readthedocs.io/


## References
The list below contains references to the articles and insightful resources about Kalman Inversion methods.

- Daniel Zhengyu Huang, Tapio Schneider, and Andrew M. Stuart. "Iterated Kalman Methodology For Inverse Problems / Unscented Kalman Inversion."
- Daniel Zhengyu Huang, Jiaoyang Huang, Sebastian Reich, and Andrew M. Stuart. "Efficient Derivative-free Bayesian Inference for Large-Scale Inverse Problems."
- Alfredo Garbuno-Inigo, Nikolas Nüsken and Sebastian Reich. "Affine Invariant Interacting Langevin Dynamics for Bayesian Inference."
- Alfredo Garbuno-Inigo, Franca Hoffmann, Wuchen Li, and Andrew M. Stuart. "Interacting Langevin Diffusions: Gradient Structure and Ensemble Kalman Sampler."
- Marco Iglesias and Yuchen Yang 2021 Inverse Problems 37. "Adaptive regularisation for ensemble Kalman inversion."
- https://github.com/PKU-CMEGroup/InverseProblems.jl/tree/master
- https://github.com/PKU-CMEGroup/InverseProblems.jl/blob/master/Lectures/KalmanInversionPartII.ipynb

## Acknowledgements
This package is developed as a part of the research project "Intelligent Geosystems" (100693905) supported by ESF funding

![alt text](https://github.com/K-Ibadullaev/kalman-inversion-lib/blob/main/ESFICON.png)
