diff --git a/petabtests/cases/v2.0.0/pysb/0010/0010.py b/petabtests/cases/v2.0.0/pysb/0010/0010.py index a0c475f..ee25c5e 100644 --- a/petabtests/cases/v2.0.0/pysb/0010/0010.py +++ b/petabtests/cases/v2.0.0/pysb/0010/0010.py @@ -24,8 +24,8 @@ # problem -------------------------------------------------------------------- problem = Problem() -problem.add_condition("preeq_c0", k1=0.3, B=0) -problem.add_condition("c0", k1=0.8, B=1) +problem.add_condition("preeq_c0", k1=0.3, B_c=0) +problem.add_condition("c0", k1=0.8, B_c=1) problem.add_experiment("e0", TIME_PREEQUILIBRATION, "preeq_c0", 0, "c0") @@ -35,8 +35,8 @@ problem.add_measurement("obs_a", experiment_id="e0", time=10, measurement=0.1) problem.add_parameter("k2", lb=0, ub=10, nominal_value=0.6, estimate=True) -problem.add_mapping("A", "A_() ** compartment") -problem.add_mapping("B", "B_() ** compartment") +problem.add_mapping("A_c", "A_() ** compartment") +problem.add_mapping("B_c", "B_() ** compartment") # solutions ------------------------------------------------------------------ diff --git a/petabtests/cases/v2.0.0/pysb/0010/_conditions.tsv b/petabtests/cases/v2.0.0/pysb/0010/_conditions.tsv index 01d5b3d..b8952a9 100644 --- a/petabtests/cases/v2.0.0/pysb/0010/_conditions.tsv +++ b/petabtests/cases/v2.0.0/pysb/0010/_conditions.tsv @@ -1,5 +1,5 @@ conditionId targetId targetValue preeq_c0 k1 0.3 -preeq_c0 B 0.0 +preeq_c0 B_c 0.0 c0 k1 0.8 -c0 B 1.0 +c0 B_c 1.0 diff --git a/petabtests/cases/v2.0.0/pysb/0010/_mapping.tsv b/petabtests/cases/v2.0.0/pysb/0010/_mapping.tsv index 2fee7f7..d9834af 100644 --- a/petabtests/cases/v2.0.0/pysb/0010/_mapping.tsv +++ b/petabtests/cases/v2.0.0/pysb/0010/_mapping.tsv @@ -1,3 +1,3 @@ petabEntityId modelEntityId name -A A_() ** compartment -B B_() ** compartment +A_c A_() ** compartment +B_c B_() ** compartment diff --git a/petabtests/cases/v2.0.0/pysb/0011/0011.py b/petabtests/cases/v2.0.0/pysb/0011/0011.py index c904997..629a483 100644 --- a/petabtests/cases/v2.0.0/pysb/0011/0011.py +++ b/petabtests/cases/v2.0.0/pysb/0011/0011.py @@ -21,7 +21,7 @@ # problem -------------------------------------------------------------------- problem = Problem() -problem.add_condition("c0", B=2) +problem.add_condition("c0", B_c=2) problem.add_experiment("e0", 0, "c0") @@ -33,8 +33,8 @@ problem.add_parameter("k1", lb=0, ub=10, nominal_value=0.8, estimate=True) problem.add_parameter("k2", lb=0, ub=10, nominal_value=0.6, estimate=True) -problem.add_mapping("A", "A_() ** compartment") -problem.add_mapping("B", "B_() ** compartment") +problem.add_mapping("A_c", "A_() ** compartment") +problem.add_mapping("B_c", "B_() ** compartment") # solutions ------------------------------------------------------------------ diff --git a/petabtests/cases/v2.0.0/pysb/0011/_conditions.tsv b/petabtests/cases/v2.0.0/pysb/0011/_conditions.tsv index 5d968f9..168f21d 100644 --- a/petabtests/cases/v2.0.0/pysb/0011/_conditions.tsv +++ b/petabtests/cases/v2.0.0/pysb/0011/_conditions.tsv @@ -1,2 +1,2 @@ conditionId targetId targetValue -c0 B 2.0 +c0 B_c 2.0 diff --git a/petabtests/cases/v2.0.0/pysb/0011/_mapping.tsv b/petabtests/cases/v2.0.0/pysb/0011/_mapping.tsv index 2fee7f7..d9834af 100644 --- a/petabtests/cases/v2.0.0/pysb/0011/_mapping.tsv +++ b/petabtests/cases/v2.0.0/pysb/0011/_mapping.tsv @@ -1,3 +1,3 @@ petabEntityId modelEntityId name -A A_() ** compartment -B B_() ** compartment +A_c A_() ** compartment +B_c B_() ** compartment diff --git a/petabtests/cases/v2.0.0/pysb/0013/0013.py b/petabtests/cases/v2.0.0/pysb/0013/0013.py index 0a16c1a..69d5441 100644 --- a/petabtests/cases/v2.0.0/pysb/0013/0013.py +++ b/petabtests/cases/v2.0.0/pysb/0013/0013.py @@ -19,7 +19,7 @@ # problem -------------------------------------------------------------------- problem = Problem() -problem.add_condition("c0", B="par") +problem.add_condition("c0", B_c="par") problem.add_experiment("e0", 0, "c0") problem.add_observable("obs_a", "A", noise_formula=0.5) @@ -30,8 +30,8 @@ problem.add_parameter("k2", lb=0, ub=10, nominal_value=0.6, estimate=True) problem.add_parameter("par", lb=0, ub=10, nominal_value=7, estimate=True) -problem.add_mapping("A", "A_() ** compartment") -problem.add_mapping("B", "B_() ** compartment") +problem.add_mapping("A_c", "A_() ** compartment") +problem.add_mapping("B_c", "B_() ** compartment") # solutions ------------------------------------------------------------------ diff --git a/petabtests/cases/v2.0.0/pysb/0013/_conditions.tsv b/petabtests/cases/v2.0.0/pysb/0013/_conditions.tsv index d2e474f..646b1f2 100644 --- a/petabtests/cases/v2.0.0/pysb/0013/_conditions.tsv +++ b/petabtests/cases/v2.0.0/pysb/0013/_conditions.tsv @@ -1,2 +1,2 @@ conditionId targetId targetValue -c0 B par +c0 B_c par diff --git a/petabtests/cases/v2.0.0/pysb/0013/_mapping.tsv b/petabtests/cases/v2.0.0/pysb/0013/_mapping.tsv index 2fee7f7..d9834af 100644 --- a/petabtests/cases/v2.0.0/pysb/0013/_mapping.tsv +++ b/petabtests/cases/v2.0.0/pysb/0013/_mapping.tsv @@ -1,3 +1,3 @@ petabEntityId modelEntityId name -A A_() ** compartment -B B_() ** compartment +A_c A_() ** compartment +B_c B_() ** compartment diff --git a/petabtests/cases/v2.0.0/pysb/0017/0017.py b/petabtests/cases/v2.0.0/pysb/0017/0017.py index d2af56e..40ee328 100644 --- a/petabtests/cases/v2.0.0/pysb/0017/0017.py +++ b/petabtests/cases/v2.0.0/pysb/0017/0017.py @@ -32,8 +32,8 @@ # problem -------------------------------------------------------------------- problem = Problem() -problem.add_condition("preeq_c0", k1=0.3, B=2.0, A=0) -problem.add_condition("c0", k1=0.8, A=1) +problem.add_condition("preeq_c0", k1=0.3, B_c=2.0, A_c=0) +problem.add_condition("c0", k1=0.8, A_c=1) problem.add_experiment("e0", TIME_PREEQUILIBRATION, "preeq_c0", 0, "c0") problem.add_observable("obs_a", "A", noise_formula=0.5) problem.add_measurement("obs_a", experiment_id="e0", time=1, measurement=0.7) @@ -41,8 +41,8 @@ problem.add_parameter( "k2", lb=0, ub=10, nominal_value=0.6, scale=LIN, estimate=True ) -problem.add_mapping("A", "A_() ** compartment") -problem.add_mapping("B", "B_() ** compartment") +problem.add_mapping("A_c", "A_() ** compartment") +problem.add_mapping("B_c", "B_() ** compartment") # solutions ------------------------------------------------------------------ diff --git a/petabtests/cases/v2.0.0/pysb/0017/_conditions.tsv b/petabtests/cases/v2.0.0/pysb/0017/_conditions.tsv index 934e234..3e03b6f 100644 --- a/petabtests/cases/v2.0.0/pysb/0017/_conditions.tsv +++ b/petabtests/cases/v2.0.0/pysb/0017/_conditions.tsv @@ -1,6 +1,6 @@ conditionId targetId targetValue preeq_c0 k1 0.3 -preeq_c0 B 2.0 -preeq_c0 A 0.0 +preeq_c0 B_c 2.0 +preeq_c0 A_c 0.0 c0 k1 0.8 -c0 A 1.0 +c0 A_c 1.0 diff --git a/petabtests/cases/v2.0.0/pysb/0017/_mapping.tsv b/petabtests/cases/v2.0.0/pysb/0017/_mapping.tsv index 2fee7f7..d9834af 100644 --- a/petabtests/cases/v2.0.0/pysb/0017/_mapping.tsv +++ b/petabtests/cases/v2.0.0/pysb/0017/_mapping.tsv @@ -1,3 +1,3 @@ petabEntityId modelEntityId name -A A_() ** compartment -B B_() ** compartment +A_c A_() ** compartment +B_c B_() ** compartment diff --git a/test/test_general.py b/test/test_general.py index e1178b2..ee8b1da 100644 --- a/test/test_general.py +++ b/test/test_general.py @@ -1,5 +1,6 @@ import petabtests import os +import pytest def test_cases_dir_exists(): @@ -14,3 +15,40 @@ def test_cases_dir_exists(): assert os.path.isdir( petabtests.get_cases_dir(format_="pysb", version="v2.0.0") ) + + +@pytest.mark.parametrize( + "format_,version", + [ + ("sbml", "v2.0.0"), + ("pysb", "v2.0.0"), + ], +) +def test_lint_all_v2_cases(format_, version): + """Regression test: all v2 test cases must pass PEtab linting.""" + from petab.v2.lint import lint_problem + + cases_dir = petabtests.get_cases_dir(format_=format_, version=version) + cases = sorted( + f.name + for f in os.scandir(cases_dir) + if f.is_dir() and f.name.isdigit() + ) + assert cases, f"No cases found in {cases_dir}" + + failures = {} + for case_id in cases: + yaml_path = cases_dir / case_id / f"_{case_id}.yaml" + if not yaml_path.exists(): + continue + results = lint_problem(yaml_path) + if results: + failures[case_id] = [str(r) for r in results] + + assert not failures, ( + "Linting failed for the following test cases:\n" + + "\n".join( + f" {case_id}: {'; '.join(errs)}" + for case_id, errs in sorted(failures.items()) + ) + )