diff --git a/Benchmark-Models/Isensee_JCB2018/README.md b/Benchmark-Models/Isensee_JCB2018/README.md
new file mode 100644
index 0000000..8bc5aec
--- /dev/null
+++ b/Benchmark-Models/Isensee_JCB2018/README.md
@@ -0,0 +1,17 @@
+The paper describes a model selection problem with four hypotheses. Each hypothesis involves adding a set of parameters to the model -- these sets of parameters are annotated in the `model_selection_group` column of the parameters table. The paper shows a result where the model with the first hypothesis alone (H1) was accepted as the best by AIC.
+
+This benchmark problem is the parameter estimation problem for the H1-only model. The parameters for the other hypotheses are specified in `parameters_Isensee_JCB2018_model_selection.tsv`. For example, this Python code will create the PEtab problem for the H2+H3 model.
+```python
+import pandas as pd
+import petab
+
+petab_problem = petab.Problem.from_yaml("Isensee_JCB2018.yaml")
+model_selection_parameter_df = petab.get_parameter_df("parameters_Isensee_JCB2018_model_selection.tsv")
+
+petab_problem.parameter_df = petab.get_parameter_df(pd.concat([
+ # Remove the H1 parameters
+ petab_problem.parameter_df.query("model_selection_group != 'H1: different KD'"),
+ # Add the H2 and H3 parameters
+ model_selection_parameter_df.query("model_selection_group in ['H2: AC inhibition', 'H3: incomplete import']")
+]))
+```
diff --git a/Benchmark-Models/Isensee_JCB2018/model_Isensee_JCB2018.xml b/Benchmark-Models/Isensee_JCB2018/model_Isensee_JCB2018.xml
index c575f94..4b5721f 100644
--- a/Benchmark-Models/Isensee_JCB2018/model_Isensee_JCB2018.xml
+++ b/Benchmark-Models/Isensee_JCB2018/model_Isensee_JCB2018.xml
@@ -97,16 +97,13 @@
-
-
-
@@ -119,25 +116,14 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -162,6 +148,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018.tsv b/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018.tsv
index 0924881..e4ccf4d 100644
--- a/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018.tsv
+++ b/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018.tsv
@@ -1,61 +1,51 @@
-parameterId parameterName parameterScale lowerBound upperBound nominalValue estimate objectivePriorType objectivePriorParameters
-AC_total AC_{total} log10 1E-05 1000 1 0
-KD_Fsk KD_{Fsk} log10 1E-05 1000 14.2805171742694 1 parameterScaleNormal 0.845098040014257;0.2
-KD_H89 KD_{H89} log10 1E-05 1000 0.048074027232332 1 parameterScaleNormal -1.318758762624413;0.2
-KD_IBMX KD_{IBMX} log10 1E-05 1000 11.960772655864 1 parameterScaleNormal 1.0;0.2
-KD_PDE_Csub KD_{PDE,Csub} lin -5 3 0 0
-KD_cAMP KD_{cAMP} log10 1E-05 1000 2.85002019924967 1 parameterScaleNormal 0.462397997898956;0.2
-PDE_total PDE_{total} log10 1E-05 1000 1 0
-RII2_total RII2_{total} log10 1E-05 1000 1 0
-b_Calpha_global b_{Calpha,global} log10 0.001 1000 101.662732662228 1 parameterScaleNormal 2;0.1
-b_pRII_global b_{pRII,global} log10 0.001 1000 99.7184671220999 1 parameterScaleNormal 2;0.1
-kdeg_cAMP kdeg_{cAMP} log10 1E-05 1000 1.00000660182181E-05 1
-kdeg_cAMP_free kdeg_{cAMP,free} log10 1E-05 1000 7.38363782272545 1
-kdp_AC kdp_{AC} lin -5 3 0 0
-kf_Fsk kf_{Fsk} log10 1E-05 1000 999.999958296064 1
-kf_H89 kf_{H89} log10 1E-05 1000 0.000742716621349 1
-kf_PDE_Csub kf_{PDE,Csub} lin -5 3 0 0
-kf_RII_2__RII_C_2 kf_{RII_2,RII_C_2} log10 1E-05 100000 1.26446106685121 1
-kf_RII_C_2__RII_2 kf_{RII_C_2,RII_2} log10 1E-05 1000 0.018746739843535 1
-kf_RII_C_2__RIIp_C_2 kf_{RII_C_2,RIIp_C_2} log10 1E-05 1000 0.022767932816744 1
-kf_RIIp_2__RII_2 kf_{RIIp_2,RII_2} log10 1E-05 1000 0.03230162532087 1
-kf_RIIp_C_2__RII_C_2 kf_{RIIp_C_2,RII_C_2} log10 1E-05 1000 0.025703919542656 1
-kf_RIIp_cAMP_C_2__RIIp_2 kf_{RIIp_cAMP_C_2,RIIp_2} log10 1E-05 1000 0.105283748414996 1
-kf_cAMP kf_{cAMP} log10 1E-05 1000 0.501542412469253 1
-ki_IBMX ki_{IBMX} log10 1E-05 1000 999.99999999947 1
-ki_Rp8_Br_cAMPS_pAB ki_{Rp8,Br,cAMPS,pAB} log10 1E-05 1000 6.44560005260773 1
-ki_Rp8_pCPT_cAMPS_pAB ki_{Rp8,pCPT,cAMPS,pAB} log10 1E-05 1000 9.3898794585472 1
-ki_Rp_cAMPS_pAB ki_{Rp,cAMPS,pAB} log10 1E-05 1000 0.016320587381729 1
-ki_Sp8_Br_cAMPS_AM ki_{Sp8,Br,cAMPS,AM} log10 1E-05 1000 0.131657936881857 1
-kp_AC kp_{AC} lin -5 3 0 0
-ks_AC_cAMP ks_{AC,cAMP} log10 1E-05 1000 0.423150583624568 1
-rel_open rel_{open} log10 1E-05 1 0.232684484588385 1
-s_Calpha_JI09_160201_Drg453_452_CycNuc s_{Calpha,JI09,160201,Drg453,452,CycNuc} log10 1E-5 1000 1 0
-s_Calpha_global s_{Calpha,global} log10 1000 3162.27766016838 1758.15501421399 1
-s_pRII_JI09_150302_Drg345_343_CycNuc s_{pRII,JI09,150302,Drg345,343,CycNuc} log10 0.001 1000 1.1029976101468 1 parameterScaleNormal 0;0.1
-s_pRII_JI09_150330_Drg350_348_CycNuc s_{pRII,JI09,150330,Drg350,348,CycNuc} log10 0.001 1000 0.9067516915655 1 parameterScaleNormal 0;0.1
-s_pRII_JI09_150330_Drg353_351_CycNuc s_{pRII,JI09,150330,Drg353,351,CycNuc} log10 0.001 1000 0.934506349283962 1 parameterScaleNormal 0;0.1
-s_pRII_JI09_151102_Drg421_418_Age s_{pRII,JI09,151102,Drg421,418,Age} log10 0.001 1000 1.06693094665605 1 parameterScaleNormal 0;0.1
-s_pRII_Western s_{pRII,Western} log10 0.1 100000 1.14849828435972 1
-s_pRII_global s_{pRII,global} log10 1000 3162.27766016838 2206.77137565008 1
-rho_Calpha_Microscopy \rho_{Calpha,Microscopy} log10 1E-05 1000 0.049753182233122 1
-rho_pRII_Microscopy \rho_{pRII,Microscopy} log10 1E-05 1000 0.040685236621013 1
-rho_pRII_Western \rho_{pRII,Western} log10 1E-05 1000 0.099334983213923 1
-xi_AC_cAMP_Fsk \xi_{AC_{cAMP,Fsk} log10 1E-05 1000 642.370332155571 1
-xi_KD_Rp8_Br_cAMPS \xi_{KD,Rp8,Br,cAMPS} log10 1E-05 100000 0.039962383560766 1 parameterScaleNormal 0;3
-xi_KD_Rp8_pCPT_cAMPS \xi_{KD,Rp8,pCPT,cAMPS} log10 1E-05 100000 0.194212924719718 1 parameterScaleNormal 0;3
-xi_KD_Rp_cAMPS \xi_{KD,Rp,cAMPS} log10 1E-05 100000 0.163047074866588 1 parameterScaleNormal 0;3
-xi_KD_Sp8_Br_cAMPS \xi_{KD,Sp8,Br,cAMPS} log10 1E-05 100000 0.22324026500667 1 parameterScaleNormal 0;3
-xi_b_Rp8_Br_cAMPS \xi_{b,Rp8,Br,cAMPS} log10 1E-05 100000 0.040559301141753 1 parameterScaleNormal 0;3
-xi_b_Rp8_pCPT_cAMPS \xi_{b,Rp8,pCPT,cAMPS} log10 1E-05 100000 0.026684466293791 1 parameterScaleNormal 0;3
-xi_b_Rp_cAMPS \xi_{b,Rp,cAMPS} log10 1E-05 100000 0.603928050380137 1 parameterScaleNormal 0;3
-xi_b_Sp8_Br_cAMPS \xi_{b,Sp8,Br,cAMPS} log10 1E-05 100000 21.6150210996832 1 parameterScaleNormal 0;3
-xi_i_Rp8_Br_cAMPS_pAB \xi_{i,Rp8,Br,cAMPS,pAB} log10 1E-05 1 1 0 parameterScaleNormal 0;3
-xi_i_Rp8_pCPT_cAMPS_pAB \xi_{i,Rp8,pCPT,cAMPS,pAB} log10 1E-05 1 1 0 parameterScaleNormal 0;3
-xi_i_Rp_cAMPS_pAB \xi_{i,Rp,cAMPS,pAB} log10 1E-05 1 1 0 parameterScaleNormal 0;3
-xi_i_Sp8_Br_cAMPS_AM \xi_{i,Sp8,Br,cAMPS,AM} log10 1E-05 1 1 0 parameterScaleNormal 0;3
-xi_kf_RII_2__RII_C_2 \xi_{kf_RII_2,RII_C_2} log10 1E-05 1 0.01893099823943 1 parameterScaleNormal -1.742435698117109;0.1
-xi_kf_RII_C_2__RII_2 \xi_{kf_RII_C_2,RII_2} log10 1E-05 100000 0.810991675177056 1 parameterScaleNormal -0.062147906748844;0.1
-xi_pAC \xi_{pAC} log10 0.001 1 1 0 parameterScaleNormal 0;3
-xi_pPDE \xi_{pPDE} log10 1 1000 1 0 parameterScaleNormal 0.397940008672038;3
-xi_rel_open \xi_{rel,open} log10 1E-05 1 0.749424660751357 1
+parameterId parameterName parameterScale lowerBound upperBound nominalValue estimate objectivePriorType objectivePriorParameters model_selection_group
+AC_total AC_{total} log10 1E-05 1000 1 0
+KD_Fsk KD_{Fsk} log10 1E-05 1000 14.2805171742694 1 parameterScaleNormal 0.845098040014257;0.2
+KD_H89 KD_{H89} log10 1E-05 1000 0.048074027232332 1 parameterScaleNormal -1.318758762624413;0.2
+KD_IBMX KD_{IBMX} log10 1E-05 1000 11.960772655864 1 parameterScaleNormal 1.0;0.2
+KD_cAMP KD_{cAMP} log10 1E-05 1000 2.85002019924967 1 parameterScaleNormal 0.462397997898956;0.2
+PDE_total PDE_{total} log10 1E-05 1000 1 0
+RII2_total RII2_{total} log10 1E-05 1000 1 0
+b_Calpha_global b_{Calpha,global} log10 0.001 1000 101.662732662228 1 parameterScaleNormal 2;0.1
+b_pRII_global b_{pRII,global} log10 0.001 1000 99.7184671220999 1 parameterScaleNormal 2;0.1
+kdeg_cAMP kdeg_{cAMP} log10 1E-05 1000 1.00000660182181E-05 1
+kdeg_cAMP_free kdeg_{cAMP,free} log10 1E-05 1000 7.38363782272545 1
+kf_Fsk kf_{Fsk} log10 1E-05 1000 999.999958296064 1
+kf_H89 kf_{H89} log10 1E-05 1000 0.000742716621349 1
+kf_RII_2__RII_C_2 kf_{RII_2,RII_C_2} log10 1E-05 100000 1.26446106685121 1
+kf_RII_C_2__RII_2 kf_{RII_C_2,RII_2} log10 1E-05 1000 0.018746739843535 1
+kf_RII_C_2__RIIp_C_2 kf_{RII_C_2,RIIp_C_2} log10 1E-05 1000 0.022767932816744 1
+kf_RIIp_2__RII_2 kf_{RIIp_2,RII_2} log10 1E-05 1000 0.03230162532087 1
+kf_RIIp_C_2__RII_C_2 kf_{RIIp_C_2,RII_C_2} log10 1E-05 1000 0.025703919542656 1
+kf_RIIp_cAMP_C_2__RIIp_2 kf_{RIIp_cAMP_C_2,RIIp_2} log10 1E-05 1000 0.105283748414996 1
+kf_cAMP kf_{cAMP} log10 1E-05 1000 0.501542412469253 1
+ki_IBMX ki_{IBMX} log10 1E-05 1000 999.99999999947 1
+ki_Rp8_Br_cAMPS_pAB ki_{Rp8,Br,cAMPS,pAB} log10 1E-05 1000 6.44560005260773 1
+ki_Rp8_pCPT_cAMPS_pAB ki_{Rp8,pCPT,cAMPS,pAB} log10 1E-05 1000 9.3898794585472 1
+ki_Rp_cAMPS_pAB ki_{Rp,cAMPS,pAB} log10 1E-05 1000 0.016320587381729 1
+ki_Sp8_Br_cAMPS_AM ki_{Sp8,Br,cAMPS,AM} log10 1E-05 1000 0.131657936881857 1
+ks_AC_cAMP ks_{AC,cAMP} log10 1E-05 1000 0.423150583624568 1
+rel_open rel_{open} log10 1E-05 1 0.232684484588385 1
+s_Calpha_JI09_160201_Drg453_452_CycNuc s_{Calpha,JI09,160201,Drg453,452,CycNuc} log10 1E-5 1000 1 0
+s_Calpha_global s_{Calpha,global} log10 1000 3162.27766016838 1758.15501421399 1
+s_pRII_JI09_150302_Drg345_343_CycNuc s_{pRII,JI09,150302,Drg345,343,CycNuc} log10 0.001 1000 1.1029976101468 1 parameterScaleNormal 0;0.1
+s_pRII_JI09_150330_Drg350_348_CycNuc s_{pRII,JI09,150330,Drg350,348,CycNuc} log10 0.001 1000 0.9067516915655 1 parameterScaleNormal 0;0.1
+s_pRII_JI09_150330_Drg353_351_CycNuc s_{pRII,JI09,150330,Drg353,351,CycNuc} log10 0.001 1000 0.934506349283962 1 parameterScaleNormal 0;0.1
+s_pRII_JI09_151102_Drg421_418_Age s_{pRII,JI09,151102,Drg421,418,Age} log10 0.001 1000 1.06693094665605 1 parameterScaleNormal 0;0.1
+s_pRII_Western s_{pRII,Western} log10 0.1 100000 1.14849828435972 1
+s_pRII_global s_{pRII,global} log10 1000 3162.27766016838 2206.77137565008 1
+rho_Calpha_Microscopy \rho_{Calpha,Microscopy} log10 1E-05 1000 0.049753182233122 1
+rho_pRII_Microscopy \rho_{pRII,Microscopy} log10 1E-05 1000 0.040685236621013 1
+rho_pRII_Western \rho_{pRII,Western} log10 1E-05 1000 0.099334983213923 1
+xi_AC_cAMP_Fsk \xi_{AC_{cAMP,Fsk} log10 1E-05 1000 642.370332155571 1
+xi_b_Rp8_Br_cAMPS \xi_{b,Rp8,Br,cAMPS} log10 1E-05 100000 0.040559301141753 1 parameterScaleNormal 0;3
+xi_b_Rp8_pCPT_cAMPS \xi_{b,Rp8,pCPT,cAMPS} log10 1E-05 100000 0.026684466293791 1 parameterScaleNormal 0;3
+xi_b_Rp_cAMPS \xi_{b,Rp,cAMPS} log10 1E-05 100000 0.603928050380137 1 parameterScaleNormal 0;3
+xi_b_Sp8_Br_cAMPS \xi_{b,Sp8,Br,cAMPS} log10 1E-05 100000 21.6150210996832 1 parameterScaleNormal 0;3
+xi_kf_RII_2__RII_C_2 \xi_{kf_RII_2,RII_C_2} log10 1E-05 1 0.01893099823943 1 parameterScaleNormal -1.742435698117109;0.1
+xi_kf_RII_C_2__RII_2 \xi_{kf_RII_C_2,RII_2} log10 1E-05 100000 0.810991675177056 1 parameterScaleNormal -0.062147906748844;0.1
+xi_rel_open \xi_{rel,open} log10 1E-05 1 0.749424660751357 1
+xi_KD_Rp8_Br_cAMPS \xi_{KD,Rp8,Br,cAMPS} log10 1E-05 100000 0.039962383560766 1 parameterScaleNormal 0;3 H1: different KD
+xi_KD_Rp8_pCPT_cAMPS \xi_{KD,Rp8,pCPT,cAMPS} log10 1E-05 100000 0.194212924719718 1 parameterScaleNormal 0;3 H1: different KD
+xi_KD_Rp_cAMPS \xi_{KD,Rp,cAMPS} log10 1E-05 100000 0.163047074866588 1 parameterScaleNormal 0;3 H1: different KD
+xi_KD_Sp8_Br_cAMPS \xi_{KD,Sp8,Br,cAMPS} log10 1E-05 100000 0.22324026500667 1 parameterScaleNormal 0;3 H1: different KD
diff --git a/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018_model_selection.tsv b/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018_model_selection.tsv
new file mode 100644
index 0000000..1e8dd8c
--- /dev/null
+++ b/Benchmark-Models/Isensee_JCB2018/parameters_Isensee_JCB2018_model_selection.tsv
@@ -0,0 +1,11 @@
+parameterId parameterName parameterScale lowerBound upperBound nominalValue estimate objectivePriorType objectivePriorParameters model_selection_group
+xi_pAC \xi_{pAC} log10 0.001 1 1 1 parameterScaleNormal 0;3 H2: AC inhibition
+kp_AC kp_{AC} log10 1E-5 1E3 0 1 H2: AC inhibition
+kdp_AC kdp_{AC} log10 1E-5 1E3 0 1 H2: AC inhibition
+xi_i_Rp8_Br_cAMPS_pAB \xi_{i,Rp8,Br,cAMPS,pAB} log10 1E-05 1 1 1 parameterScaleNormal 0;3 H3: incomplete import
+xi_i_Rp8_pCPT_cAMPS_pAB \xi_{i,Rp8,pCPT,cAMPS,pAB} log10 1E-05 1 1 1 parameterScaleNormal 0;3 H3: incomplete import
+xi_i_Rp_cAMPS_pAB \xi_{i,Rp,cAMPS,pAB} log10 1E-05 1 1 1 parameterScaleNormal 0;3 H3: incomplete import
+xi_i_Sp8_Br_cAMPS_AM \xi_{i,Sp8,Br,cAMPS,AM} log10 1E-05 1 1 1 parameterScaleNormal 0;3 H3: incomplete import
+xi_pPDE \xi_{pPDE} log10 1 1000 1 1 parameterScaleNormal 0.397940008672038;3 H4: PDE inhibition
+kf_PDE_Csub kf_{PDE,Csub} log10 1E-5 1E3 0 1 H4: PDE inhibition
+KD_PDE_Csub KD_{PDE,Csub} log10 1E-5 1E3 0 1 H4: PDE inhibition
diff --git a/src/python/pyproject.toml b/src/python/pyproject.toml
index 4f48a20..2f96eda 100644
--- a/src/python/pyproject.toml
+++ b/src/python/pyproject.toml
@@ -27,7 +27,7 @@ dependencies = [
]
[project.optional-dependencies]
-dev = ["ruff"]
+dev = ["pre-commit", "pytest", "ruff"]
[project.scripts]
bmp-petablint = "benchmark_models_petab.check_petablint:main"