diff --git a/doc/v2/_static/petab_schema_v2.yaml b/doc/v2/_static/petab_schema_v2.yaml index 9cc0f7aa..b09421b2 100644 --- a/doc/v2/_static/petab_schema_v2.yaml +++ b/doc/v2/_static/petab_schema_v2.yaml @@ -34,8 +34,9 @@ properties: type: object description: | - A set of PEtab model, condition, observable and measurement - files and optional visualization files. + A set of PEtab model, observable and measurement + files and optional condition, experiment, and visualization files. + properties: model_files: @@ -75,6 +76,14 @@ properties: type: string description: PEtab condition file name or URL. + experiment_files: + type: array + description: List of PEtab experiment files + + items: + type: string + description: PEtab experiment file name or URL. + observable_files: type: array description: List of PEtab observable files. @@ -103,7 +112,6 @@ properties: - model_files - observable_files - measurement_files - - condition_files extensions: type: object diff --git a/doc/v2/documentation_data_format.rst b/doc/v2/documentation_data_format.rst index 3ed4df4d..bc8b9929 100644 --- a/doc/v2/documentation_data_format.rst +++ b/doc/v2/documentation_data_format.rst @@ -5,7 +5,6 @@ PEtab data format specification =============================== - Format version: 2.0.0 This document explains the PEtab data format. @@ -35,7 +34,7 @@ least redundant way. Furthermore, we wanted to establish an intuitive, modular, machine- and human-readable and -writable format that makes use of existing standards. -.. figure:: ../v1/gfx/petab_scope_and_files.png +.. figure:: gfx/petab_scope_and_files.png :alt: A common setup for data-based modeling studies and its representation in PEtab. :scale: 80% @@ -47,15 +46,18 @@ Overview The PEtab data format specifies a parameter estimation problem using a number of text-based files ( `Tab-Separated Values (TSV) `_) -(Figure 2), i.e. +(Figure 2), i.e.: - A model - A measurement file to fit the model to [TSV] -- A condition file specifying model inputs and condition-specific parameters +- (optional) A condition file specifying model inputs and condition-specific parameters [TSV] +- (optional) An experiments file, which describes a sequence of different + experimental conditions that are applied to the model [TSV] + - An observable file specifying the observation model [TSV] - A parameter file specifying estimateable parameters and related information @@ -73,7 +75,8 @@ of text-based files ( - (optional) A mapping file, which allows mapping PEtab entity IDs to entity IDs in the model, which might not have valid PEtab IDs themselves [TSV] -.. figure:: ../v1/gfx/petab_files.png + +.. figure:: gfx/petab_files.png :alt: Files constituting a PEtab problem **Figure 2: Files constituting a PEtab problem.** @@ -95,6 +98,18 @@ problem as such. - All model entities, column names and row names are case-sensitive - Fields in "[]" are optional and may be left empty. +- The following data types are used in descriptions below: + + - ``STRING``: Any string + - ``NUMERIC``: Any number excluding ``NaN`` / ``inf`` / ``-inf`` + - ``MATH_EXPRESSION``: A mathematical expression according to the + `PEtab math expression syntax `_. + - ``PETAB_ID``: A string that is a valid PEtab ID + - ``NON_ESTIMATED_ENTITY_ID``: A string that is a valid PEtab ID and refers + to an entity that has some associated numeric value and is not estimated, + e.g., a model parameter, parameter table parameter, or a species in the + model. + Changes from PEtab 1.0.0 @@ -102,11 +117,20 @@ Changes from PEtab 1.0.0 PEtab 2.0.0 is a major update of the PEtab format. The main changes are: -* Support for non-SBML models +* Support for non-SBML models (:ref:`model`) +* Changed condition table format (wide -> long) (:ref:`conditions_table`) +* ``simulationConditionId`` and ``preequilibrationConditionId`` in the + :ref:`measurements_table` are replaced by ``experimentId`` and a more + flexible way for defining experiments / time courses + (:ref:`experiments_table`) +* Support for math expressions in the condition table (:ref:`conditions_table`) * Clarification and specification of various previously underspecified aspects - (math expressions, overriding values in the condition table, etc.) + (:ref:`math_expressions`, overriding values in the condition table, etc.) * Support for extensions * Observable IDs are now allowed to be used in observable/noise formulas + (:ref:`observables_table`) + +.. _model: Model definition ---------------- @@ -114,88 +138,176 @@ Model definition PEtab 2.0.0 is agnostic of specific model formats. A model file is referenced in the PEtab problem description (YAML) via its file name or a URL. -Condition table ---------------- +.. _conditions_table: -The condition table specifies parameters, or initial values of species and -compartments for specific simulation conditions (generally corresponding to -different experimental conditions). +Conditions table +---------------- -This is specified as a tab-separated value file in the following way: +The conditions table specifies changes to parameters, initial values of species +and compartments for specific simulation conditions. Different conditions can +be combined to form time courses or experiment through the +:ref:`experiments_table`. Any changes applied to the model will remain in +effect until they are changed by a subsequent condition. -+--------------+------------------+------------------------------------+-----+---------------------------------------+ -| conditionId | [conditionName] | modelEntityId1 | ... | modelEntityId${n} | -+==============+==================+====================================+=====+=======================================+ -| STRING | [STRING] | NUMERIC\|STRING | ... | NUMERIC\|STRING | -+--------------+------------------+------------------------------------+-----+---------------------------------------+ -| e.g. | | | | | -+--------------+------------------+------------------------------------+-----+---------------------------------------+ -| conditionId1 | [conditionName1] | 0.42 | ... | parameterId | -+--------------+------------------+------------------------------------+-----+---------------------------------------+ -| conditionId2 | ... | ... | ... | ... | -+--------------+------------------+------------------------------------+-----+---------------------------------------+ -| ... | ... | ... | ... | .. | -+--------------+------------------+------------------------------------+-----+---------------------------------------+ +This is specified as a tab-separated value file in the following way: + +**TODO: keep conditionName or not?** + ++--------------+------------------+------------------+-----------------+--------------------+ +| conditionId | [conditionName] | targetId | operationType | targetValue | ++==============+==================+==================+=================+====================+ +| STRING | [STRING] | MODEL_ENTITY_ID | STRING | MATH_EXPRESSION | ++--------------+------------------+------------------+-----------------+--------------------+ +| e.g. | | | | | ++--------------+------------------+------------------+-----------------+--------------------+ +| conditionId1 | conditionName1 | modelEntityId1 | setCurrentValue | 0.42 | ++--------------+------------------+------------------+-----------------+--------------------+ +| conditionId1 | conditionName1 | modelEntityId2 | | 0.42 | ++--------------+------------------+------------------+-----------------+--------------------+ +| conditionId2 | ... | modelEntityId1 | | modelEntityId1 + 3 | ++--------------+------------------+------------------+-----------------+--------------------+ +| conditionId2 | ... | someSpecies | setCurrentValue | 8 | ++--------------+------------------+------------------+-----------------+--------------------+ +| ... | ... | ... | | ... | ++--------------+------------------+------------------+-----------------+--------------------+ + +Each line specifies a change of one specific property of a specific entity. Row- and column-ordering are arbitrary, although specifying ``conditionId`` first may improve human readability. -Additional columns are *not* allowed. - Detailed field description ~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ``conditionId`` [STRING, NOT NULL] +- ``conditionId`` [PETAB_ID, REQUIRED] Unique identifier for the simulation/experimental condition, to be referenced - by the measurement table described below. Must consist only of upper and - lower case letters, digits and underscores, and must not start with a digit. + by the :ref:`experiments_table`. -- ``conditionName`` [STRING, OPTIONAL] +- ``conditionName`` [STRING, OPTIONAL] **TODO: remove** Condition names are arbitrary strings to describe the given condition. They may be used for reporting or visualization. -- ``${modelEntityId}`` - - Further columns may be the IDs of model entities that have globally unique - IDs, such as parameters, species or compartments defined in the model to set - condition-specific values. Only one column is allowed per ID. - Values for these entities may be provided either as numeric values, or as IDs - of globally unique entity IDs as defined in the model, the mapping table or - the parameter table. - - Any non-``NaN`` value will override the original values of the model, or if - preequilibration was used, they will override the value obtained from - preequilibration. A ``NaN`` value indicates that the original value of the - model is to be used (when used in the preequilibration condition, or in the - simulation condition if no preequilibration is used) or that the result of - preequilibration is to be used (when used in the simulation condition after - preequilibration). - - The value in the condition table either replaces the initial value or the - value at all timepoints based on whether the model entity has a rate law - assigned or not: - - * For model entities that have constant algebraic assignments - (but not necessarily constant values), i.e, that do not have a rate of - change with respect to time assigned and that are not subject to event - assignments, the algebraic assignment is replaced statically at all - timepoints. Examples for such model entities are the targets of SBML - `AssignmentRules`. - - * For all other entities, e.g., those that are assigned by SBML `RateRules`, - only the initial value can be assigned in the condition table. If an - assignment of the rate of change with respect to time or event assignment - is desired, the values of model entities that are used to define rate of - change or event assignments must be assigned in the condition table. - If no such model entities exist, assignment is not possible. +- ``targetId`` [NON_ESTIMATED_ENTITY_ID, required except for ``operationType=noChange``] + + The ID of the an entity that is to be changed when applying this condition. + This may an entity defined in the model, or an alias from the mapping + table. The entity must be uniquely identifiable. Parameters from the + :ref:`parameters_table` are not allowed here. + Different restrictions apply depending on the ``operationType`` and the + type of the model. + + We distinguish between three types of entities: + + * Entities that are defined in terms of a time-derivative, e.g., the targets + of SBML rate rules or non-constant species participating in reactions. + Referred to as `differential targets` below. + + * Entities that are defined in terms of an algebraic assignment, i.e., they + are not subject to time-derivative information, but are not generally + constant, e.g., the targets of SBML assignment rules. + Referred to as `algebraic targets` below. + * Entities are that are defined in terms of a constant value but may be + subject to event assignments, e.g., parameters of an SBML model that are + not targets of rate rules or assignment rules. + Referred to as `constant targets` below. + + +- ``operationType`` [STRING, REQUIRED] + + How the target value is to be interpreted. Allowed values are: + + - ``setCurrentValue``: The current value of the target is initialized to the + value of ``targetValue`` when the respective condition is applied. + Any symbols in ``targetValue`` are interpreted as their value at the time + just before this change is applied (similar + to an SBML event with ``useValuesFromTriggerTime=True``; in case of the + first period of a timecourse, they will be interpreted as their initial + values as defined in the model). + The target must be a constant target or a differential target. + + - ``setRate``: The time-derivative of the target is set to ``targetValue`` + (symbolically; the expression is not evaluated at the time the condition is + applied). + The target must be a differential target. + + - ``addToRate``: The target's rate is increased by ``targetValue`` + (symbolically). + The target must be a differential target. + + - ``setAssignment``: The target is set to the value of ``targetValue`` + (symbolically). + The target must be an algebraic target. + + - ``addToAssignment``: The expression assigned to the target is increased by + ``targetValue`` (symbolically). + The target must be an algebraic target. + + - ``noChange``: This value is used to indicate that no change is associated + with this condition. This is useful in cases where an explicit condition + ID is required, but no change is to be applied. (E.g., if pre-equilibration + is to be performed using the default values of the model, followed by a + different condition.) + ``targetId`` and ``targetValue`` have to be empty in this case. + For any conditionId with ``operationType=noChange``, there must not be any + other row with the same ``conditionId`` in the conditions table. + +- ``targetValue`` [MATH_EXPRESSION, REQUIRED] + + The value or expression that will be used to change the target. The + interpretation of the value depends on the ``operationType`` as described + above. If the model has a concept of species and a species ID is provided, its value is interpreted as amount or concentration in the same way as anywhere else in the model. +**TODO**: clarify order of evaluation + +**Examples:** **TODO** + + - given a timecourse ``0:condition1;10:condition2`` and two constant + model parameters ``par1``, ``par2`` and the two conditions: + + - ``condition1``: {``par1=0.1``, ``par2=0.2``} + - ``condition2``: {``par1=par2``, ``par2=par1``} + + This is okay, since no circular dependencies exist: ``par1 = 0.2``, ``par2=0.1`` + + - given a ``timecourse 0:condition1`` and two model parameters + ``par1``, ``par2`` with only a single condition: + + - ``condition1``: {``par1=par2``, ``par2=par1``} + + This is not allowed, in the first condition of the timecourse ``par1``, ``par2`` + cannot be used in the right-hand side of the assignment + + - Given a condition: ``condition1``: {``par1=par3``, ``par2=2*par3``} + + This is allowed. + + Condition changes should be implemented to respect the dependency + graph between model components: + + - When a condition changes quantity ``A`` and ``B``, and ``B`` is dependent on + ``A``, the change in quantity A should be applied first such that the + new value for ``B`` is consistent with what is specified in the + condition. + + - For example, concentrations are generally dependent on volume + i.e. when a model compartment volume changes, the concentrations + of all species in that compartment change too, because mass is + usually conserved. In this case, if a condition change involves a + change in both a compartment volume and a species concentration, + then the compartment change should be applied first. Otherwise, + the species concentration after the condition is applied, will not + match the concentration specified by the user, because it would be + modified by the volume change. + +.. _measurements_table: + Measurement table ----------------- @@ -205,13 +317,13 @@ model training or validation. Expected to have the following named columns in any (but preferably this) order: -+--------------+-------------------------------+-----------------------+-------------+--------------+ -| observableId | [preequilibrationConditionId] | simulationConditionId | measurement | time | -+==============+===============================+=======================+=============+==============+ -| observableId | [conditionId] | conditionId | NUMERIC | NUMERIC\|inf | -+--------------+-------------------------------+-----------------------+-------------+--------------+ -| ... | ... | ... | ... | ... | -+--------------+-------------------------------+-----------------------+-------------+--------------+ ++--------------+--------------+-------------+--------------+ +| observableId | experimentId | measurement | time | ++==============+==============+=============+==============+ +| observableId | experimentID | NUMERIC | NUMERIC\|inf | ++--------------+--------------+-------------+--------------+ +| ... | ... | ... | ... | ++--------------+--------------+-------------+--------------+ *(wrapped for readability)* @@ -242,27 +354,25 @@ replicates and plot error bars. Detailed field description ~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ``observableId`` [STRING, NOT NULL, REFERENCES(observables.observableID)] +- ``observableId`` [STRING, REQUIRED, REFERENCES(observables.observableID)] Observable ID as defined in the observable table described below. -- ``preequilibrationConditionId`` [STRING OR NULL, REFERENCES(conditionsTable.conditionID), OPTIONAL] - - The ``conditionId`` to be used for preequilibration. E.g. for drug - treatments, the model would be preequilibrated with the no-drug condition. - Empty for no preequilibration. +- ``experimentId`` [STRING, REQUIRED, REFERENCES(experimentsTable.experimentID)] -- ``simulationConditionId`` [STRING, NOT NULL, REFERENCES(conditionsTable.conditionID)] + Experiment ID as defined in the experiments table described below. This column may + have ``NA`` values, which are interpreted as *use the model as is*. + This avoids the need for "dummy" conditions and experiments if only a single + condition is required. - ``conditionId`` as provided in the condition table, specifying the condition-specific parameters used for simulation. - -- ``measurement`` [NUMERIC, NOT NULL] +- ``measurement`` [NUMERIC, REQUIRED] The measured value in the same units/scale as the model output. -- ``time`` [NUMERIC OR STRING, NOT NULL] +- ``time`` [NUMERIC OR STRING, REQUIRED] - Time point of the measurement in the time unit specified in the SBML model, numeric value or ``inf`` (lower-case) for steady-state measurements. + Time point of the measurement in the time unit specified in the SBML model, + numeric value or ``inf`` (lower-case) for steady-state measurements. - ``observableParameters`` [NUMERIC, STRING OR NULL, OPTIONAL] @@ -309,8 +419,77 @@ Detailed field description ``datasetId``, which is helpful for plotting e.g. error bars. -Observable table ----------------- +.. _experiments_table: + +Experiments table +----------------- + +The optional experiments table describes a sequence of different experimental +conditions (here: discrete changes) that are applied to the model. + +This is specified as a tab-separated value file in the following way: + ++---------------------+-------------------+-----------------+ +| experimentId | time | conditionId | ++=====================+===================+=================+ +| PETAB_ID | NUMERIC or '-inf' | CONDITION_ID | ++---------------------+-------------------+-----------------+ +| timecourse_1 | 0 | condition_1 | ++---------------------+-------------------+-----------------+ +| timecourse_1 | 10 | condition_2 | ++---------------------+-------------------+-----------------+ +| timecourse_1 | 250 | condition_3 | ++---------------------+-------------------+-----------------+ +| patient_3 | -inf | condition_1 | ++---------------------+-------------------+-----------------+ +| patient_3 | 0 | condition_2 | ++---------------------+-------------------+-----------------+ +| intervention_effect | -20 | no_lockdown | ++---------------------+-------------------+-----------------+ +| intervention_effect | 20 | mild_lockdown | ++---------------------+-------------------+-----------------+ +| intervention_effect | 40 | severe_lockdown | ++---------------------+-------------------+-----------------+ + +Detailed field description +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The time courses table with three mandatory columns ``experimentId``, +``time``, and ``conditionId``: + +- ``experimentId`` [STRING, REQUIRED] + + Identifier of the experiment. The usual PEtab identifier requirements apply. + This is referenced by the ``experimentId`` column in the measurement table. + +- ``time``: [NUMERIC or ``-inf``, REQUIRED] + + The time when the condition will become active, in the time unit specified + in the model. ``-inf`` indicates pre-equilibration (e.g., for drug + treatments, the model would be pre-equilibrated with the no-drug condition). + +- ``CONDITION_ID``: Reference to a condition ID in the condition table that + is to be applied at the given `time`. + + Note: The time interval in which a condition is applied includes the + respective starting timepoint, but excludes the starting timepoint of + the following condition. This means that for an experiment + ``[time_A:condition_A; time_B:condition_B]``, ``condition_A`` is active + during the interval ``[time_A, time_B)``. This implies that any event + assignment that triggers at ``time_B`` will occur *after* ``condition_B`` was + applied and for any measurements at ``time_B``, the observables will be + evaluated *after* ``condition_B`` was applied. + +Multiple conditions can be applied at the same time point by specifying +multiple lines with the same ``experimentId`` and ``time`` but different +``conditionId``. The order of the conditions is arbitrary **????**. + +**TODO** how to deal with conflicts? + +.. _observables_table: + +Observables table +----------------- Parameter estimation requires linking experimental observations to the model of interest. Therefore, one needs to define observables (model outputs) and @@ -468,6 +647,7 @@ The distributions above are for a single data point. For a collection :math:`D=\ .. math:: \pi(D|Y,\Sigma) = \prod_i\pi(m_i|y_i,\sigma_i) +.. _parameters_table: Parameter table --------------- @@ -519,7 +699,7 @@ Additional columns may be added. Detailed field description ~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ``parameterId`` [STRING, NOT NULL] +- ``parameterId`` [STRING, REQUIRED] The ``parameterId`` of the parameter described in this row. This has to match the ID of a parameter specified in the SBML model, a parameter introduced @@ -621,6 +801,7 @@ Detailed field description Prior parameters used for the objective function during estimation. For more detailed documentation, see ``initializationPriorParameters``. +.. _visualization_table: Visualization table ------------------- @@ -665,7 +846,7 @@ order: Detailed field description ~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ``plotId`` [STRING, NOT NULL] +- ``plotId`` [STRING, REQUIRED] An ID which corresponds to a specific plot. All datasets with the same plotId will be plotted into the same axes object. @@ -685,7 +866,7 @@ Detailed field description ``provided`` (if numeric values for the noise level are provided in the measurement table). Default is ``MeanAndSD``. -- ``datasetId`` [STRING, NOT NULL, REFERENCES(measurementTable.datasetId), OPTIONAL] +- ``datasetId`` [STRING, REQUIRED, REFERENCES(measurementTable.datasetId), OPTIONAL] The datasets which should be grouped into one plot. @@ -733,6 +914,7 @@ Detailed field description The name that should be displayed for the corresponding dataset in the legend and which defaults to the value in ``datasetId``. +.. _mapping_table: Mapping table ------------- @@ -757,14 +939,14 @@ The TSV file has two mandatory columns, ``petabEntityId`` and Detailed field description ~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ``petabEntityId`` [STRING, NOT NULL] +- ``petabEntityId`` [STRING, REQUIRED] A valid PEtab identifier that is not defined in any other part of the PEtab problem. This identifier may be referenced in condition, measurement, parameter and observable tables, but cannot be referenced in the model itself. -- ``modelEntityId`` [STRING, NOT NULL] +- ``modelEntityId`` [STRING, REQUIRED] A globally unique identifier defined in the model, *that is not a valid PEtab ID* (see :ref:`identifiers`). @@ -793,6 +975,7 @@ Examples of the visualization table can be found in the `Benchmark model collection `_, for example in the `Chen_MSB2009 `_ model. +.. _problem_yaml: YAML file for grouping files ---------------------------- @@ -823,6 +1006,8 @@ namespace is global. Therefore, parameters with the same ID in different models will be considered identical. +.. _math_expressions: + Math expressions syntax ----------------------- diff --git a/doc/v2/gfx/petab_files.png b/doc/v2/gfx/petab_files.png new file mode 100644 index 00000000..971fd729 Binary files /dev/null and b/doc/v2/gfx/petab_files.png differ diff --git a/doc/v2/gfx/petab_files.svg b/doc/v2/gfx/petab_files.svg new file mode 100644 index 00000000..9ede262e --- /dev/null +++ b/doc/v2/gfx/petab_files.svg @@ -0,0 +1,3489 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + YAML + + + + + + + Problem + • Grouping model +and other tables +• Combination of +multiple files + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + • Reactionnetwork + Model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + • Parametertransformations• Bounds• Prior information + • Data visualization• Model fit + • Condition-specificparameters + • Measured values• Preequilibration• Noise• Output parameters + Parameters + ExperimentalConditions + Measurements + Visualization + • Observation functions• Noise model + Observables + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + • Sequences of experimental conditionl + Experiments + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v2/gfx/petab_scope_and_files.pdf b/doc/v2/gfx/petab_scope_and_files.pdf new file mode 100644 index 00000000..e0ca20f4 Binary files /dev/null and b/doc/v2/gfx/petab_scope_and_files.pdf differ diff --git a/doc/v2/gfx/petab_scope_and_files.png b/doc/v2/gfx/petab_scope_and_files.png new file mode 100644 index 00000000..4bad5733 Binary files /dev/null and b/doc/v2/gfx/petab_scope_and_files.png differ diff --git a/doc/v2/gfx/petab_scope_and_files.svg b/doc/v2/gfx/petab_scope_and_files.svg new file mode 100644 index 00000000..de0945dd --- /dev/null +++ b/doc/v2/gfx/petab_scope_and_files.svg @@ -0,0 +1,1652 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + TODO][] + + + + + Measurements + + + + + + + + + + + + + + + + + Experiments + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + Condition 1 + Condition 2 + ... + + + + Simulate + Likelihood, Residuals, ... + Parameter estimation / Uncertainty analysisOptimize, Profile, Sample, ... + + + + + Visualize, Analyze, Predict, ... + + Generic model of biological system + Condition-specific model of biological system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generic observation model + Condition-specific observation model + + Generic noise model + + + y1 = sa ⋅ x1 y2 = ca + x2...y1 = sb ⋅ x1 y2 = cb + x2... + + + + y1 = s ⋅ x1 y2 = c + x2... + + + + + + + + + + + + + + + + Condition table + + + + + conditionId p1 p2 ...Condition1 1.0 1.0 Condition2 5.0 4.0 ... + + + + + Observable table + + + + + observableId observableFormula noiseDistribution noiseParametersObservable1 s · x1 normal 1.0Observable2 c + x2 laplace 3.0... + + + + + Model + + + + + Measurement table + + + + observableId timecourseId time measurementObservable1 Timecourse1 1.0 2.0Observable2 Timecourse2 1.0 3.0... + + + + Parameter table + + + + + + parameterId estimate nominalValueParameter1 1 Parameter2 0 3.0... + + + + + Timecourses table + + + + timecourseId timecourseTimecourse1 0:Condition1 Timecourse2 0:Condition2 ... + + + + + A + Typical experimental and model setup and workflow + + + B + Representation of the workflow elements in PEtab + + + + + σ1 = 0.1 ⋅ x1σ2 = 0.5...σ1 = 1.0σ2 = 2.0... + + Condition-specific noise model + + + + + + + + + + + + + + + + + + + +