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
Design captured in ADR-0028 (docs/adr/0028-petab-aligned-config-explicit-experiments.md, Status: Proposed, commit c1279e3). This is the config-language sibling of the PEtab exporter work (#407 umbrella, #422 exporter chunk, #420 BnglModel oracle).
Problem
PyBNF links a dataset to the simulation it scores against implicitly, through filenames: every .exp stem must equal a BNGL action's Suffix or PyBNF errors (config.py:764, "Action not specified for X.exp"). Consequences:
Replicates are impossible without surgery — N replicate files for one simulation would all need the same <suffix>.exp name and collide; users must pre-average/splice.
A data file's name is load-bearing, not descriptive.
The suffix convention is opaque, even to experienced users.
Simulation times/doses are derived from the data (PEtab-style). A consequence: the BNGL begin actions block is no longer needed for fitting — PyBNF synthesizes the simulate/parameter_scan/bifurcate from the experiment options + the data's independent-variable values; the experiment name replaces the Suffix as the simulation's identity.
Observables still inferred from .exp column headers, with an optional observable: x, column: y override.
Omissions allowed wherever unambiguous (model: on a condition/experiment when there's one model; condition: on a wildtype experiment; type: when inferable from the indep-var header).
Backward compatible: the legacy syntax (model = … : …, mutant = …, filename→suffix) is syntactically distinct and keeps its current meaning; a job uses one style or the other.
Implementation outline
Parser grammar for the new label: lines (pyparsing), alongside the legacy grammar.
Config loading: build conditions/experiments/data from the new keys.
Action synthesis: generate the BNG action from experiment options + data-derived times/doses.
Design captured in ADR-0028 (
docs/adr/0028-petab-aligned-config-explicit-experiments.md, Status: Proposed, commitc1279e3). This is the config-language sibling of the PEtab exporter work (#407 umbrella, #422 exporter chunk, #420 BnglModel oracle).Problem
PyBNF links a dataset to the simulation it scores against implicitly, through filenames: every
.expstem must equal a BNGL action's Suffix or PyBNF errors (config.py:764, "Action not specified for X.exp"). Consequences:<suffix>.expname and collide; users must pre-average/splice.experimentId.Proposed design (1:1 with PEtab v2)
Four explicit
label:concepts in the.conf, each mapping to a PEtab v2 object, with links stated rather than filename-derived:model:condition:(+perturbations:)experiment:condition:(default wildtype); carries itsdata:data:filesExample:
Key decisions
begin actionsblock is no longer needed for fitting — PyBNF synthesizes thesimulate/parameter_scan/bifurcatefrom the experiment options + the data's independent-variable values; the experiment name replaces the Suffix as the simulation's identity..expcolumn headers, with an optionalobservable: x, column: yoverride.model:on a condition/experiment when there's one model;condition:on a wildtype experiment;type:when inferable from the indep-var header).model = … : …,mutant = …, filename→suffix) is syntactically distinct and keeps its current meaning; a job uses one style or the other.Implementation outline
label:lines (pyparsing), alongside the legacy grammar.Loose ends to settle (parked in the ADR)
_SD/ per-observable noise (noise_model, Per-observable noise models: lift the single globalobjfuncto per-observable selection (PEtab v2 prerequisite) #410/ADR-0021) routing — tackle first, it's the one that could complicate the clean picture.condition: model:semantics (needs the multi-model exporter, deferred in PEtab v2 exporter: conditions/experiments chunk (mutants→conditions, suffix→experiments, dose-response) #422).See ADR-0028 for full detail and the considered/rejected alternatives.