You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PyBNF uses onePrior object for two distinct roles (see the Prior glossary entry): the Bayesian / objective prior that samplers add to the posterior, and the initial-sampling distribution that optimizers and samplers draw their start points from (sample_value, the latin-hypercube seeding). These are different concepts:
the objective prior regularizes the fit / is the Bayesian prior in the posterior;
the initialization distribution seeds the search and the MCMC chains.
Standard practice — and PEtab — keeps them separate. PEtab v1 had distinct objectivePrior* and initializationPrior*; PEtab v2 dropped initializationPrior* and uses the single prior for the objective only, initializing from the bounds. Either way, the two roles are not the same object, and PyBNF conflating them has real consequences.
Convergence diagnostics. R-hat / ESS (ADR-0009, the Vehtari et al. 2021 conventions) assume over-dispersed initial points across chains to detect non-convergence. Initializing from a tight prior under-disperses the starts, weakening R-hat. A deliberately over-dispersed (or bounds-uniform) initialization is better practice here.
Optimizers. Seeding a global optimizer from a concentrated prior can under-explore versus a bounds-spanning start.
Direction (for discussion / ADR)
Introduce an explicit Initialization Distribution concept, defaulting to today's behavior (draw from the prior) for backward compatibility, but overridable — e.g. uniform-over-bounds, or an over-dispersed variant of the prior.
Decide the config surface (global vs per-parameter) and how it threads through sample_value / the latin-hypercube seeding / the samplers' start-point generation.
For the importer, map PEtab's initialization semantics (bounds-uniform in v2) onto it, so an imported problem starts where PEtab intends.
Scope & priority
Touches the Prior / FreeParameter sampling surface and the samplers'/optimizers' start-point generation.
Problem
PyBNF uses one
Priorobject for two distinct roles (see the Prior glossary entry): the Bayesian / objective prior that samplers add to the posterior, and the initial-sampling distribution that optimizers and samplers draw their start points from (sample_value, the latin-hypercube seeding). These are different concepts:Standard practice — and PEtab — keeps them separate. PEtab v1 had distinct
objectivePrior*andinitializationPrior*; PEtab v2 droppedinitializationPrior*and uses the single prior for the objective only, initializing from the bounds. Either way, the two roles are not the same object, and PyBNF conflating them has real consequences.Consequences
normalobjective prior makes PyBNF initialize from that normal (start points concentrated near the mean), whereas PEtab/standard practice initializes uniformly within the bounds. The target posterior is identical, but the initialization differs — and arguably for the worse (below).Direction (for discussion / ADR)
sample_value/ the latin-hypercube seeding / the samplers' start-point generation.Scope & priority
Prior/FreeParametersampling surface and the samplers'/optimizers' start-point generation.objfuncto per-observable selection (PEtab v2 prerequisite) #410 / Truncated/bounded priors: allow reflecting bounds on unbounded-support families (Normal/Laplace/log-*) (PEtab v2 prerequisite) #411 — this is a faithfulness + diagnostics-quality improvement, not a hard v2 blocker (the imported posterior is already correct; only the starting points differ). But it is a real, deliberate design gap, not an accident.