Skip to content

Collect minor spec inconsistencies and clean-ups for the next PEtab version #681

Open

Description

@dweindl

This issue collects small inconsistencies and clean-ups in the PEtab v2 specification. None of them warrant a change on their own, but they could be handled in the next version. Please add further items as comments.

  • Empty values for optional problem YAML entries: The optional file lists (condition_files, experiment_files, mapping_files) and extensions may be present but empty ([], {}). The optional id can't be empty (id: "" and id: fail the schema); it can only be left out. It's worth deciding whether empty values should be valid for all optional entries or for none, and whether the specification should recommend leaving out unused optional entries. (Came up in Omit empty optional entries in ProblemConfig.to_yaml libpetab-python#547.)

🤖 Drafted with AI assistance (Claude Code)

Activity

  1. dweindl commented on Oct 15, 2026

    @dweindl
    MemberAuthor

    Conditionally empty columns in the parameter table: lowerBound, upperBound and nominalValue are typed [NUMERIC], i.e., neither OPTIONAL nor NULL, and are not bracketed in the table overview. Their descriptions, however, allow empty values depending on estimate ("Optional, if estimate==false" / "Optional, unless estimate==false"). This leaves open (a) whether the columns may be omitted if they would be empty in every row (e.g., nominalValue if all parameters are estimated), and (b) whether individual cells may be empty, which would correspond to NULL. By contrast, observableParameters and noiseParameters explicitly state when the column may be omitted. Also, the general remark "Fields enclosed in "[]" are optional and may be left empty" mixes optional columns and empty cells, which the OPTIONAL/NULL notation distinguishes. (Came up in PEtab-dev/libpetab-python#543.)

    🤖 Drafted with AI assistance (Claude Code)

  2. dweindl commented on Oct 15, 2026

    @dweindl
    MemberAuthor

    Redundant name annotations: Human-readable names can be provided both via parameterName in the parameter table (and observableName in the observable table) and via the name column of the mapping table. With petabEntityId == modelEntityId (explicitly allowed "for annotations"), or an empty modelEntityId ("annotations only"), a parameter can get a name from both tables, and it's not specified which one takes precedence if they differ. Options would be to drop parameterName/observableName in favor of the mapping table, to restrict mapping table names to entities without a name column, or to define a precedence. (Came up in PEtab-dev/libpetab-python#543.)

    🤖 Drafted with AI assistance (Claude Code)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    v2Related to PEtab version 2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions