Skip to main content

Probability Distribution Visualizer

An interactive probability distribution visualizer with a Streamlit web interface, a typed Python API, and toolkits for fitting, Monte Carlo simulation, and statistical testing.

CI Status Tests Docs License
Python Streamlit Docker PRs Welcome

  • Docs (GitHub Pages): https://sanskarpan.github.io/probviz/
  • 16 univariate distributions (10 continuous + 6 discrete) with PDF/PMF, CDF, quantiles, sampling, and full statistics — in the web app and the API.
  • Advanced modules (Python API): multivariate distributions, copulas, mixtures/GMM, distribution fitting, Monte Carlo, and statistical tests.
  • Production-ready: 688-test suite, typed packaging (pyproject.toml), probviz CLI, Docker/Compose, CI with coverage gate, docs + PyPI + Docker release pipelines. See CHANGELOG.md.

Gallery

Normal PDF morphing with sigma Central Limit Theorem convergence Gaussian copula dependence sweep
Beta PDF shape morph Gaussian mixture separation

Top: Normal σ sweep · CLT convergence · Gaussian-copula ρ sweep. Bottom: Beta shape sweep · mixture separation. Regenerate with python examples/generate_media.py.

Quick start

pip install probviz
probviz app

Or from source:

git clone https://github.com/sanskarpan/probviz.git
cd probviz
pip install -r requirements.txt
streamlit run web/app.py

Open http://localhost:8501. Full guide: QUICKSTART.md · docs quickstart.

Install as a package

pip install -e .
probviz app        # launch the UI
probviz test       # run tests
probviz version    # print version

Docker

docker build -t probviz .
docker run -p 8501:8501 probviz
# or
docker compose up --build

What's inside

Area Contents
Univariate Normal, Exponential, Uniform, Beta, Gamma, Chi-Square, Student-t, Weibull, Lognormal, Cauchy · Binomial, Poisson, Geometric, Negative Binomial, Hypergeometric, Discrete Uniform
Multivariate Multivariate Normal, Dirichlet, Multivariate Student-t, Wishart
Copulas Gaussian, Clayton, Gumbel, Student-t + fit_copula_to_data
Mixtures MixtureDistribution (1-D EM), GaussianMixtureModel, BayesianGMM, BIC selection
Fitting DistributionFitter, BayesianEstimator, GoodnessOfFit
Monte Carlo MonteCarloSimulator, VarianceReduction, QuasiMonteCarloSimulator
Tests hypothesis / nonparametric / descriptive dict-returning helpers
Utils validation, preprocessing, plotting, structured logging; src.visualizers facade

Project layout and conventions: docs/architecture.md. API reference: docs/api.md (rendered on the docs site).

Python API

import numpy as np
from src.distributions import NormalDistribution, BinomialDistribution

normal = NormalDistribution(mu=0, sigma=1)
x = np.linspace(-4, 4, 200)
pdf, cdf = normal.pdf(x), normal.cdf(x)
samples = normal.rvs(size=1000, random_state=42)
print(normal.get_statistics())
print(normal.interval(0.95), normal.ppf(0.975))

binomial = BinomialDistribution(n=10, p=0.3)
print(binomial.pdf(np.arange(0, 11)))
from src.fitting import DistributionFitter
from src.monte_carlo import MonteCarloSimulator

fitter = DistributionFitter(samples)
print(fitter.fit_all())

rng = np.random.default_rng(42)
sim = MonteCarloSimulator(random_seed=42)
res = sim.estimate_probability(lambda: rng.normal(0, 1) > 1.0, num_samples=100_000)
print(res["probability"], res["confidence_interval"])

Known limitations (by design)

  • The Streamlit app covers the 16 univariate distributions only; advanced modules are Python-API only.
  • Clayton/Gumbel copula pdf/rvs are bivariate-only (explicit error otherwise).
  • StudentTCopula has no closed-form cdf/pdf; use Monte Carlo via rvs.
  • MixtureDistribution EM assumes 1-D components; use the sklearn GMM wrappers for multivariate mixtures.
  • Cauchy moments are undefined — the API surfaces nan instead of masking it.

Testing

pip install -r requirements-dev.txt
pytest tests/ -q                                  # 688 tests
pytest tests/ -q --cov=src --cov-report=term      # with coverage (gate: 80%)
flake8 src/ tests/ --count --select=E9,F63,F7,F82 --statistics
mypy --config-file=pyproject.toml src/

Contributing

See CONTRIBUTING.md (setup, style, tests, PR checklist), CODE_OF_CONDUCT.md, and SECURITY.md.

License

MIT — see LICENSE. If you use this in research or teaching:

@software{probability_distribution_visualizer,
  title  = {Probability Distribution Visualizer},
  author = {sanskarpan},
  year   = {2026},
  url    = {https://github.com/sanskarpan/probviz}
}

Also see CITATION.cff.

Download files

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

Source Distribution

probviz-1.0.2.tar.gz (121.2 kB view details)

Uploaded Source

Built Distribution

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

probviz-1.0.2-py3-none-any.whl (90.7 kB view details)

Uploaded Python 3

File details

Details for the file probviz-1.0.2.tar.gz.

File metadata

  • Download URL: probviz-1.0.2.tar.gz
  • Upload date:
  • Size: 121.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for probviz-1.0.2.tar.gz
Algorithm Hash digest
SHA256 23a261d3375fbe8652ed570ee6e854a81ce0ef0fabdf6a21fa987ba632000335
MD5 f84a081219070f7dd22e45a3d69ef720
BLAKE2b-256 678bcab9dbca25095f30097f3fc70316d49f16f492045669194a4fba6fb1ef03

See more details on using hashes here.

File details

Details for the file probviz-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: probviz-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 90.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for probviz-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2092a404dbb908dd156561e03561ad9e9ea0f653605d5edfad11099322bf025b
MD5 d5b75f6b12d7f1cf95a142c63bcfc682
BLAKE2b-256 5c3ba6003b6eb09ec88f4b0cd25d3553f7946b30fb87e8ce0acd71a1e720575d

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

This release

1.0.2 This release

2 files

1.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page