Normal
Beta
Gamma
StudentT
Exponential
HalfNormal
LogNormal
Cauchy
Laplace
Logistic
Weibull
HalfStudentT
ChiSquared
InverseGamma
Kumaraswamy
Use it in your own project — one file, no build step
<script type="module">
import { beta } from "https://williambdean.github.io/modist/latest/modist.js";
const w = beta(document.getElementById("prior"), { alpha: 1, beta: 3 });
w.onChange(p => console.log(p)); // every drag
</script>
Pin a release for reproducible, cache-stable URLs (the bundle is immutable for a year):
<script type="module">
import { gamma, studentT } from
"https://cdn.jsdelivr.net/gh/williambdean/modist@v0.7.0/dist/modist.js";
</script>
Use it in Python — marimo or Jupyter
Same widgets, from a notebook. w.value is a live, plain-dict
readout of the current params — it changes on every drag — and
w.scipy / w.pymc are reactive
adapters: they rebuild from the current params on every access, so they
always reflect where you've left the curve.
import marimo as mo
import modist as md
w = mo.ui.anywidget(md.Normal()) # or Beta() / Gamma() / StudentT()
w # drag the density curve
w.value # {'mu': 0.0, 'sigma': 1.0} — live params, plain dict
import pymc as pm
dist = pm.Normal.dist(**w.value) # splat the live params into the constructor
w.scipy # reactive scipy.stats.norm — CDF, moments, sampling
w.pymc # reactive pm.Normal.dist(...) — drops into any pm.Model
uv add modist # then slice w.scipy or pm.X.dist(**w.value)