Skip to main content

Modeling and inference using partially observed Markov process (POMP) models

Project description

Project Status: Active codecov Documentation Status PyPI version

Pypomp

Pypomp is a Python/JAX library for modeling and inference using partially observed Markov process (POMP) models, also called state-space models or hidden Markov models.


🚀 Quick Links

📖 Read the Documentation 🎓 Introductory Tutorial
🏫 SBIED Course (Practical Modeling) 📊 Quantitative Benchmarks

Installation

Install Pypomp using pip:

pip install pypomp

📝 Note: Pypomp is powered by JAX for GPU acceleration and just-in-time (JIT) compilation. To configure JAX for GPU computing, please follow the JAX Installation Guide.

Quick Start

Get started quickly by running a particle filter on a built-in Linear Gaussian model:

import jax
import pypomp as pp

# 1. Initialize a built-in Linear Gaussian model with 50 time steps
model = pp.models.LG(T=50)

# 2. Run the particle filter with J=1000 particles
key = jax.random.key(1)
model.pfilter(J=1000, key=key)

# 3. Retrieve and print the estimated log-likelihood using .results()
results_df = model.results()
log_lik = results_df["logLik"].iloc[0]
print(f"Log-Likelihood: {log_lik:.4f}")

Expected Users

  1. Scientists wanting to perform data analysis on a dynamic system via a POMP model.

  2. Researchers wishing to develop novel inference methodology. Pypomp provides an abstract representation of POMP models that enables researchers to develop, test, and deploy novel algorithms applicable to arbitrary nonlinear non-Gaussian POMP models.

  3. Researchers familiar with the pomp R package. Pypomp extends R-pomp by supporting GPU computing, automatic differentiation, and just-in-time compilation. Conceptually, Pypomp is similar to R-pomp, and so case studies listed in the R-pomp package bibliography are pertinent.

Key Features

  1. State & Parameter Inference: Parameter estimation, model evaluation, and latent state estimation for nonlinear, non-Gaussian POMP models via the particle filter.

  2. Differentiable Particle Filtering: Gradient descent using a new particle filter gradient estimate. This provides state-of-the-art simulation-based maximum likelihood and Bayesian inference.

  3. JAX-Backed Performance: Leverages JAX to provide GPU support, automatic differentiation, and just-in-time compilation.

Governance and Contributions

The Pypomp library is run by the Pypomp organization.

All contributions are welcome. Please review our Contributing Guide before submitting pull requests or raising issues.

For governance details, you can contact the core development team or refer to the pypomp governance profile.

📚 Citation

If you use Pypomp in your research, please cite it as:

@software{pypomp2024github,
  author  = {Aaron Abkemeier and Jun Chen and Edward Ionides and Jesse Wheeler and Kevin Tan},
  title   = {Pypomp},
  url     = {https://github.com/pypomp/pypomp},
  version = {0.4.7.1},
  year    = {2026}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypomp-0.4.7.1.tar.gz (3.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypomp-0.4.7.1-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

Details for the file pypomp-0.4.7.1.tar.gz.

File metadata

  • Download URL: pypomp-0.4.7.1.tar.gz
  • Upload date:
  • Size: 3.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypomp-0.4.7.1.tar.gz
Algorithm Hash digest
SHA256 6b77387038c04f33de64cb9024696f2977d65855526fafd221fe5f819d50ef2d
MD5 4748e8f58c618b7a4e7943edd1f9462f
BLAKE2b-256 0d5359b5fe3b22d0a246e5d6ba55325738cdaf481840e8c48c5a1a18fec5c0d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypomp-0.4.7.1.tar.gz:

Publisher: publish.yml on pypomp/pypomp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pypomp-0.4.7.1-py3-none-any.whl.

File metadata

  • Download URL: pypomp-0.4.7.1-py3-none-any.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pypomp-0.4.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ba2482f58e4aab8daa8f7faf946d28e68bc47fb5051481e88889ca63ef08d6b4
MD5 29ee93490cefa74c4a125b85637703d4
BLAKE2b-256 df54d09be3d08f265800facf9a120807c9a12b7b74b18ee57f5531df79f879d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pypomp-0.4.7.1-py3-none-any.whl:

Publisher: publish.yml on pypomp/pypomp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page