Skip to content

Commit 11e6e2c

Browse files
committed
feat: updated to Biosimulators-utils 0.1.114: organized options, added option to control logging; added Python package to specs; added fonts to Docker image
1 parent 8eca48d commit 11e6e2c

File tree

7 files changed

+59
-48
lines changed

7 files changed

+59
-48
lines changed

Dockerfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
FROM python:3.9-slim-buster
2424

25-
ARG VERSION="0.1.11"
25+
ARG VERSION="0.1.12"
2626
ARG SIMULATOR_VERSION=2.6.0
2727

2828
# metadata
@@ -70,6 +70,11 @@ RUN apt-get update -y \
7070
&& rm -rf /var/lib/apt/lists/*
7171
ENV PATH=${PATH}:/opt/BioNetGen-${SIMULATOR_VERSION}/
7272

73+
# fonts for matplotlib
74+
RUN apt-get update -y \
75+
&& apt-get install -y --no-install-recommends libfreetype6 \
76+
&& rm -rf /var/lib/apt/lists/*
77+
7378
# install BioSimulators-compliant command-line interface to BioNetGen
7479
COPY . /root/Biosimulators_BioNetGen
7580
RUN pip install /root/Biosimulators_BioNetGen \

biosimulators.json

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
},
1818
"operatingSystemType": "Linux"
1919
},
20+
"pythonApi": {
21+
"package": "biosimulators-bionetgen",
22+
"module": "biosimulators_bionetgen"
23+
},
2024
"authors": [{
2125
"firstName": "Ali",
2226
"middleName": "Sinan",
@@ -91,7 +95,13 @@
9195
}
9296
],
9397
"references": {
94-
"identifiers": [{
98+
"identifiers": [
99+
{
100+
"namespace": "pypi",
101+
"id": "bionetgen",
102+
"url": "https://pypi.org/project/bionetgen/"
103+
},
104+
{
95105
"namespace": "pypi",
96106
"id": "biosimulators-bionetgen",
97107
"url": "https://pypi.org/project/biosimulators-bionetgen/"
@@ -434,7 +444,7 @@
434444

435445
"modelingFrameworks": [{
436446
"namespace": "SBO",
437-
"id": "SBO_0000295"
447+
"id": "SBO_0000680"
438448
}],
439449
"modelFormats": [{
440450
"namespace": "EDAM",

biosimulators_bionetgen/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.1.11'
1+
__version__ = '0.1.12'

biosimulators_bionetgen/core.py

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
get_variables_results_from_observable_results, add_variables_to_model)
1313
from .warnings import IgnoredBnglFileContentWarning
1414
from biosimulators_utils.combine.exec import exec_sedml_docs_in_archive
15-
from biosimulators_utils.config import get_config
15+
from biosimulators_utils.config import get_config, Config # noqa: F401
1616
from biosimulators_utils.log.data_model import CombineArchiveLog, TaskLog # noqa: F401
1717
from biosimulators_utils.viz.data_model import VizFormat # noqa: F401
1818
from biosimulators_utils.report.data_model import ReportFormat, VariableResults, SedDocumentResults # noqa: F401
@@ -27,11 +27,7 @@
2727
__all__ = ['exec_sedml_docs_in_combine_archive', 'exec_sed_task']
2828

2929

30-
def exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
31-
return_results=False,
32-
report_formats=None, plot_formats=None,
33-
bundle_outputs=None, keep_individual_outputs=None,
34-
raise_exceptions=True):
30+
def exec_sedml_docs_in_combine_archive(archive_filename, out_dir, config=None):
3531
""" Execute the SED tasks defined in a COMBINE/OMEX archive and save the outputs
3632
3733
Args:
@@ -43,12 +39,7 @@ def exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
4339
* HDF5: directory in which to save a single HDF5 file (``{ out_dir }/reports.h5``),
4440
with reports at keys ``{ relative-path-to-SED-ML-file-within-archive }/{ report.id }`` within the HDF5 file
4541
46-
return_results (:obj:`bool`, optional): whether to return the result of each output of each SED-ML file
47-
report_formats (:obj:`list` of :obj:`ReportFormat`, optional): report format (e.g., csv or h5)
48-
plot_formats (:obj:`list` of :obj:`VizFormat`, optional): report format (e.g., pdf)
49-
bundle_outputs (:obj:`bool`, optional): if :obj:`True`, bundle outputs into archives for reports and plots
50-
keep_individual_outputs (:obj:`bool`, optional): if :obj:`True`, keep individual output files
51-
raise_exceptions (:obj:`bool`, optional): whether to raise exceptions
42+
config (:obj:`Config`, optional): BioSimulators common configuration
5243
5344
Returns:
5445
:obj:`tuple`:
@@ -59,21 +50,17 @@ def exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
5950
sed_doc_executer = functools.partial(exec_sed_doc, exec_sed_task)
6051
return exec_sedml_docs_in_archive(sed_doc_executer, archive_filename, out_dir,
6152
apply_xml_model_changes=False,
62-
return_results=return_results,
63-
report_formats=report_formats,
64-
plot_formats=plot_formats,
65-
bundle_outputs=bundle_outputs,
66-
keep_individual_outputs=keep_individual_outputs,
67-
raise_exceptions=raise_exceptions)
53+
config=config)
6854

6955

70-
def exec_sed_task(sed_task, variables, log=None):
56+
def exec_sed_task(sed_task, variables, log=None, config=None):
7157
""" Execute a task and save its results
7258
7359
Args:
7460
sed_task (:obj:`Task`): task
7561
variables (:obj:`list` of :obj:`Variable`): variables that should be recorded
7662
log (:obj:`TaskLog`, optional): log for the task
63+
config (:obj:`Config`, optional): BioSimulators common configuration
7764
7865
Returns:
7966
:obj:`tuple`:
@@ -104,8 +91,9 @@ def exec_sed_task(sed_task, variables, log=None):
10491
* BioNetGen
10592
* :obj:`get_variables_results_from_observable_results`
10693
"""
107-
config = get_config()
108-
log = log or TaskLog()
94+
config = config or get_config()
95+
if config.LOG and not log:
96+
log = TaskLog()
10997

11098
if config.VALIDATE_SEDML:
11199
raise_errors_warnings(
@@ -157,10 +145,11 @@ def exec_sed_task(sed_task, variables, log=None):
157145
variable_results[key] = variable_results[key][-(sed_task.simulation.number_of_points + 1):]
158146

159147
# log action
160-
log.algorithm = alg_kisao_id
161-
log.simulator_details = {
162-
'actions': bionetgen_task.actions,
163-
}
148+
if config.LOG:
149+
log.algorithm = alg_kisao_id
150+
log.simulator_details = {
151+
'actions': bionetgen_task.actions,
152+
}
164153

165154
# return the values of the variables and log
166155
return variable_results, log

biosimulators_bionetgen/utils.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
:License: MIT
77
"""
88

9-
from .config import Config
9+
from .config import Config as SimulatorConfig
1010
from .data_model import Model, ModelBlock, Task, KISAO_SIMULATION_METHOD_ARGUMENTS_MAP # noqa: F401
1111
from .io import write_task, read_simulation_results
12+
from biosimulators_utils.config import Config # noqa: F401
1213
from biosimulators_utils.report.data_model import VariableResults
1314
from biosimulators_utils.sedml.data_model import (ModelAttributeChange, Variable, # noqa: F401
1415
Symbol, UniformTimeCourseSimulation)
@@ -197,12 +198,13 @@ def add_variables_to_model(model, variables):
197198
raise NotImplementedError(msg)
198199

199200

200-
def add_simulation_to_task(task, simulation):
201+
def add_simulation_to_task(task, simulation, config=None):
201202
""" Add a SED simulation to a BioNetGen task
202203
203204
Args:
204205
task (:obj:`Task`): BioNetGen task
205206
simulation (:obj:`UniformTimeCourseSimulation`): SED simulation
207+
config (:obj:`Config`, optional): configuration
206208
207209
Raises:
208210
:obj:`NotImplementedError`: if BioNetGen doesn't support the request algorithm or
@@ -227,7 +229,7 @@ def add_simulation_to_task(task, simulation):
227229

228230
simulate_args['n_steps'] = int(n_steps)
229231

230-
algorithm_substitution_policy = get_algorithm_substitution_policy()
232+
algorithm_substitution_policy = get_algorithm_substitution_policy(config=config)
231233
exec_kisao_id = get_preferred_substitute_algorithm_by_ids(
232234
simulation.algorithm.kisao_id, KISAO_SIMULATION_METHOD_ARGUMENTS_MAP.keys(),
233235
substitution_policy=algorithm_substitution_policy)
@@ -298,7 +300,7 @@ def exec_bionetgen_task(task):
298300
write_task(task, task_filename)
299301

300302
# execute the task
301-
bionetgen_path = Config().bionetgen_path
303+
bionetgen_path = SimulatorConfig().bionetgen_path
302304
try:
303305
subprocess.check_call([bionetgen_path, task_filename, '--outdir', temp_dirname])
304306
except Exception:

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
biosimulators_utils[bngl,logging] >= 0.1.104
1+
biosimulators_utils[bngl,logging] >= 0.1.114
22
kisao
33
pandas

tests/test_core_main.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from biosimulators_bionetgen.core import exec_sed_task, exec_sedml_docs_in_combine_archive
1212
from biosimulators_utils.combine import data_model as combine_data_model
1313
from biosimulators_utils.combine.io import CombineArchiveWriter
14+
from biosimulators_utils.config import get_config
1415
from biosimulators_utils.report import data_model as report_data_model
1516
from biosimulators_utils.report.io import ReportReader
1617
from biosimulators_utils.sedml import data_model as sedml_data_model
@@ -72,13 +73,15 @@ def test_exec_sedml_docs_in_combine_archive(self):
7273
doc, archive_filename = self._build_combine_archive()
7374

7475
out_dir = os.path.join(self.dirname, 'out')
75-
exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
76-
report_formats=[
77-
report_data_model.ReportFormat.h5,
78-
report_data_model.ReportFormat.csv,
79-
],
80-
bundle_outputs=True,
81-
keep_individual_outputs=True)
76+
77+
config = get_config()
78+
config.REPORT_FORMATS = [report_data_model.ReportFormat.h5, report_data_model.ReportFormat.csv,]
79+
config.BUNDLE_OUTPUTS = True
80+
config.KEEP_INDIVIDUAL_OUTPUTS = True
81+
82+
_, log = exec_sedml_docs_in_combine_archive(archive_filename, out_dir, config=config)
83+
if log.exception:
84+
raise log.exception
8285

8386
self._assert_combine_archive_outputs(doc, out_dir)
8487

@@ -87,13 +90,15 @@ def test_exec_sedml_docs_in_combine_archive_with_all_algorithms(self):
8790
doc, archive_filename = self._build_combine_archive(algorithm=alg)
8891

8992
out_dir = os.path.join(self.dirname, alg.kisao_id)
90-
exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
91-
report_formats=[
92-
report_data_model.ReportFormat.h5,
93-
report_data_model.ReportFormat.csv,
94-
],
95-
bundle_outputs=True,
96-
keep_individual_outputs=True)
93+
94+
config = get_config()
95+
config.REPORT_FORMATS = [report_data_model.ReportFormat.h5, report_data_model.ReportFormat.csv,]
96+
config.BUNDLE_OUTPUTS = True
97+
config.KEEP_INDIVIDUAL_OUTPUTS = True
98+
99+
_, log = exec_sedml_docs_in_combine_archive(archive_filename, out_dir, config=config)
100+
if log.exception:
101+
raise log.exception
97102
self._assert_combine_archive_outputs(doc, out_dir)
98103

99104
def test_exec_with_cli(self):

0 commit comments

Comments
 (0)