Skip to content

Commit

Permalink
Add test for observable dependent noise model (#14)
Browse files Browse the repository at this point in the history
Add test for observable dependent noise model

Co-authored-by: Daniel Weindl <daniel.weindl@helmholtz-munich.de>
Co-authored-by: Daniel Weindl <dweindl@users.noreply.github.com>
  • Loading branch information
3 people authored Jun 29, 2024
1 parent e2e1528 commit a5baf29
Show file tree
Hide file tree
Showing 11 changed files with 212 additions and 0 deletions.
67 changes: 67 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/0021.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
from inspect import cleandoc

import pandas as pd
from petab.C import *

from petabtests import DEFAULT_SBML_FILE, PetabTestCase, analytical_a

DESCRIPTION = cleandoc("""
## Objective
This case tests observable-dependent parametric noise parameter overrides in
the measurement table.
## Model
A simple conversion reaction `A <=> B` in a single compartment, following
mass action kinetics.
""")

# problem --------------------------------------------------------------------

condition_df = pd.DataFrame(data={
CONDITION_ID: ['c0'],
}).set_index([CONDITION_ID])

measurement_df = pd.DataFrame(data={
OBSERVABLE_ID: ['obs_a', 'obs_a'],
SIMULATION_CONDITION_ID: ['c0', 'c0'],
TIME: [0, 10],
MEASUREMENT: [0.7, 0.1],
NOISE_PARAMETERS: ['noise', 'noise'],
})

observable_df = pd.DataFrame(data={
OBSERVABLE_ID: ['obs_a'],
OBSERVABLE_FORMULA: ['A'],
NOISE_FORMULA: ['noiseParameter1_obs_a * obs_a']
}).set_index([OBSERVABLE_ID])

parameter_df = pd.DataFrame(data={
PARAMETER_ID: ['a0', 'b0', 'k1', 'k2', 'noise'],
PARAMETER_SCALE: [LIN] * 5,
LOWER_BOUND: [0] * 5,
UPPER_BOUND: [10] * 5,
NOMINAL_VALUE: [1, 0, 0.8, 0.6, 5],
ESTIMATE: [1] * 5,
}).set_index(PARAMETER_ID)

# solutions ------------------------------------------------------------------

simulation_df = measurement_df.copy(deep=True).rename(
columns={MEASUREMENT: SIMULATION})
simulation_df[SIMULATION] = [analytical_a(t, 1, 0, 0.8, 0.6)
for t in simulation_df[TIME]]


case = PetabTestCase(
id=21,
brief="Simulation. Nothing special.",
description=DESCRIPTION,
model=DEFAULT_SBML_FILE,
condition_dfs=[condition_df],
observable_dfs=[observable_df],
measurement_dfs=[measurement_df],
simulation_dfs=[simulation_df],
parameter_df=parameter_df,
)
11 changes: 11 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# PEtab test case 0021

## Objective

This case tests observable-dependent parametric noise parameter overrides in
the measurement table.

## Model

A simple conversion reaction `A <=> B` in a single compartment, following
mass action kinetics.
13 changes: 13 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_0021.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
format_version: 2.0.0
parameter_file: _parameters.tsv
problems:
- condition_files:
- _conditions.tsv
measurement_files:
- _measurements.tsv
model_files:
model_0:
language: sbml
location: _model.xml
observable_files:
- _observables.tsv
7 changes: 7 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_0021_solution.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
chi2: 0.0271111269779
llh: -4.22301170308364
simulation_files:
- _simulations.tsv
tol_chi2: 0.001
tol_llh: 0.001
tol_simulations: 0.001
2 changes: 2 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_conditions.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
conditionId
c0
3 changes: 3 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_measurements.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
observableId simulationConditionId time measurement noiseParameters
obs_a c0 0 0.7 noise
obs_a c0 10 0.1 noise
94 changes: 94 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_model.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level2/version4" level="2" version="4">
<model id="conversion_reaction_0" name="Conversion Reaction 0">

<listOfUnitDefinitions>
<unitDefinition id="volume" name="volume">
<listOfUnits>
<unit kind="litre" exponent="1" scale="-3" multiplier="1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="substance" name="substance">
<listOfUnits>
<unit kind="mole" exponent="1" scale="-3" multiplier="1"/>
</listOfUnits>
</unitDefinition>
</listOfUnitDefinitions>

<listOfCompartments>
<compartment id="compartment" name="compartment" spatialDimensions="3" size="1" constant="true">
</compartment>
</listOfCompartments>

<listOfSpecies>
<species id="A" name="A" compartment="compartment" initialConcentration="2" boundaryCondition="false" constant="false">
</species>
<species id="B" name="B" compartment="compartment" initialConcentration="2" boundaryCondition="false" constant="false">
</species>
</listOfSpecies>

<listOfParameters>
<parameter id="a0" name="a0" value="1" constant="true">
</parameter>
<parameter id="b0" name="b0" value="1" constant="true">
</parameter>
<parameter id="k1" name="k1" value="0" constant="true">
</parameter>
<parameter id="k2" name="k2" value="0" constant="true">
</parameter>
</listOfParameters>

<listOfInitialAssignments>
<initialAssignment symbol="A">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<ci> a0 </ci>
</math>
</initialAssignment>
<initialAssignment symbol="B">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<ci> b0 </ci>
</math>
</initialAssignment>
</listOfInitialAssignments>

<listOfReactions>
<reaction id="fwd" name="fwd" reversible="false">
<listOfReactants>
<speciesReference species="A" stoichiometry="1"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="B" stoichiometry="1"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci> compartment </ci>
<ci> k1 </ci>
<ci> A </ci>
</apply>
</math>
</kineticLaw>
</reaction>
<reaction id="rev" name="rev" reversible="false">
<listOfReactants>
<speciesReference species="B" stoichiometry="1"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="A" stoichiometry="1"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci> compartment </ci>
<ci> k2 </ci>
<ci> B </ci>
</apply>
</math>
</kineticLaw>
</reaction>
</listOfReactions>

</model>
</sbml>
2 changes: 2 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_observables.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
observableId observableFormula noiseFormula
obs_a A noiseParameter1_obs_a * obs_a
6 changes: 6 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_parameters.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
parameterId parameterScale lowerBound upperBound nominalValue estimate
a0 lin 0 10 1.0 1
b0 lin 0 10 0.0 1
k1 lin 0 10 0.8 1
k2 lin 0 10 0.6 1
noise lin 0 10 5.0 1
3 changes: 3 additions & 0 deletions petabtests/cases/v2.0.0/sbml/0021/_simulations.tsv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
observableId simulationConditionId time simulation noiseParameters
obs_a c0 0 1.0 noise
obs_a c0 10 0.42857190373069665 noise
4 changes: 4 additions & 0 deletions petabtests/cases/v2.0.0/sbml/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,7 @@ Mapping table.

Simulation. Estimated initial value via conditions table.

# [0021](0021/)

Simulation. Nothing special.

0 comments on commit a5baf29

Please sign in to comment.