Not pytest: PyEst is a Python library for adaptive Gaussian mixture state estimation. For the Python test framework, see pytest.
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@[email protected] 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()
To install, run
pip install pyest
To install packages needed for running the examples, run
pip install 'pyest[examples]'
To install, run
pip install pyest
To install packages needed for running the examples, run
pip install pyest[examples]
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}
}
For more information about PyEst, please see the documentation.