diff --git a/bibliography/pyautomemory.bib b/bibliography/pyautomemory.bib index 906e1aa..043354c 100644 --- a/bibliography/pyautomemory.bib +++ b/bibliography/pyautomemory.bib @@ -16191,3 +16191,48 @@ @misc{Galan2026 url = {https://arxiv.org/abs/2609.00179}, year = {2026} } + +@misc{Lange2023Nautilus, + author = {Lange, Johannes U.}, + title = {NAUTILUS: boosting Bayesian importance nested sampling with deep learning}, + year = {2023}, + archivePrefix = {arXiv}, + eprint = {2306.16923}, + url = {https://arxiv.org/abs/2306.16923} +} + +@misc{Cabezas2024BlackJAX, + author = {Cabezas, Alberto and Corenflos, Adrien and Lao, Junpeng and Louf, Remi and Carnec, Antoine and Chaudhari, Kaustubh and Cohn-Gordon, Reuben and Coullon, Jeremie and Deng, Wei and Duffield, Sam and Duran-Martin, Gerardo and Elantkowski, Marcin and Foreman-Mackey, Dan and Gregori, Michele and Iguaran, Carlos and Kumar, Ravin and Lysy, Martin and Murphy, Kevin and Orduz, Juan Camilo and Patel, Karm and Wang, Xi and Zinkov, Rob}, + title = {BlackJAX: Composable Bayesian inference in JAX}, + year = {2024}, + archivePrefix = {arXiv}, + eprint = {2402.10797}, + url = {https://arxiv.org/abs/2402.10797} +} + +@misc{Buchner2021UltraNest, + author = {Buchner, Johannes}, + title = {UltraNest -- a robust, general purpose Bayesian inference engine}, + year = {2021}, + archivePrefix = {arXiv}, + eprint = {2101.09604}, + url = {https://arxiv.org/abs/2101.09604} +} + +@misc{Karamanis2022PocoMC, + author = {Karamanis, Minas and Nabergoj, David and Beutler, Florian and Peacock, John A. and Seljak, Uros}, + title = {pocoMC: A Python package for accelerated Bayesian inference in astronomy and cosmology}, + year = {2022}, + archivePrefix = {arXiv}, + eprint = {2207.05660}, + url = {https://arxiv.org/abs/2207.05660} +} + +@misc{Hoffman2011NUTS, + author = {Hoffman, Matthew D. and Gelman, Andrew}, + title = {The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo}, + year = {2011}, + archivePrefix = {arXiv}, + eprint = {1111.4246}, + url = {https://arxiv.org/abs/1111.4246} +} diff --git a/wiki/methods/concepts/sampler-candidate-curation.md b/wiki/methods/concepts/sampler-candidate-curation.md new file mode 100644 index 0000000..392db6d --- /dev/null +++ b/wiki/methods/concepts/sampler-candidate-curation.md @@ -0,0 +1,101 @@ +--- +title: Sampler candidate curation +type: concept +topics: [samplers, literature, inference] +sources: + - Speagle 2020 — dynesty + - Lange 2023 — Nautilus + - Cabezas et al. 2024 — BlackJAX + - Buchner 2021 — UltraNest + - Karamanis et al. 2022 — pocoMC +status: drafted +--- + +# Sampler candidate curation + +## TL;DR + +A sampler paper establishes a method and reported experiments, not its suitability +for an untested likelihood. Keep a bounded shortlist with public paper/code +provenance, explicit requirements, a dated integration check and unanswered +benchmark questions. Curate on demand; literature ingestion never submits compute. + +## What it is + +A candidate is a hypothesis for investigation. This initial selection spans +existing evidence baselines, gradient posterior sampling and two alternative +evidence approaches. It is deliberately non-exhaustive and carries no ranking. + +## Why it matters + +Posterior sampling, evidence estimation and optimization answer different +questions. Compare only methods that deliver the required output. A library +wrapper, an installed optional dependency and demonstrated scientific performance +are three distinct facts. + +## Key results from the literature + +- dynesty offers static/dynamic evidence and posterior estimation, making it an + allocation baseline ([[sources-samplers#dynesty]]). +- Nautilus learns proposals for importance nested sampling; published advantages + motivate a test, with unseen-mode coverage still a benchmark question + ([[sources-samplers#nautilus-2023]]). +- BlackJAX supplies composable JAX inference; NUTS adapts gradient trajectories. + Gradient compatibility, initialization and chain diagnostics must be checked + ([[sources-samplers#blackjax-nuts-2024]], + [[sources-samplers#hoffman-and-gelman-2011-nuts]]). +- UltraNest prioritizes reliable inference for challenging shapes. Repeated-seed + evidence checks would test that promise locally + ([[sources-samplers#ultranest-2021]]). +- pocoMC uses flow preconditioning; correlated and multimodal targets motivate + investigating population coverage and training cost + ([[sources-samplers#pocomc-2022]]). + +The coverage checks and benchmark design above are investigation proposals, +not claims that these papers prove PyAutoFit correctness or speed. + +## Dated integration check + +On 2026-10-08, PyAutoFit revision +`8bb5f6e8fab809d47f785e9f2ac8289b3e3c9e3e` exported `DynestyStatic`, +`DynestyDynamic`, `Nautilus` and `BlackJAXNUTS` from `autofit/__init__.py`. +The search tree contained no UltraNest or pocoMC wrapper. This was a read-only +source inspection, not an import, install, run or completeness guarantee. +Benchmark status for this shortlist is **not assessed**; consult actual project +evidence separately rather than interpreting this status as “never run.” + +## On-demand Memory to Insight handoff + +1. For missed literature, reuse Memory's existing harvest: + `python scripts/catch_up.py --scope interests --topic Stats --since YYYY-MM-DD --json`. + Retain its source counts, cutoff, dropped-in-memory count and warnings, + including truncated or unavailable arXiv coverage. Harvest is optional; + a requested named paper can go directly to verification. This bounded + initial survey verified named records directly and did not run a gap-fill. +2. Follow the existing catch-up tier curation and human filing confirmation + when invoking that workflow. Verify the primary record and official code; + deduplicate by DOI/arXiv identity, file compact claim support and canonical + bibliography metadata, then run `make validate`. +3. Prepare an independent public-source-derived candidate JSON for Insight. + Each record has `id`, `name`, `family`, `paper_url`, `code_url`, + `expected_uses`, `limitations`, `integration_status`, `benchmark_status`, + `reviewed_at` and `investigation_prompt`. Use stable kebab-case identifiers, + HTTPS provenance, string-array uses/limitations and an ISO review date. + Investigation prompts request a bounded comparison with output accuracy, + repeated seeds, configuration/version capture and total cost including + compilation or training. They are proposals, not executable orders. +4. Insight owns review/publication of its independent candidate list. Export + no Memory wiki excerpts, private references, archival filenames or local + paths. The public paper and official code must support the published text + without Memory access. Literature records do not set integration or science + acceptance; recheck the actual PyAutoFit roster when refreshing them. + +No autonomous scan or schedule is introduced. Any benchmark launch requires the +separate campaign workflow and its authorization. + +## See also + +- [[nested-sampling]] +- [[hamiltonian-monte-carlo]] +- [[sampler-benchmarks]] +- [Existing catch-up procedure](../../../skills/catch_up/catch_up.md) diff --git a/wiki/methods/index.md b/wiki/methods/index.md index 1c275a9..949e8f9 100644 --- a/wiki/methods/index.md +++ b/wiki/methods/index.md @@ -13,6 +13,9 @@ should use this wiki. ## Samplers +- [[sampler-candidate-curation]] — bounded source-backed shortlist and on-demand + public-provenance handoff to Insight; no scheduled scan. + - [[mcmc-samplers]] — Metropolis-Hastings, ensemble samplers, Eryn. - [[hamiltonian-monte-carlo]] — NUTS, BlackJAX, NumPyro, Stan; gradients via JAX. diff --git a/wiki/methods/log.md b/wiki/methods/log.md index f9d0e84..5edfc71 100644 --- a/wiki/methods/log.md +++ b/wiki/methods/log.md @@ -123,3 +123,12 @@ references became `[[seed-…]]`, and each index gained one *Seed (unverified imports)* line saying what they are. Promoting an entry means verifying the paper, adding its canonical key to `../../bibliography/pyautomemory.bib`, and moving the section into the matching `sources/` page. + + +## 2026-10-08 — Bounded sampler literature curation + +Verified primary public records for dynesty, Nautilus, BlackJAX, NUTS, UltraNest +and pocoMC. Resolved the dynesty source section to existing `Speagle2020`; added +five canonical entries and compact claim support. Added candidate curation and +an on-demand public-provenance Insight handoff using existing catch-up machinery. +Integration is a dated source-roster check; no benchmark verdict, install or run. diff --git a/wiki/methods/sources/samplers.md b/wiki/methods/sources/samplers.md index 1c5a474..b3f1f6e 100644 --- a/wiki/methods/sources/samplers.md +++ b/wiki/methods/sources/samplers.md @@ -2,7 +2,7 @@ title: Sources — samplers type: sources topics: [samplers, mcmc, nested-sampling] -status: stub +status: drafted --- # Sources: samplers @@ -78,18 +78,19 @@ hopping, and the libraries that implement them. ## Dynesty -**Canonical BibTeX key:** TODO — ambiguous candidates: `Dynesty`, `Speagle2020`, `dynesty`. -**Reference:** TODO — resolve the paper identity against `bibliography/pyautomemory.bib` and an authoritative public record. -**Concepts:** [[nested-sampling]] +**Canonical BibTeX key:** `Speagle2020` +**Reference:** [arXiv:1904.02180](https://arxiv.org/abs/1904.02180); doi:10.1093/mnras/staa278. +**Concepts:** [[nested-sampling]], [[sampler-candidate-curation]] -**Supports TODO:** -- TODO — not migrated: canonical key is ambiguous, so claim support must be verified after key resolution. +**Supports:** +- Static and dynamic nested sampling estimate posteriors and evidence. +- Dynamic allocation adjusts effort between posterior and evidence estimation. -**Use when TODO:** -- TODO — use only after the canonical key and paper identity are resolved. +**Use when:** +- Explaining dynesty's allocation strategy or choosing an evidence baseline. -**Do not use for TODO:** -- Evidence until the ambiguous canonical key is resolved. +**Do not use for:** +- Assuming a winner on an untested likelihood or current integration status. ## emcee @@ -114,3 +115,79 @@ hopping, and the libraries that implement them. - [[nested-sampling]] - [[hamiltonian-monte-carlo]] - [[sources-probabilistic-programming]] + +## Nautilus — 2023 + +**Canonical BibTeX key:** `Lange2023Nautilus` +**Reference:** [arXiv:2306.16923](https://arxiv.org/abs/2306.16923); [official code](https://github.com/johannesulf/nautilus). +**Concepts:** [[sampler-candidate-curation]] + +**Supports:** +- Combines importance nested sampling with neural-network regression for posterior and evidence estimation. + +**Use when:** +- Evidence and posterior estimation for expensive gradient-free likelihoods. + +**Do not use for:** +- A PyAutoFit performance ranking, evidence calibration claim or production acceptance. + +## BlackJAX NUTS — 2024 + +**Canonical BibTeX key:** `Cabezas2024BlackJAX` +**Reference:** [arXiv:2402.10797](https://arxiv.org/abs/2402.10797); [official code](https://github.com/blackjax-devs/blackjax). +**Concepts:** [[sampler-candidate-curation]] + +**Supports:** +- Provides composable JAX inference kernels operating on target log densities; the library includes NUTS. + +**Use when:** +- Posterior refinement for differentiable JAX targets. + +**Do not use for:** +- A PyAutoFit performance ranking, evidence calibration claim or production acceptance. + +## UltraNest — 2021 + +**Canonical BibTeX key:** `Buchner2021UltraNest` +**Reference:** [arXiv:2101.09604](https://arxiv.org/abs/2101.09604); [official code](https://github.com/JohannesBuchner/UltraNest). +**Concepts:** [[sampler-candidate-curation]] + +**Supports:** +- Provides parameter estimation and model comparison for non-Gaussian and multimodal spaces, with resumable parallel runs. + +**Use when:** +- Independent evidence cross-check for non-Gaussian and multimodal targets. + +**Do not use for:** +- A PyAutoFit performance ranking, evidence calibration claim or production acceptance. + +## pocoMC — 2022 + +**Canonical BibTeX key:** `Karamanis2022PocoMC` +**Reference:** [arXiv:2207.05660](https://arxiv.org/abs/2207.05660); [official code](https://github.com/minaskar/pocomc). +**Concepts:** [[sampler-candidate-curation]] + +**Supports:** +- Uses normalizing-flow preconditioning for nonlinear and multimodal posterior inference and model comparison. + +**Use when:** +- Posterior and evidence investigation for strongly correlated nonlinear targets. + +**Do not use for:** +- A PyAutoFit performance ranking, evidence calibration claim or production acceptance. + +## Hoffman and Gelman 2011 — NUTS + +**Canonical BibTeX key:** `Hoffman2011NUTS` +**Reference:** [arXiv:1111.4246](https://arxiv.org/abs/1111.4246). +**Concepts:** [[hamiltonian-monte-carlo]], [[sampler-candidate-curation]] + +**Supports:** +- NUTS chooses HMC trajectory lengths using a U-turn stopping criterion. +- Dual averaging adapts the step size. + +**Use when:** +- Explaining the gradient sampler's algorithm, distinct from its BlackJAX implementation. + +**Do not use for:** +- An evidence estimator or proof of multimodal coverage.