Metadata-Version: 2.1
Name: lsqfitgp
Version: 0.21
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.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy >=1.22
Requires-Dist: scipy >=1.10
Requires-Dist: jax >=0.4.26
Requires-Dist: jaxlib >=0.4.26
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: 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'
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.22 ; extra == 'tests-old'
Requires-Dist: scipy ==1.10 ; extra == 'tests-old'
Requires-Dist: gvar ==12.0 ; extra == 'tests-old'
Requires-Dist: jax ==0.4.26 ; extra == 'tests-old'
Requires-Dist: jaxlib ==0.4.26 ; 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'

[![PyPI](https://img.shields.io/pypi/v/lsqfitgp)](https://pypi.org/project/lsqfitgp/)

# 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)
    (Bayes 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.9 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.
