Fields / The software landscape
The software landscape¶
Which tools come closest to binference, across fields? This page compares them. The field pages describe what each tool does in its field. The index gives the date of the survey.
Comparison¶
The census found no maintained, general Python package that samples the population’s posterior from an arbitrary likelihood matrix, or from posterior samples. The maintained tools take one field’s data products, stop at point estimates, or are written in R or Julia. The tools that sample the full hierarchical model are paper code.
The table is the one home of each tool’s language, licence and status. A dash means the census recorded nothing.
tool |
field |
language |
licence |
status |
uncertainty on \(\rho\) |
|---|---|---|---|---|---|
photo-\(z\) |
Python |
MIT |
pz-rail-base 2.0.11, September 2026; smoke tests only |
mean-field VB |
|
photo-\(z\) |
Python notebooks |
MIT |
last push 2020 |
Gibbs |
|
photo-\(z\) |
Python |
MIT |
last push 2023 |
Gibbs |
|
photo-\(z\) |
Python 2 |
MIT |
README: “stale”, “a prototype” |
emcee |
|
photo-\(z\) |
Python |
MIT |
last push 2018; PyPI 0.1.5 |
Gibbs; invalid Metropolis |
|
colour–magnitude |
Python, Cython |
MIT |
last commit 2017; never packaged |
Gibbs |
|
densities |
C, Python |
— |
maintained; not on PyPI |
none |
|
densities |
Python |
— |
1.2.3, 2022 |
none |
|
Hess diagrams |
Julia |
MIT |
2.0.0, October 2026 |
Hessian, HMC, MCMC |
|
occurrence rates |
Python |
MIT |
2014 paper code |
slice sampling |
|
occurrence rates |
— |
— |
“not intended to be used by the community” |
— |
|
astronomy |
Python |
GPL/AGPL, inconsistent |
0.6.4, September 2026 |
nested sampling |
|
exoplanets |
Python |
GPL-3 |
1.1.5, 2023; no tests |
bootstrap |
|
distribution functions |
R |
GPL-3 |
last commit 2021 |
— |
|
GW |
Python |
MIT |
1.3.1, December 2025 |
any bilby sampler |
|
GW |
Stan |
MIT |
last commit 2019 |
Stan’s sampler |
|
GW |
JAX, NumPyro |
MIT |
— |
NUTS |
|
GW |
PyTorch, Pyro |
GPL |
not on PyPI; empty test directory |
NUTS |
|
GWInferno |
GW |
— |
— |
not on PyPI |
— |
icarogw |
GW |
— |
— |
not on PyPI |
— |
FIGARO |
GW |
— |
— |
54-line test suite |
— |
unfolding |
C++, ROOT |
BSD-3 |
3.1.0; conda-forge, not PyPI |
propagated errors, toys |
|
TUnfold |
unfolding |
C++, ROOT |
— |
last standalone release 2019 |
— |
unfolding |
Python |
MIT |
last release 2018 |
per-bin errors |
|
unfolding |
Python, PyMC3, Theano |
— |
“no longer actively maintained”; needs |
NUTS |
|
empirical Bayes |
R, C++ |
MIT |
— |
none |
|
empirical Bayes |
R |
GPL (≥ 2) |
needs commercial MOSEK |
none |
|
empirical Bayes |
R |
GPL (≥ 3) |
— |
mean-field VB |
|
empirical Bayes |
R |
GPL (≥ 2) |
active 2026; no tests |
delta method |
|
empirical Bayes |
R |
GPL (≥ 3) |
— |
none for \(g\) |
|
empirical Bayes |
Julia |
MIT |
active 2026; MOSEK or Hypatia |
frequentist intervals |
|
empirical Bayes |
Python |
MIT |
alpha; no tests |
none |
|
empirical Bayes |
Python, JAX |
MIT |
alpha; Python 3.12 only |
none |
|
quantification |
Python |
BSD-3 |
0.2.3, October 2026; 16 test modules |
NUTS; bootstrap regions |
|
mlquantify |
quantification |
Python |
BSD-3 |
— |
bootstrap regions |
quantification, unfolding |
Python |
— |
— |
none |
|
fisheries genetics |
R, C++ |
CC0 |
archived on CRAN, February 2026 |
Gibbs |
|
SPAM, ONCOR |
fisheries genetics |
desktop programs |
— |
legacy |
bootstrap |
sea turtles |
R, C |
GPL |
archived on CRAN, 2014 |
Gibbs |
|
microbial ecology |
Python |
modified BSD |
last PyPI release 2016 |
Gibbs |
|
RNA-seq |
Rust |
BSD-3 |
active 2026 |
bootstrap or Gibbs replicates |
|
RNA-seq |
C++ |
BSD-2 |
active 2026 |
bootstrap |
|
neural |
PyTorch |
none |
one commit, 2020 |
none |
|
neural |
PyTorch notebooks |
MIT |
last touched 2022 |
none |
|
neural |
PyTorch |
MIT |
no packaging, no tests |
none |
|
neural |
R, PyTorch |
— |
no tests |
none |
|
neural |
JAX |
MIT |
needs a Slurm cluster |
none |
|
flows |
JAX |
MIT |
maintained |
— |
|
flows |
PyTorch |
MIT |
maintained |
— |
|
nflows |
flows |
PyTorch |
— |
no release since 2020 |
— |
flow_matching (Meta) |
flows |
PyTorch |
CC BY-NC 4.0, no commercial use |
— |
— |
The guides describe binference’s own inputs, engines, priors and selection.
Notes on the landscape¶
Many tools stop being maintained. CRAN archived rubias because the maintainer’s email bounced. PyFBU stopped working when Theano was discontinued. Several neural repositories have no licence. emcee moved MPI pools and parallel tempering into other packages, because “there aren’t enough resources to maintain” them.
Tests check that code runs, not that intervals cover. RAIL’s summarizer tests are end-to-end smoke tests. Several tools have no tests at all.
Uncertainty is where the tools differ most. Most engines converge to the same maximum, but their error bars mean different things. Mean-field VB under-covers. Convex NPMLE solvers return none. Bootstrap regions measure an estimator’s variability. Gibbs and NUTS sample the exact posterior (Priors on the simplex and inference for mixture weights).
Memory limits the scale. The established remedies merge identical rows (salmon, Empirikos.jl), store sparse matrices (npeb), or compute each likelihood once on fixed bins (Starlight). binference offers the first two (performance guide).
binference’s interface borrows patterns from other scientific Python packages; the design notes list them. The checking guide describes how binference checks a fit.