PyEst: Adaptive Gaussian Mixture State Estimation
Not pytest: PyEst is a Python library for adaptive Gaussian mixture state estimation. For the Python test framework, see pytest.
Basic Usage
Import the gm module of PyEst as well as numpy and matplotlib
import numpy as np
import matplotlib.pyplot as plt
import pyest.gm as gm
Create a three-mixand two-dimensional Gaussian mixture:
# mixand means (nc,nx)
m = np.array([[0,0], [1,2], [0,-1]])
# mixand covariance matrices (nc,nx,nx)
P = np.array([[[1,0], [0,1]],
[[2, 0.5], [0.5,3]],
[[0.5, -0.1], [-0.1, 1]]])
# mixand weights (nc,)
w = gm.equal_weights(3)
# contruct the Gaussian mixture
p = gm.GaussianMixture(w, m, P)
Compute the mean and covariance of the distribution:
# compute and print the mean
print(p.mean())
# compute and print the covariance
print(p.cov())
Plot the Gaussian mixture
pp, XX, YY = p.pdf_2d()
fig = plt.figure()
ax = fig.add_axes(111)
ax.contourf(XX,YY,pp,100)
Apply a linear transformation to the mixture
dt = 5
F = np.array([[1, dt], [0, 1]])
my = np.array([F@m for m in p.m])
Py = np.array([F@P@F.T for P in p.P])
py = gm.GaussianMixture(p.w, my, Py)
Plot the transformed Gaussian mixture
pp, XX, YY = py.pdf_2d()
fig = plt.figure()
ax = fig.add_axes(111)
ax.contourf(XX,YY,pp,100)
plt.show()
Installation
OS X (zsh)
To install, run
pip install pyest
To install packages needed for running the examples, run
pip install 'pyest[examples]'
OS X (bash), Windows (cmd prompt)
To install, run
pip install pyest
To install packages needed for running the examples, run
pip install pyest[examples]
Citing this work
If you use this package in your scholarly work, please cite the following articles:
J. Kulik and K.A. LeGrand, “Nonlinearity and Uncertainty Informed Moment-Matching Gaussian Mixture Splitting,” https://arxiv.org/abs/2412.00343
@article{legrand2022SplitHappensImprecise,
title = {Split {{Happens}}! Imprecise and Negative Information in {G}aussian Mixture Random Finite Set Filtering},
author = {LeGrand, Keith A. and Ferrari, Silvia},
year = {2022},
month = dec,
journal = {Journal of Advances in Information Fusion},
volume = {17},
number = {2},
eprint = {2207.11356},
primaryclass = {cs, eess},
pages = {78--96},
doi = {10.48550/arXiv.2207.11356},
}
@misc{kulik2024NonlinearityUncertaintyInformed,
title = {Nonlinearity and {{Uncertainty Informed Moment-Matching Gaussian Mixture Splitting}}},
author = {Kulik, Jackson and LeGrand, Keith A.},
year = {2024},
month = nov,
number = {arXiv:2412.00343},
eprint = {2412.00343},
primaryclass = {stat},
publisher = {arXiv},
doi = {10.48550/arXiv.2412.00343},
urldate = {2025-01-01},
archiveprefix = {arXiv}
}
Documentation
For more information about PyEst, please see the documentation.
Metadata
Release files for pyest 0.7.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyest-0.7.2.tar.gz | 62.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyest-0.7.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 112.9 kB
Release files / pyest-0.7.2.tar.gz
| Download URL | pyest-0.7.2.tar.gz |
|---|---|
| Size | 62.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
625c1953e1cc6d78f95c425e203cf254c1a86fc88d53a2a2ce59ef279e27d953
|
|
BLAKE2b-256 checksum How to use checksums |
38ea41e7046b808bb8654cf82046f1d12d4a97b4079336ba7395d2eb735087e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.9
|
Release files / pyest-0.7.2-py3-none-any.whl
| Download URL | pyest-0.7.2-py3-none-any.whl |
|---|---|
| Size | 50.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
daa2e64f2b3481b9718c8e6429f7828c493d5741065e9ad75b61a800cde42d06
|
|
BLAKE2b-256 checksum How to use checksums |
fffb87cae03d7a04f843ad8c32978b70ef22564ebd3605172bd0d63282ff6b07
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.9
|