Skip to content

Commit f4a6864

Browse files
Update deprecated functions in tests (#181)
* Fix deprecated tight layout matplotlib * update deprecated functions in tests * add deprecation tests
1 parent ec8ccf3 commit f4a6864

File tree

5 files changed

+110
-33
lines changed

5 files changed

+110
-33
lines changed

petab/problem.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ def to_files(
411411
visualization tables, they will be merged and written to a single file.
412412
413413
Arguments:
414-
sbml_file: SBML model destination
414+
sbml_file: SBML model destination (deprecated)
415415
model_file: Model destination
416416
condition_file: Condition table destination
417417
measurement_file: Measurement table destination

tests/test_deprecated.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
"""Check that deprecated functionality raises but still works."""
2+
import pytest
3+
import tempfile
4+
from pathlib import Path
5+
6+
import petab
7+
8+
from .test_sbml import create_test_data, check_model
9+
from .test_petab import petab_problem # noqa: F401
10+
11+
12+
def test_problem_with_sbml_model():
13+
"""Test that a problem can be correctly created from sbml model."""
14+
# retrieve test data
15+
ss_model, condition_df, observable_df, measurement_df, parameter_df = \
16+
create_test_data()
17+
18+
with pytest.deprecated_call():
19+
petab_problem = petab.Problem( # noqa: F811
20+
sbml_model=ss_model.model,
21+
condition_df=condition_df,
22+
measurement_df=measurement_df,
23+
parameter_df=parameter_df,
24+
)
25+
26+
_, condition_model = petab.get_model_for_condition(
27+
petab_problem, "condition_1")
28+
29+
check_model(condition_model)
30+
31+
32+
def test_to_files_with_sbml_model(petab_problem): # noqa: F811
33+
"""Test problem.to_files."""
34+
with tempfile.TemporaryDirectory() as outdir:
35+
# create target files
36+
sbml_file = Path(outdir, "model.xml")
37+
condition_file = Path(outdir, "conditions.tsv")
38+
measurement_file = Path(outdir, "measurements.tsv")
39+
parameter_file = Path(outdir, "parameters.tsv")
40+
observable_file = Path(outdir, "observables.tsv")
41+
42+
# write contents to files
43+
with pytest.deprecated_call():
44+
petab_problem.to_files(
45+
sbml_file=sbml_file,
46+
condition_file=condition_file,
47+
measurement_file=measurement_file,
48+
parameter_file=parameter_file,
49+
visualization_file=None,
50+
observable_file=observable_file,
51+
yaml_file=None,
52+
)
53+
54+
# exemplarily load some
55+
parameter_df = petab.get_parameter_df(parameter_file)
56+
same_nans = parameter_df.isna() == petab_problem.parameter_df.isna()
57+
assert ((parameter_df == petab_problem.parameter_df) | same_nans) \
58+
.all().all()

tests/test_parameter_mapping.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,8 @@ def test_partial_override(condition_df_2_conditions):
351351
actual = petab.get_optimization_to_simulation_parameter_mapping(
352352
measurement_df=measurement_df,
353353
condition_df=condition_df,
354-
sbml_model=ss_model.model, parameter_df=parameter_df
354+
model=petab.models.sbml_model.SbmlModel(ss_model.model),
355+
parameter_df=parameter_df
355356
)
356357

357358
# Comparison with NaN containing expected results fails after pickling!
@@ -399,7 +400,7 @@ def test_parameterized_condition_table():
399400
measurement_df=measurement_df,
400401
condition_df=condition_df,
401402
parameter_df=parameter_df,
402-
sbml_model=ss_model.model
403+
model=petab.models.sbml_model.SbmlModel(ss_model.model),
403404
)
404405

405406
expected = [({}, {'dynamicParameter1': 'dynamicOverride1_1'},
@@ -467,7 +468,7 @@ def test_parameterized_condition_table_changed_scale():
467468
measurement_df=measurement_df,
468469
condition_df=condition_df,
469470
parameter_df=parameter_df,
470-
sbml_model=ss_model.model
471+
model=petab.models.sbml_model.SbmlModel(ss_model.model)
471472
)
472473

473474
expected = [
@@ -487,8 +488,8 @@ def test_parameterized_condition_table_changed_scale():
487488
measurement_df=measurement_df,
488489
condition_df=condition_df,
489490
parameter_df=parameter_df,
490-
sbml_model=ss_model.model,
491-
scaled_parameters=True
491+
model=petab.models.sbml_model.SbmlModel(ss_model.model),
492+
scaled_parameters=True,
492493
)
493494

494495
expected = [
@@ -510,7 +511,8 @@ def test_parameterized_condition_table_changed_scale():
510511
measurement_df=measurement_df,
511512
condition_df=condition_df,
512513
parameter_df=parameter_df,
513-
sbml_model=ss_model.model)
514+
model=petab.models.sbml_model.SbmlModel(ss_model.model),
515+
)
514516

515517
expected = [
516518
({overridee_id: 'dynamicOverrideLog10'},

tests/test_petab.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from io import StringIO
66
from math import nan
77
from pathlib import Path
8-
from tempfile import TemporaryDirectory
98

109
import libsbml
1110
import numpy as np
@@ -78,12 +77,13 @@ def petab_problem():
7877
observable_file_name = Path(temp_dir, "observables.tsv")
7978
petab.write_observable_df(observable_df, observable_file_name)
8079

81-
yield petab.Problem.from_files(
82-
sbml_file=sbml_file_name,
83-
measurement_file=measurement_file_name,
84-
condition_file=condition_file_name,
85-
parameter_file=parameter_file_name,
86-
observable_files=observable_file_name)
80+
with pytest.deprecated_call():
81+
yield petab.Problem.from_files(
82+
sbml_file=sbml_file_name,
83+
measurement_file=measurement_file_name,
84+
condition_file=condition_file_name,
85+
parameter_file=parameter_file_name,
86+
observable_files=observable_file_name)
8787

8888

8989
@pytest.fixture
@@ -95,10 +95,13 @@ def fujita_model_scaling():
9595
measurement_file = path / 'Fujita_measurementData.tsv'
9696
parameter_file = path / 'Fujita_parameters_scaling.tsv'
9797

98-
return petab.Problem.from_files(sbml_file=sbml_file,
99-
condition_file=condition_file,
100-
measurement_file=measurement_file,
101-
parameter_file=parameter_file)
98+
with pytest.deprecated_call():
99+
return petab.Problem.from_files(
100+
sbml_file=sbml_file,
101+
condition_file=condition_file,
102+
measurement_file=measurement_file,
103+
parameter_file=parameter_file,
104+
)
102105

103106

104107
def test_split_parameter_replacement_list():
@@ -570,13 +573,14 @@ def test_to_files(petab_problem): # pylint: disable=W0621
570573

571574
# write contents to files
572575
petab_problem.to_files(
573-
sbml_file=sbml_file,
576+
model_file=sbml_file,
574577
condition_file=condition_file,
575578
measurement_file=measurement_file,
576579
parameter_file=parameter_file,
577580
visualization_file=None,
578581
observable_file=observable_file,
579-
yaml_file=None)
582+
yaml_file=None,
583+
)
580584

581585
# exemplarily load some
582586
parameter_df = petab.get_parameter_df(parameter_file)
@@ -625,7 +629,7 @@ def test_problem_from_yaml_v1_multiple_files():
625629
sbml_files: []
626630
"""
627631

628-
with TemporaryDirectory() as tmpdir:
632+
with tempfile.TemporaryDirectory() as tmpdir:
629633
yaml_path = Path(tmpdir, "problem.yaml")
630634
with open(yaml_path, 'w') as f:
631635
f.write(yaml_config)

tests/test_sbml.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
import petab # noqa: E402
88

99

10-
def test_get_condition_specific_models():
11-
"""Test for petab.sbml.get_condition_specific_models"""
10+
def create_test_data():
1211
# Create test model and data files
1312
import simplesbml
13+
1414
ss_model = simplesbml.SbmlModel()
1515
ss_model.addCompartment(comp_id="compartment_1", vol=1)
1616
for i in range(1, 4):
@@ -51,18 +51,10 @@ def test_get_condition_specific_models():
5151
})
5252
parameter_df.set_index([petab.PARAMETER_ID], inplace=True)
5353

54-
petab_problem = petab.Problem(
55-
sbml_model=ss_model.model,
56-
condition_df=condition_df,
57-
observable_df=observable_df,
58-
measurement_df=measurement_df,
59-
parameter_df=parameter_df
60-
)
54+
return ss_model, condition_df, observable_df, measurement_df, parameter_df
6155

62-
# Actual test
63-
condition_doc, condition_model = petab.get_model_for_condition(
64-
petab_problem, "condition_1")
6556

57+
def check_model(condition_model):
6658
assert condition_model.getSpecies(
6759
"species_1").getInitialConcentration() == 15
6860
assert condition_model.getSpecies(
@@ -75,3 +67,24 @@ def test_get_condition_specific_models():
7567
assert condition_model.getParameter("parameter_1").getValue() == 1.25
7668
assert condition_model.getParameter("parameter_2").getValue() == 2.25
7769
assert condition_model.getParameter("parameter_3").getValue() == 2.25
70+
71+
72+
def test_get_condition_specific_models():
73+
"""Test for petab.sbml.get_condition_specific_models"""
74+
# retrieve test data
75+
ss_model, condition_df, observable_df, measurement_df, parameter_df = \
76+
create_test_data()
77+
78+
petab_problem = petab.Problem(
79+
model=petab.models.sbml_model.SbmlModel(ss_model.model),
80+
condition_df=condition_df,
81+
observable_df=observable_df,
82+
measurement_df=measurement_df,
83+
parameter_df=parameter_df
84+
)
85+
86+
# create SBML model for condition with parameters updated from problem
87+
_, condition_model = petab.get_model_for_condition(
88+
petab_problem, "condition_1")
89+
90+
check_model(condition_model)

0 commit comments

Comments
 (0)