From 99d0ace7dc1596d41799512fa083f934e7d6ea7e Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Sat, 24 Oct 2026 12:27:00 +0200 Subject: [PATCH 1/3] v2 spec: allow infinite nominal values (erratum E3) Allow `inf` and `-inf` as `nominalValue`. With the removal of `parameterScale`, fixing a log-transformed parameter at 0 requires a nominal value of `-inf`. Relates to #685. Co-Authored-By: Claude Opus 5.5 --- doc/v2/documentation_data_format.rst | 25 +++++++++++++---------- doc/v2/errata.rst | 30 +++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/doc/v2/documentation_data_format.rst b/doc/v2/documentation_data_format.rst index 5141d29b..8aae3c39 100644 --- a/doc/v2/documentation_data_format.rst +++ b/doc/v2/documentation_data_format.rst @@ -861,15 +861,15 @@ it *may* include: One row per parameter with arbitrary order of rows and columns: -+-------------+-----------------+---------------+--------------+--------------+-------------+-----+ -| parameterId | [parameterName] | lowerBound | upperBound | nominalValue | estimate | ... | -+=============+=================+===============+==============+==============+=============+=====+ -| PETAB_ID | [STRING] | NUMERIC\|-inf | NUMERIC\|inf | NUMERIC | true\|false | ... | -+-------------+-----------------+---------------+--------------+--------------+-------------+-----+ -| k1 | | 1e-5 | 1e5 | 100 | true | ... | -+-------------+-----------------+---------------+--------------+--------------+-------------+-----+ -| ... | ... | ... | ... | ... | ... | ... | -+-------------+-----------------+---------------+--------------+--------------+-------------+-----+ ++-------------+-----------------+---------------+--------------+--------------------+-------------+-----+ +| parameterId | [parameterName] | lowerBound | upperBound | nominalValue | estimate | ... | ++=============+=================+===============+==============+====================+=============+=====+ +| PETAB_ID | [STRING] | NUMERIC\|-inf | NUMERIC\|inf | NUMERIC\|inf\|-inf | true\|false | ... | ++-------------+-----------------+---------------+--------------+--------------------+-------------+-----+ +| k1 | | 1e-5 | 1e5 | 100 | true | ... | ++-------------+-----------------+---------------+--------------+--------------------+-------------+-----+ +| ... | ... | ... | ... | ... | ... | ... | ++-------------+-----------------+---------------+--------------+--------------------+-------------+-----+ *(wrapped for readability)* @@ -919,12 +919,17 @@ Detailed field description ``inf`` indicates that the parameter is not bounded from above. Optional, if ``estimate==false``. -- ``nominalValue`` [NUMERIC] +- ``nominalValue`` [NUMERIC or ``inf`` or ``-inf``] Some parameter value to be used if the parameter is not subject to estimation (see ``estimate`` below). Optional, unless ``estimate==false``. + .. note:: + + Infinite nominal values are valid as per + :ref:`erratum E3 `. + - ``estimate`` [``true`` | ``false``] ``true`` or ``false`` (case-sensitive), depending on whether the parameter diff --git a/doc/v2/errata.rst b/doc/v2/errata.rst index b9f6f4ff..7dd3780a 100644 --- a/doc/v2/errata.rst +++ b/doc/v2/errata.rst @@ -40,7 +40,8 @@ parameter bounds to the prior's domain (e.g., ``0`` and ``inf`` for * ``lowerBound`` may be ``-inf``, ``upperBound`` may be ``inf``. ``inf`` as lower bound and ``-inf`` as upper bound remain invalid. - ``nominalValue`` remains ``NUMERIC``, i.e., finite. + ``nominalValue`` remains ``NUMERIC``, i.e., finite + (changed by :ref:`erratum E3 `). * If priors are specified for any parameter, the default ``uniform(lowerBound, upperBound)`` prior for the remaining parameters is improper for infinite bounds. Therefore, in this case, a proper prior @@ -72,3 +73,30 @@ contrast, defines the prior only for the estimated parameters. * The default ``uniform(lowerBound, upperBound)`` prior applies only to estimated parameters, and only if priors are specified for any estimated parameter. + +.. _v2_errata_e3: + +E3: Infinite nominal values +--------------------------- + +:Type: technical +:Affects: :ref:`v2_parameter_table` +:Discussion: `#685 `__ + +**Problem:** +``nominalValue`` was specified as ``NUMERIC``, which excludes infinite +values. At the same time, the list of changes from PEtab 1 states that the +effect of the removed ``parameterScale`` column can be obtained by +transforming the model parameters in the model file. This does not hold for +fixed parameters on the boundary of their domain: in PEtab 1, a parameter +``k1`` with ``parameterScale=log`` can be fixed to ``nominalValue=0`` +(nominal values are on linear scale). For a model reparameterized in terms of +``log_k1``, the corresponding nominal value is ``-inf``. + +**Resolution:** + +* ``nominalValue`` may be ``inf`` or ``-inf``. ``NaN`` remains invalid. +* For parameters with ``estimate==false``, infinite nominal values are applied + as specified. +* For parameters with ``estimate==true``, ``nominalValue`` does not affect the + problem definition, so infinite values have no further implications. From efc534af5f9f38f21b8a8432bc9ab66149753d82 Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Mon, 26 Oct 2026 12:56:24 +0100 Subject: [PATCH 2/3] Update doc/v2/errata.rst Co-authored-by: Dilan Pathirana <59329744+dilpath@users.noreply.github.com> --- doc/v2/errata.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/v2/errata.rst b/doc/v2/errata.rst index 7dd3780a..eb7efe0d 100644 --- a/doc/v2/errata.rst +++ b/doc/v2/errata.rst @@ -40,8 +40,7 @@ parameter bounds to the prior's domain (e.g., ``0`` and ``inf`` for * ``lowerBound`` may be ``-inf``, ``upperBound`` may be ``inf``. ``inf`` as lower bound and ``-inf`` as upper bound remain invalid. - ``nominalValue`` remains ``NUMERIC``, i.e., finite - (changed by :ref:`erratum E3 `). + ``nominalValue`` is addressed by :ref:`erratum E3 `. * If priors are specified for any parameter, the default ``uniform(lowerBound, upperBound)`` prior for the remaining parameters is improper for infinite bounds. Therefore, in this case, a proper prior From 41f99917aa52295d55efee602e609b015982f40c Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Tue, 27 Oct 2026 07:39:17 +0100 Subject: [PATCH 3/3] v2 spec: allow infinite placeholder overrides (erratum E3) Extend erratum E3 to `observableParameters` and `noiseParameters` in the measurement table: numeric values there may be `inf` or `-inf`, as for `nominalValue`. Previously, an infinite value could only be given via a parameter from the parameter table, but not directly. Relates to #685. Co-Authored-By: Claude Fable 5.1 --- doc/v2/documentation_data_format.rst | 44 +++++++++++++++++----------- doc/v2/errata.rst | 17 ++++++++--- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/doc/v2/documentation_data_format.rst b/doc/v2/documentation_data_format.rst index 8aae3c39..04810d50 100644 --- a/doc/v2/documentation_data_format.rst +++ b/doc/v2/documentation_data_format.rst @@ -514,17 +514,17 @@ order: *(wrapped for readability)* -+-----+----------------------------+----------------------------+ -| ... | [observableParameters] | [noiseParameters] | -+=====+============================+============================+ -| ... | LIST[parameterId\|NUMERIC] | LIST[parameterId\|NUMERIC] | -+-----+----------------------------+----------------------------+ -| ... | | | -+-----+----------------------------+----------------------------+ -| ... | | | -+-----+----------------------------+----------------------------+ -| ... | ... | ... | -+-----+----------------------------+----------------------------+ ++-----+----------------------------------------+----------------------------------------+ +| ... | [observableParameters] | [noiseParameters] | ++=====+========================================+========================================+ +| ... | LIST[parameterId\|NUMERIC\|inf\|-inf] | LIST[parameterId\|NUMERIC\|inf\|-inf] | ++-----+----------------------------------------+----------------------------------------+ +| ... | | | ++-----+----------------------------------------+----------------------------------------+ +| ... | | | ++-----+----------------------------------------+----------------------------------------+ +| ... | ... | ... | ++-----+----------------------------------------+----------------------------------------+ Additional (non-standard) columns may be added. @@ -567,7 +567,8 @@ Detailed field description the condition change is applied before the observable is evaluated (see :ref:`v2_reinitialization_semantics` for details). -- ``observableParameters`` [LIST[parameterId, NUMERIC], NULL, OPTIONAL] +- ``observableParameters`` [LIST[parameterId, NUMERIC, ``inf``, ``-inf``], + NULL, OPTIONAL] Measurement-specific overrides for placeholder parameters in the `observableFormula` declared in the @@ -582,8 +583,12 @@ Detailed field description observable in the observable table. I.e., if the observable table contains no observable placeholders for the given observable, this field must be empty. - The values may be either numeric values or the IDs of parameters from the - :ref:`parameter table `. + The values may be either numeric values, ``inf``, ``-inf``, or the IDs of + parameters from the :ref:`parameter table `. + + .. note:: + + Infinite values are valid as per :ref:`erratum E3 `. Different measurements for the same ``observableId`` may specify different values. This may be used to account for condition-specific or @@ -592,7 +597,8 @@ Detailed field description If none of the observables referenced in a given measurement table use any observable placeholders, this column may be omitted there. -- ``noiseParameters`` [LIST[parameterId, NUMERIC], NULL, OPTIONAL] +- ``noiseParameters`` [LIST[parameterId, NUMERIC, ``inf``, ``-inf``], + NULL, OPTIONAL] Measurement-specific overrides for placeholder parameters in the `noiseFormula` declared in the @@ -607,8 +613,12 @@ Detailed field description observable in the observable table. I.e., if the observable table contains no noise placeholders for the given observable, this field must be empty. - The values may be either numeric values or the IDs of parameters from the - :ref:`parameter table `. + The values may be either numeric values, ``inf``, ``-inf``, or the IDs of + parameters from the :ref:`parameter table `. + + .. note:: + + Infinite values are valid as per :ref:`erratum E3 `. Different measurements for the same ``observableId`` may specify different values. This may be used to account for condition-specific or diff --git a/doc/v2/errata.rst b/doc/v2/errata.rst index eb7efe0d..a0f4fcb7 100644 --- a/doc/v2/errata.rst +++ b/doc/v2/errata.rst @@ -75,12 +75,13 @@ contrast, defines the prior only for the estimated parameters. .. _v2_errata_e3: -E3: Infinite nominal values ---------------------------- +E3: Infinite parameter values +----------------------------- :Type: technical -:Affects: :ref:`v2_parameter_table` -:Discussion: `#685 `__ +:Affects: :ref:`v2_parameter_table`, :ref:`v2_measurement_table` +:Discussion: `#685 `__, + `#687 `__ **Problem:** ``nominalValue`` was specified as ``NUMERIC``, which excludes infinite @@ -92,9 +93,17 @@ fixed parameters on the boundary of their domain: in PEtab 1, a parameter (nominal values are on linear scale). For a model reparameterized in terms of ``log_k1``, the corresponding nominal value is ``-inf``. +The same applies to numeric values in ``observableParameters`` and +``noiseParameters`` in the measurement table, which were specified as +``NUMERIC``. Since these entries may also reference parameters from the +parameter table, an infinite value could be given via a parameter, but not +directly. + **Resolution:** * ``nominalValue`` may be ``inf`` or ``-inf``. ``NaN`` remains invalid. +* Numeric values in ``observableParameters`` and ``noiseParameters`` may be + ``inf`` or ``-inf``. ``NaN`` remains invalid. * For parameters with ``estimate==false``, infinite nominal values are applied as specified. * For parameters with ``estimate==true``, ``nominalValue`` does not affect the