diff --git a/petabtests/cases/v1.0.0/sbml/0011/0011.py b/petabtests/cases/v1.0.0/sbml/0011/0011.py
index 9f5af1a..3b3b82b 100644
--- a/petabtests/cases/v1.0.0/sbml/0011/0011.py
+++ b/petabtests/cases/v1.0.0/sbml/0011/0011.py
@@ -10,7 +10,7 @@
This case tests initial concentrations in the condition table.
For species `B`, the initial concentration is specified in the condition
-table, while for `A` it is given via an assignment rule in the SBML model.
+table, while for `A` it is given via an initial assignment in the SBML model.
## Model
diff --git a/petabtests/cases/v1.0.0/sbml/0011/README.md b/petabtests/cases/v1.0.0/sbml/0011/README.md
index 3a28865..6f65594 100644
--- a/petabtests/cases/v1.0.0/sbml/0011/README.md
+++ b/petabtests/cases/v1.0.0/sbml/0011/README.md
@@ -4,7 +4,7 @@
This case tests initial concentrations in the condition table.
For species `B`, the initial concentration is specified in the condition
-table, while for `A` it is given via an assignment rule in the SBML model.
+table, while for `A` it is given via an initial assignment in the SBML model.
## Model
diff --git a/petabtests/cases/v1.0.0/sbml/0019/0019.py b/petabtests/cases/v1.0.0/sbml/0019/0019.py
new file mode 100644
index 0000000..2042ed0
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/0019.py
@@ -0,0 +1,69 @@
+from inspect import cleandoc
+
+import pandas as pd
+from petab.C import *
+
+from petabtests import PetabTestCase, analytical_a
+
+DESCRIPTION = cleandoc("""
+## Objective
+
+This case tests handling of initial concentrations that are specified
+in the conditions table. For species `A`, the initial concentration is
+estimated. For species `B`, the initial concentration is specified in the
+parameters 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'],
+ 'A': ["initial_A"],
+ 'B': ["initial_B"],
+}).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]
+})
+
+observable_df = pd.DataFrame(data={
+ OBSERVABLE_ID: ['obs_a'],
+ OBSERVABLE_FORMULA: ['A'],
+ NOISE_FORMULA: [0.5]
+}).set_index([OBSERVABLE_ID])
+
+parameter_df = pd.DataFrame(data={
+ PARAMETER_ID: ['k1', 'k2', 'initial_A', 'initial_B'],
+ PARAMETER_SCALE: [LIN, LIN, LOG10, LIN],
+ LOWER_BOUND: [0, 0, 1, 0],
+ UPPER_BOUND: [10] * 4,
+ NOMINAL_VALUE: [0.8, 0.6, 2, 3],
+ ESTIMATE: [1] * 3 + [0],
+}).set_index(PARAMETER_ID)
+
+# solutions ------------------------------------------------------------------
+
+simulation_df = measurement_df.copy(deep=True).rename(
+ columns={MEASUREMENT: SIMULATION})
+simulation_df[SIMULATION] = [analytical_a(t, 2, 3, 0.8, 0.6)
+ for t in simulation_df[TIME]]
+
+case = PetabTestCase(
+ id=19,
+ brief="Simulation. Estimated initial value via conditions table.",
+ description=DESCRIPTION,
+ model='conversion_modified.xml',
+ condition_dfs=[condition_df],
+ observable_dfs=[observable_df],
+ measurement_dfs=[measurement_df],
+ simulation_dfs=[simulation_df],
+ parameter_df=parameter_df,
+)
diff --git a/petabtests/cases/v1.0.0/sbml/0019/README.md b/petabtests/cases/v1.0.0/sbml/0019/README.md
new file mode 100644
index 0000000..240391c
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/README.md
@@ -0,0 +1,13 @@
+# PEtab test case 0019
+
+## Objective
+
+This case tests handling of initial concentrations that are specified
+in the conditions table. For species `A`, the initial concentration is
+estimated. For species `B`, the initial concentration is specified in the
+parameters table.
+
+## Model
+
+A simple conversion reaction `A <=> B` in a single compartment, following
+mass action kinetics.
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_0019.yaml b/petabtests/cases/v1.0.0/sbml/0019/_0019.yaml
new file mode 100644
index 0000000..b193feb
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_0019.yaml
@@ -0,0 +1,11 @@
+format_version: 1
+parameter_file: _parameters.tsv
+problems:
+- condition_files:
+ - _conditions.tsv
+ measurement_files:
+ - _measurements.tsv
+ observable_files:
+ - _observables.tsv
+ sbml_files:
+ - _model.xml
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_0019_solution.yaml b/petabtests/cases/v1.0.0/sbml/0019/_0019_solution.yaml
new file mode 100644
index 0000000..05ebe5f
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_0019_solution.yaml
@@ -0,0 +1,7 @@
+chi2: 23.45305928312484
+llh: -12.17811234685187
+simulation_files:
+- _simulations.tsv
+tol_chi2: 0.001
+tol_llh: 0.001
+tol_simulations: 0.001
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_conditions.tsv b/petabtests/cases/v1.0.0/sbml/0019/_conditions.tsv
new file mode 100644
index 0000000..1297d08
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_conditions.tsv
@@ -0,0 +1,2 @@
+conditionId A B
+c0 initial_A initial_B
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_measurements.tsv b/petabtests/cases/v1.0.0/sbml/0019/_measurements.tsv
new file mode 100644
index 0000000..a497632
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_measurements.tsv
@@ -0,0 +1,3 @@
+observableId simulationConditionId time measurement
+obs_a c0 0 0.7
+obs_a c0 10 0.1
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_model.xml b/petabtests/cases/v1.0.0/sbml/0019/_model.xml
new file mode 100644
index 0000000..845f96f
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_model.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_observables.tsv b/petabtests/cases/v1.0.0/sbml/0019/_observables.tsv
new file mode 100644
index 0000000..0b78dd1
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_observables.tsv
@@ -0,0 +1,2 @@
+observableId observableFormula noiseFormula
+obs_a A 0.5
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_parameters.tsv b/petabtests/cases/v1.0.0/sbml/0019/_parameters.tsv
new file mode 100644
index 0000000..07a1f72
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_parameters.tsv
@@ -0,0 +1,5 @@
+parameterId parameterScale lowerBound upperBound nominalValue estimate
+k1 lin 0 10 0.8 1
+k2 lin 0 10 0.6 1
+initial_A log10 1 10 2.0 1
+initial_B lin 0 10 3.0 0
diff --git a/petabtests/cases/v1.0.0/sbml/0019/_simulations.tsv b/petabtests/cases/v1.0.0/sbml/0019/_simulations.tsv
new file mode 100644
index 0000000..ccac85f
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/_simulations.tsv
@@ -0,0 +1,3 @@
+observableId simulationConditionId time simulation
+obs_a c0 0 2.0
+obs_a c0 10 2.1428570240673257
diff --git a/petabtests/cases/v1.0.0/sbml/0019/conversion_modified.xml b/petabtests/cases/v1.0.0/sbml/0019/conversion_modified.xml
new file mode 100644
index 0000000..845f96f
--- /dev/null
+++ b/petabtests/cases/v1.0.0/sbml/0019/conversion_modified.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/petabtests/cases/v1.0.0/sbml/README.md b/petabtests/cases/v1.0.0/sbml/README.md
index 58983a8..629a35c 100644
--- a/petabtests/cases/v1.0.0/sbml/README.md
+++ b/petabtests/cases/v1.0.0/sbml/README.md
@@ -70,3 +70,7 @@ Simulation. Preequilibration. One species reinitialized, one not (NaN in conditi
Simulation. Preequilibration and RateRules. One state reinitialized, one not (NaN in condition table). InitialAssignment to species overridden.
+# [0019](0019/)
+
+Simulation. Estimated initial value via conditions table.
+
diff --git a/petabtests/cases/v2.0.0/sbml/0020/0020.py b/petabtests/cases/v2.0.0/sbml/0020/0020.py
new file mode 100644
index 0000000..75581c9
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/0020.py
@@ -0,0 +1,69 @@
+from inspect import cleandoc
+
+import pandas as pd
+from petab.C import *
+
+from petabtests import PetabTestCase, analytical_a
+
+DESCRIPTION = cleandoc("""
+## Objective
+
+This case tests handling of initial concentrations that are specified
+in the conditions table. For species `A`, the initial concentration is
+estimated. For species `B`, the initial concentration is specified in the
+parameters 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'],
+ 'A': ["initial_A"],
+ 'B': ["initial_B"],
+}).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]
+})
+
+observable_df = pd.DataFrame(data={
+ OBSERVABLE_ID: ['obs_a'],
+ OBSERVABLE_FORMULA: ['A'],
+ NOISE_FORMULA: [0.5]
+}).set_index([OBSERVABLE_ID])
+
+parameter_df = pd.DataFrame(data={
+ PARAMETER_ID: ['k1', 'k2', 'initial_A', 'initial_B'],
+ PARAMETER_SCALE: [LIN, LIN, LOG10, LIN],
+ LOWER_BOUND: [0, 0, 1, 0],
+ UPPER_BOUND: [10] * 4,
+ NOMINAL_VALUE: [0.8, 0.6, 2, 3],
+ ESTIMATE: [1] * 3 + [0],
+}).set_index(PARAMETER_ID)
+
+# solutions ------------------------------------------------------------------
+
+simulation_df = measurement_df.copy(deep=True).rename(
+ columns={MEASUREMENT: SIMULATION})
+simulation_df[SIMULATION] = [analytical_a(t, 2, 3, 0.8, 0.6)
+ for t in simulation_df[TIME]]
+
+case = PetabTestCase(
+ id=20,
+ brief="Simulation. Estimated initial value via conditions table.",
+ description=DESCRIPTION,
+ model='conversion_modified.xml',
+ condition_dfs=[condition_df],
+ observable_dfs=[observable_df],
+ measurement_dfs=[measurement_df],
+ simulation_dfs=[simulation_df],
+ parameter_df=parameter_df,
+)
diff --git a/petabtests/cases/v2.0.0/sbml/0020/README.md b/petabtests/cases/v2.0.0/sbml/0020/README.md
new file mode 100644
index 0000000..c19ad55
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/README.md
@@ -0,0 +1,13 @@
+# PEtab test case 0020
+
+## Objective
+
+This case tests handling of initial concentrations that are specified
+in the conditions table. For species `A`, the initial concentration is
+estimated. For species `B`, the initial concentration is specified in the
+parameters table.
+
+## Model
+
+A simple conversion reaction `A <=> B` in a single compartment, following
+mass action kinetics.
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_0020.yaml b/petabtests/cases/v2.0.0/sbml/0020/_0020.yaml
new file mode 100644
index 0000000..b1337e7
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_0020.yaml
@@ -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
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_0020_solution.yaml b/petabtests/cases/v2.0.0/sbml/0020/_0020_solution.yaml
new file mode 100644
index 0000000..05ebe5f
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_0020_solution.yaml
@@ -0,0 +1,7 @@
+chi2: 23.45305928312484
+llh: -12.17811234685187
+simulation_files:
+- _simulations.tsv
+tol_chi2: 0.001
+tol_llh: 0.001
+tol_simulations: 0.001
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_conditions.tsv b/petabtests/cases/v2.0.0/sbml/0020/_conditions.tsv
new file mode 100644
index 0000000..1297d08
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_conditions.tsv
@@ -0,0 +1,2 @@
+conditionId A B
+c0 initial_A initial_B
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_measurements.tsv b/petabtests/cases/v2.0.0/sbml/0020/_measurements.tsv
new file mode 100644
index 0000000..a497632
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_measurements.tsv
@@ -0,0 +1,3 @@
+observableId simulationConditionId time measurement
+obs_a c0 0 0.7
+obs_a c0 10 0.1
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_model.xml b/petabtests/cases/v2.0.0/sbml/0020/_model.xml
new file mode 100644
index 0000000..845f96f
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_model.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_observables.tsv b/petabtests/cases/v2.0.0/sbml/0020/_observables.tsv
new file mode 100644
index 0000000..0b78dd1
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_observables.tsv
@@ -0,0 +1,2 @@
+observableId observableFormula noiseFormula
+obs_a A 0.5
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_parameters.tsv b/petabtests/cases/v2.0.0/sbml/0020/_parameters.tsv
new file mode 100644
index 0000000..07a1f72
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_parameters.tsv
@@ -0,0 +1,5 @@
+parameterId parameterScale lowerBound upperBound nominalValue estimate
+k1 lin 0 10 0.8 1
+k2 lin 0 10 0.6 1
+initial_A log10 1 10 2.0 1
+initial_B lin 0 10 3.0 0
diff --git a/petabtests/cases/v2.0.0/sbml/0020/_simulations.tsv b/petabtests/cases/v2.0.0/sbml/0020/_simulations.tsv
new file mode 100644
index 0000000..ccac85f
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/_simulations.tsv
@@ -0,0 +1,3 @@
+observableId simulationConditionId time simulation
+obs_a c0 0 2.0
+obs_a c0 10 2.1428570240673257
diff --git a/petabtests/cases/v2.0.0/sbml/0020/conversion_modified.xml b/petabtests/cases/v2.0.0/sbml/0020/conversion_modified.xml
new file mode 100644
index 0000000..845f96f
--- /dev/null
+++ b/petabtests/cases/v2.0.0/sbml/0020/conversion_modified.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/petabtests/cases/v2.0.0/sbml/README.md b/petabtests/cases/v2.0.0/sbml/README.md
index 3b50f43..6aa12fa 100644
--- a/petabtests/cases/v2.0.0/sbml/README.md
+++ b/petabtests/cases/v2.0.0/sbml/README.md
@@ -74,3 +74,7 @@ Simulation. Preequilibration and RateRules. One state reinitialized, one not (Na
Mapping table.
+# [0020](0020/)
+
+Simulation. Estimated initial value via conditions table.
+