Skip to content

Commit 4f5cefc

Browse files
authored
Simplify test model creation - use simplesbml (#139)
* Simplify test model creation - use simplesbml * Replace deprecated `tests_require` in setup.py
1 parent 9a49449 commit 4f5cefc

File tree

8 files changed

+111
-153
lines changed

8 files changed

+111
-153
lines changed

.github/workflows/ci_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
run: |
4141
python -m pip install --upgrade pip
4242
pip install -r .ci_pip_reqs.txt
43-
pip install .[reports,combine]
43+
pip install .[reports,combine,tests]
4444
4545
- name: Run flake8
4646
run: |

setup.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,15 @@ def absolute_links(txt):
6767
'jsonschema',
6868
],
6969
include_package_data=True,
70-
tests_require=['flake8', 'pytest', 'python-libcombine'],
7170
python_requires='>=3.7.1',
7271
entry_points=ENTRY_POINTS,
7372
extras_require={
73+
'tests': [
74+
'flake8',
75+
'pytest',
76+
'python-libcombine',
77+
'simplesbml'
78+
],
7479
'reports': ['Jinja2'],
7580
'combine': ['python-libcombine>=0.2.6'],
7681
'doc': [

tests/test_combine.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
]
1313

1414

15-
def test_combine_archive(minimal_sbml_model):
15+
def test_combine_archive():
1616
"""Test `create_combine_archive` and `Problem.from_combine`"""
1717

1818
# Create test files
19-
document, _ = minimal_sbml_model
19+
import simplesbml
20+
ss_model = simplesbml.SbmlModel()
2021

2122
# Create tables with arbitrary content
2223
measurement_df = pd.DataFrame(data={
@@ -69,7 +70,7 @@ def test_combine_archive(minimal_sbml_model):
6970
as tempdir:
7071
# Write test data
7172
outdir = Path(tempdir)
72-
petab.write_sbml(document, outdir / sbml_file_name)
73+
petab.write_sbml(ss_model.document, outdir / sbml_file_name)
7374
petab.write_measurement_df(
7475
measurement_df, outdir / measurement_file_name)
7576
petab.write_parameter_df(

tests/test_lint.py

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33
from math import nan
44
from unittest.mock import patch
55

6-
import libsbml
76
import pandas as pd
87
import pytest
98

109
import petab
11-
from petab import (lint, sbml) # noqa: E402
10+
from petab import lint
1211
from petab.C import *
1312

1413
# import fixtures
@@ -17,7 +16,7 @@
1716
]
1817

1918

20-
def test_assert_measured_observables_present_in_model():
19+
def test_assert_measured_observables_present():
2120
# create test model
2221

2322
measurement_df = pd.DataFrame(data={
@@ -211,35 +210,32 @@ def test_assert_no_leading_trailing_whitespace():
211210

212211

213212
def test_assert_model_parameters_in_condition_or_parameter_table():
214-
document = libsbml.SBMLDocument(3, 1)
215-
model = document.createModel()
216-
model.setTimeUnits("second")
217-
model.setExtentUnits("mole")
218-
model.setSubstanceUnits('mole')
219-
sbml.add_global_parameter(model, 'parameter1')
220-
sbml.add_global_parameter(model, 'noiseParameter1_')
221-
sbml.add_global_parameter(model, 'observableParameter1_')
213+
import simplesbml
214+
ss_model = simplesbml.SbmlModel()
215+
ss_model.addParameter('parameter1', 0.0)
216+
ss_model.addParameter('noiseParameter1_', 0.0)
217+
ss_model.addParameter('observableParameter1_', 0.0)
218+
sbml_model = ss_model.model
222219

223220
lint.assert_model_parameters_in_condition_or_parameter_table(
224-
model, pd.DataFrame(columns=['parameter1']), pd.DataFrame()
221+
sbml_model, pd.DataFrame(columns=['parameter1']), pd.DataFrame()
225222
)
226223

227224
lint.assert_model_parameters_in_condition_or_parameter_table(
228-
model, pd.DataFrame(), pd.DataFrame(index=['parameter1']))
225+
sbml_model, pd.DataFrame(), pd.DataFrame(index=['parameter1']))
229226

230227
with pytest.raises(AssertionError):
231228
lint.assert_model_parameters_in_condition_or_parameter_table(
232-
model,
229+
sbml_model,
233230
pd.DataFrame(columns=['parameter1']),
234231
pd.DataFrame(index=['parameter1']))
235232

236233
lint.assert_model_parameters_in_condition_or_parameter_table(
237-
model, pd.DataFrame(), pd.DataFrame())
234+
sbml_model, pd.DataFrame(), pd.DataFrame())
238235

239-
sbml.create_assigment_rule(model, assignee_id='parameter1',
240-
formula='parameter2')
236+
ss_model.addAssignmentRule('parameter1', 'parameter2')
241237
lint.assert_model_parameters_in_condition_or_parameter_table(
242-
model, pd.DataFrame(), pd.DataFrame())
238+
sbml_model, pd.DataFrame(), pd.DataFrame())
243239

244240

245241
def test_assert_noise_distributions_valid():
@@ -406,10 +402,10 @@ def test_assert_measurement_conditions_present_in_condition_table():
406402
measurement_df=measurement_df, condition_df=condition_df)
407403

408404

409-
def test_check_condition_df(minimal_sbml_model):
405+
def test_check_condition_df():
410406
"""Check that we correctly detect errors in condition table"""
411-
412-
_, sbml_model = minimal_sbml_model
407+
import simplesbml
408+
ss_model = simplesbml.SbmlModel()
413409

414410
condition_df = pd.DataFrame(data={
415411
CONDITION_ID: ['condition1'],
@@ -419,29 +415,29 @@ def test_check_condition_df(minimal_sbml_model):
419415

420416
# parameter missing in model
421417
with pytest.raises(AssertionError):
422-
lint.check_condition_df(condition_df, sbml_model)
418+
lint.check_condition_df(condition_df, ss_model.model)
423419

424420
# fix:
425-
sbml_model.createParameter().setId('p1')
426-
lint.check_condition_df(condition_df, sbml_model)
421+
ss_model.addParameter('p1', 1.0)
422+
lint.check_condition_df(condition_df, ss_model.model)
427423

428424
# species missing in model
429425
condition_df['s1'] = [3.0]
430426
with pytest.raises(AssertionError):
431-
lint.check_condition_df(condition_df, sbml_model)
427+
lint.check_condition_df(condition_df, ss_model.model)
432428

433429
# fix:
434-
sbml_model.createSpecies().setId('s1')
435-
lint.check_condition_df(condition_df, sbml_model)
430+
ss_model.addSpecies("[s1]", 1.0)
431+
lint.check_condition_df(condition_df, ss_model.model)
436432

437433
# compartment missing in model
438-
condition_df['c1'] = [4.0]
434+
condition_df['c2'] = [4.0]
439435
with pytest.raises(AssertionError):
440-
lint.check_condition_df(condition_df, sbml_model)
436+
lint.check_condition_df(condition_df, ss_model.model)
441437

442438
# fix:
443-
sbml_model.createCompartment().setId('c1')
444-
lint.check_condition_df(condition_df, sbml_model)
439+
ss_model.addCompartment(comp_id='c2', vol=1.0)
440+
lint.check_condition_df(condition_df, ss_model.model)
445441

446442

447443
def test_check_ids():

tests/test_observables.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,13 @@ def test_write_observable_df():
6161
assert (observable_df == re_df).all().all()
6262

6363

64-
def test_get_output_parameters(minimal_sbml_model):
64+
def test_get_output_parameters():
6565
"""Test measurements.get_output_parameters."""
6666
# sbml model
67-
_, model = minimal_sbml_model
68-
69-
p = model.createParameter()
70-
p.setId('fixedParameter1')
71-
p.setName('FixedParameter1')
72-
73-
p = model.createParameter()
74-
p.setId('observable_1')
75-
p.setName('Observable 1')
67+
import simplesbml
68+
ss_model = simplesbml.SbmlModel()
69+
ss_model.addParameter('fixedParameter1', 1.0)
70+
ss_model.addParameter('observable_1', 1.0)
7671

7772
# observable file
7873
observable_df = pd.DataFrame(data={
@@ -82,7 +77,8 @@ def test_get_output_parameters(minimal_sbml_model):
8277
NOISE_FORMULA: [1],
8378
}).set_index(OBSERVABLE_ID)
8479

85-
output_parameters = petab.get_output_parameters(observable_df, model)
80+
output_parameters = petab.get_output_parameters(
81+
observable_df, ss_model.model)
8682

8783
assert output_parameters == ['offset', 'scaling']
8884

0 commit comments

Comments
 (0)