Metadata-Version: 2.4
Name: lsqfitgp
Version: 0.21.1
Summary: A general purpose Gaussian process regression module
Author-email: Giacomo Petrillo <info@giacomopetrillo.com>
Project-URL: Homepage, https://github.com/Gattocrucco/lsqfitgp
Project-URL: Bug Tracker, https://github.com/Gattocrucco/lsqfitgp/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.10
Requires-Dist: jax>=0.4.35
Requires-Dist: jaxlib>=0.4.35
Requires-Dist: gvar>=12.0
Provides-Extra: dev
Requires-Dist: numpy; extra == "dev"
Requires-Dist: scipy; extra == "dev"
Requires-Dist: matplotlib; extra == "dev"
Requires-Dist: gvar; extra == "dev"
Requires-Dist: lsqfit; extra == "dev"
Requires-Dist: jax; extra == "dev"
Requires-Dist: jaxlib; extra == "dev"
Requires-Dist: sphinx; extra == "dev"
Requires-Dist: myst-parser; extra == "dev"
Requires-Dist: numpydoc; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: coverage[toml]; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: ipython; extra == "dev"
Requires-Dist: mpmath; extra == "dev"
Requires-Dist: pandas; extra == "dev"
Requires-Dist: polars[pyarrow]; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: statsmodels; extra == "dev"
Requires-Dist: tqdm; extra == "dev"
Requires-Dist: tabulate; extra == "dev"
Requires-Dist: appnope; extra == "dev"
Provides-Extra: tests
Requires-Dist: numpy; extra == "tests"
Requires-Dist: scipy; extra == "tests"
Requires-Dist: gvar; extra == "tests"
Requires-Dist: jax; extra == "tests"
Requires-Dist: jaxlib; extra == "tests"
Requires-Dist: pytest; extra == "tests"
Requires-Dist: coverage[toml]; extra == "tests"
Requires-Dist: mpmath; extra == "tests"
Requires-Dist: pandas; extra == "tests"
Requires-Dist: polars[pyarrow]; extra == "tests"
Requires-Dist: statsmodels; extra == "tests"
Provides-Extra: tests-old
Requires-Dist: numpy==1.24; extra == "tests-old"
Requires-Dist: scipy==1.10; extra == "tests-old"
Requires-Dist: gvar==12.0; extra == "tests-old"
Requires-Dist: jax==0.4.35; extra == "tests-old"
Requires-Dist: jaxlib==0.4.35; extra == "tests-old"
Requires-Dist: pytest; extra == "tests-old"
Requires-Dist: coverage[toml]; extra == "tests-old"
Requires-Dist: mpmath; extra == "tests-old"
Requires-Dist: pandas<1.5; extra == "tests-old"
Requires-Dist: polars==1.0.0; extra == "tests-old"
Requires-Dist: pyarrow==10.0.1; extra == "tests-old"
Requires-Dist: statsmodels; extra == "tests-old"
Provides-Extra: docs
Requires-Dist: numpy; extra == "docs"
Requires-Dist: scipy; extra == "docs"
Requires-Dist: matplotlib; extra == "docs"
Requires-Dist: gvar; extra == "docs"
Requires-Dist: lsqfit; extra == "docs"
Requires-Dist: jax; extra == "docs"
Requires-Dist: jaxlib; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: numpydoc; extra == "docs"
Requires-Dist: coverage[toml]; extra == "docs"
Requires-Dist: polars; extra == "docs"
Requires-Dist: pandas; extra == "docs"
Requires-Dist: statsmodels; extra == "docs"
Requires-Dist: pyarrow; extra == "docs"
Requires-Dist: tqdm; extra == "docs"
Requires-Dist: tabulate; extra == "docs"
Dynamic: license-file

[![PyPI](https://img.shields.io/pypi/v/lsqfitgp)](https://pypi.org/project/lsqfitgp/)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.13930792.svg)](https://doi.org/10.5281/zenodo.13930792)


# lsqfitgp

Python module to do inference with Gaussian processes. Features:

  * Based on [JAX](https://github.com/google/jax).
  * Interoperates with [gvar](https://github.com/gplepage/gvar) and
    [lsqfit](https://github.com/gplepage/lsqfit) to facilitate inexpert users.
  * Recursively structured covariates.
  * Apply arbitrary linear transformations to the processes, finite and
    infinite.
  * Small [PPL based on Gaussian
    copulas](https://gattocrucco.github.io/lsqfitgp/docs/reference/copula.html)
    to specify the hyperparameters prior.
  * [Rich
    collection](https://gattocrucco.github.io/lsqfitgp/docs/reference/kernelsref.html)
    of covariance functions.
  * Good GP versions of
    [BART](https://gattocrucco.github.io/lsqfitgp/docs/reference/bayestree.html#lsqfitgp.bayestree.bart)
    (Bayesian Additive Regression Trees) and
    [BCF](https://gattocrucco.github.io/lsqfitgp/docs/reference/bayestree.html#lsqfitgp.bayestree.bcf)
    (Bayesian Causal Forests).
  
See [this report](https://www.giacomopetrillo.com/scuola/gppdf.pdf) for the
theory behind lsqfitgp.

## Installation

Python >= 3.10 required. Then:

```
$ pip install lsqfitgp
```

## Documentation

The complete manual is available online at
[gattocrucco.github.io/lsqfitgp/docs](https://gattocrucco.github.io/lsqfitgp/docs).
All the code is documented with docstrings, so you can also use the Python help
system directly from the shell:

```python
>>> import lsqfitgp as lgp
>>> help(lgp)
>>> help(lgp.something)
```

or, in an IPython shell/Jupyter notebook/Spyder IDE, use the question mark
shortcut:

```
In [1]: lgp?

In [2]: lgp.something?
```

## Similar libraries

  * [stheno](https://github.com/wesselb/stheno)
  * [tinygp](https://github.com/dfm/tinygp)
  * [GPJax](https://github.com/JaxGaussianProcesses/GPJax)

See also [Comparison of Gaussian process Software](https://en.wikipedia.org/wiki/Comparison_of_Gaussian_process_software)
on Wikipedia.

## License

This software is released under the [GPL](https://www.gnu.org/licenses/).
Amongst other things, it implies that, if you release an adaptation of this
software, [or even a program just importing it as external
library](https://www.gnu.org/licenses/gpl-faq.html.en#IfLibraryIsGPL), you
have to release its code as open source with a license at least as strong as
the GPL.
