@@ -159,6 +159,19 @@ PEtab 2.0.0 is a major update of the PEtab format. The main changes are:
159159 clearer. The ``log10 `` transformation has been removed, since this was mostly
160160 relevant for visualization purposes, and the same effect can be achieved by
161161 rescaling the parameters of the respective (natural) log-distributions.
162+ * The ``observableFormula `` field in the :ref: `v2_observables_table ` must not
163+ contain any observable IDs. This was previously allowed, but it was not
164+ well-defined how to deal with placeholder parameters in this case.
165+ The ``noiseFormula `` field may contain only the observable ID of the
166+ respective observable itself, but no other observable IDs for the same
167+ reason.
168+ * Placeholders for measurement-specific parameters in ``observableFormula ``
169+ and ``noiseFormula `` are now declared using the
170+ ``observablePlaceholders `` and ``noisePlaceholders `` fields in the
171+ :ref: `v2_observables_table `. This replaces the previous
172+ ``observableParameter${n}_${observableId} `` syntax. The new approach is more
173+ explicit and allows for more descriptive and shorter names for the
174+ placeholders.
162175* The visualization table has been removed. The PEtab v1 visualization table
163176 was not well-defined and not widely used. Visualization is handled by the
164177 PEtab Python library which also provides documentation on the respective
@@ -494,24 +507,23 @@ Detailed field description
494507
495508- ``observableParameters `` [NUMERIC, STRING OR NULL, OPTIONAL]
496509
497- This field allows overriding or introducing condition-specific versions of
498- output parameters defined in the observation model. The model can define
499- observables (see below) containing place-holder parameters which can be
500- replaced by condition-specific dynamic or constant parameters. Placeholder
501- parameters must be named `` observableParameter${n}_${observableId} ``
502- with `` n `` ranging from 1 (not 0) to the number of placeholders for the given
503- observable, without gaps.
504- If the observable specified under `` observableId `` contains no placeholders,
505- this field must be empty. If it contains `` n > 0 `` placeholders, this field
506- must hold `` n `` semicolon-separated numeric values or parameter names. No
507- trailing semicolon must be added .
510+ Measurement-specific overrides for placeholder parameters declared in the
511+ observation model.
512+
513+ The :ref: ` observables table < v2_observables_table >` allows marking some
514+ parameters as measurement-specific (see below). Their values for a given
515+ measurement are specified in this column. The values are separated by
516+ semicolons. The order and number of values must match the order and number of
517+ placeholders in the `` observablePlaceholders `` field of the corresponding
518+ observable in the observable table. The values may be
519+ either numeric values or the IDs of parameters from the
520+ :ref: ` parameters table < v2_parameters_table >` .
508521
509522 Different lines for the same ``observableId `` may specify different
510523 parameters. This may be used to account for condition-specific or
511524 batch-specific parameters. This will translate into an extended estimation
512525 parameter vector.
513526
514- All placeholders defined in the observation model must be overwritten here.
515527 If there are no placeholders used, this column may be omitted.
516528
517529- ``noiseParameters `` [NUMERIC, STRING OR NULL, OPTIONAL]
@@ -582,15 +594,23 @@ Detailed field description
582594* ``observableFormula `` [STRING]
583595
584596 Observation function as plain text formula expression.
585- May contain any symbol defined in the SBML model (including model time ``time ``)
586- or parameter table. In the simplest case just an SBML species ID
587- or an ``AssignmentRule `` target. Additionally, any observable ID
588- introduced in the observable table may be referenced, but circular definitions
589- must be avoided.
590597
591- May introduce new parameters of the form ``observableParameter${n}_${observableId} ``,
592- which are overridden by ``observableParameters `` in the measurement table
593- (see description there).
598+ The expression may contain any symbol defined in the model,
599+ the mapping table or the parameter table.
600+ Often, this is just the ID of a state variable.
601+ Furthermore, any parameters introduced through the ``observablePlaceholders ``
602+ field for the given observable may be used (see below).
603+
604+ * ``observablePlaceholders `` [LIST[PETAB_ID], OPTIONAL]
605+
606+ A semicolon-separated list of valid PEtab identifiers that have not been
607+ introduced elsewhere, marking them as placeholders for
608+ measurement-specific parameters.
609+ The actual values for these parameters are specified in the
610+ ``observableParameters `` field of the measurement table.
611+ The ordering and number of values in ``observableParameters `` must match the
612+ ordering and number of placeholders in ``observablePlaceholders ``.
613+ For an example, see the description of ``noisePlaceholders `` below.
594614
595615* ``noiseFormula `` [NUMERIC|STRING]
596616
@@ -603,30 +623,40 @@ Detailed field description
603623 observable.
604624
605625 Alternatively, some formula expression can be provided to specify
606- more complex noise models. The formula may reference any uniquely identifiable
607- model entity with PEtab-compatible identifier or any observable ID
608- specified in the observable table.
609-
610- A noise model which accounts for relative and
611- absolute contributions could, e.g., be defined as::
612-
613- noiseParameter1_observable_pErk + noiseParameter2_observable_pErk * observable_pErk
614-
615- with ``noiseParameter1_observable_pErk `` denoting the absolute and
616- ``noiseParameter2_observable_pErk `` the relative contribution for the
617- observable ``observable_pErk `` corresponding to species ``pErk ``.
618- IDs of noise parameters
619- that need to have different values for different measurements have the
620- structure: ``noiseParameter${indexOfNoiseParameter}_${observableId} ``
621- to facilitate automatic recognition. The specific values or parameters are
622- assigned in the ``noiseParameters `` field of the *measurement table *
623- (see above). Any parameters named ``noiseParameter${1..n}_${observableId} ``
624- *must * be overwritten in the measurement table.
625-
626- Noise formulae can also contain observable parameter overrides, which are
627- described under ``observableFormula `` in this table. An example is when an
628- observable formula contains an override, and a proportional noise model is
629- used, which means the observable formula also appears in the noise formula.
626+ more complex noise models. The same rules as for ``observableFormula ``
627+ apply here. In addition, the current observable ID may be used to refer to
628+ the ``observableFormula `` expression.
629+ In addition to the placeholders declared in ``observablePlaceholders ``,
630+ placeholders for noise parameters that are declared in ``noisePlaceholders ``
631+ may be used.
632+
633+ * ``noisePlaceholders `` [LIST[PETAB_ID], OPTIONAL]
634+
635+ A semicolon-delimited list of valid PEtab identifiers that have not been
636+ introduced elsewhere, marking them as placeholders for
637+ measurement-specific noise parameters.
638+ The actual values for these parameters are specified in the
639+ ``noiseParameters `` field of the measurement table.
640+ The ordering and number of values in ``noiseParameters `` must match the
641+ ordering and number of placeholders in ``noisePlaceholders ``.
642+
643+ For example, a noise model that accounts for measurement-specific relative
644+ and absolute contributions for some observable with the ID
645+ ``observable_pErk `` could be defined as::
646+
647+ noise_offset_pErk + noise_scale_pErk * observable_pErk
648+
649+ with ``noise_offset_pErk `` denoting the absolute and
650+ ``noise_scale_pErk `` the relative contribution.
651+ The corresponding ``noisePlaceholders `` would be::
652+
653+ noise_offset_pErk;noise_scale_pErk
654+
655+ and the ``noiseParameters `` in the measurement table could be, for example,
656+ ``0.1;0.2 `` resulting in::
657+
658+ noise_offset_pErk = 0.1
659+ noise_scale_pErk = 0.2
630660
631661* ``noiseDistribution `` [STRING, OPTIONAL]
632662
0 commit comments