Skip to content

Commit 498fe52

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 87f7361 commit 498fe52

File tree

6 files changed

+48
-41
lines changed

6 files changed

+48
-41
lines changed

biosimulators.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
},
1818
"operatingSystemType": "Linux"
1919
},
20+
"pythonApi": {
21+
"package": "biosimulators-libsbmlsim",
22+
"module": "biosimulators_libsbmlsim"
23+
},
2024
"authors": [{
2125
"firstName": "Hiromu",
2226
"lastName": "Takizawa",
@@ -79,7 +83,11 @@
7983
}
8084
],
8185
"references": {
82-
"identifiers": [],
86+
"identifiers": [{
87+
"namespace": "pypi",
88+
"id": "biosimulators-libsbmlsim",
89+
"url": "https://pypi.org/project/biosimulators-libsbmlsim/"
90+
}],
8391
"citations": [{
8492
"title": "LibSBMLSim: a reference implementation of fully functional SBML simulator",
8593
"authors": "Hiromu Takizawa, Kazushige Nakamura, Akito Tabira, Yoichi Chikahara, Tatsuhiro Matsui, Noriko Hiroi & Akira Funahashi",

biosimulators/Dockerfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Base OS
22
FROM python:3.9-slim-buster
33

4-
ARG VERSION=0.0.2
4+
ARG VERSION=0.0.3
55
ARG SIMULATOR_VERSION=1.4.0
66
ARG LIBSBML_VERSION=5.19.0
77

@@ -78,6 +78,11 @@ RUN apt-get update -y \
7878
&& apt-get autoremove -y \
7979
&& rm -rf /var/lib/apt/lists/*
8080

81+
# fonts for matplotlib
82+
RUN apt-get update -y \
83+
&& apt-get install -y --no-install-recommends libfreetype6 \
84+
&& rm -rf /var/lib/apt/lists/*
85+
8186
# Copy code for command-line interface into image and install it
8287
COPY biosimulators/ /root/biosimulators/
8388
RUN pip install /root/biosimulators \
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.0.2'
1+
__version__ = '0.0.3'

biosimulators/biosimulators_libsbmlsim/core.py

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from .data_model import KISAO_ALGORITHMS_MAP, get_integrator
1010
from biosimulators_utils.combine.exec import exec_sedml_docs_in_archive
11-
from biosimulators_utils.config import get_config
11+
from biosimulators_utils.config import get_config, Config # noqa: F401
1212
from biosimulators_utils.log.data_model import CombineArchiveLog, TaskLog # noqa: F401
1313
from biosimulators_utils.viz.data_model import VizFormat # noqa: F401
1414
from biosimulators_utils.report.data_model import ReportFormat, VariableResults, SedDocumentResults # noqa: F401
@@ -31,11 +31,7 @@
3131
__all__ = ['exec_sedml_docs_in_combine_archive', 'exec_sed_task']
3232

3333

34-
def exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
35-
return_results=False,
36-
report_formats=None, plot_formats=None,
37-
bundle_outputs=None, keep_individual_outputs=None,
38-
raise_exceptions=True):
34+
def exec_sedml_docs_in_combine_archive(archive_filename, out_dir, config=None):
3935
""" Execute the SED tasks defined in a COMBINE/OMEX archive and save the outputs
4036
4137
Args:
@@ -47,12 +43,7 @@ def exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
4743
* HDF5: directory in which to save a single HDF5 file (``{ out_dir }/reports.h5``),
4844
with reports at keys ``{ relative-path-to-SED-ML-file-within-archive }/{ report.id }`` within the HDF5 file
4945
50-
return_results (:obj:`bool`, optional): whether to return the result of each output of each SED-ML file
51-
report_formats (:obj:`list` of :obj:`ReportFormat`, optional): report format (e.g., csv or h5)
52-
plot_formats (:obj:`list` of :obj:`VizFormat`, optional): report format (e.g., pdf)
53-
bundle_outputs (:obj:`bool`, optional): if :obj:`True`, bundle outputs into archives for reports and plots
54-
keep_individual_outputs (:obj:`bool`, optional): if :obj:`True`, keep individual output files
55-
raise_exceptions (:obj:`bool`, optional): whether to raise exceptions
46+
config (:obj:`Config`, optional): BioSimulators common configuration
5647
5748
Returns:
5849
:obj:`tuple`:
@@ -63,31 +54,28 @@ def exec_sedml_docs_in_combine_archive(archive_filename, out_dir,
6354
sed_doc_executer = functools.partial(exec_sed_doc, exec_sed_task)
6455
return exec_sedml_docs_in_archive(sed_doc_executer, archive_filename, out_dir,
6556
apply_xml_model_changes=True,
66-
return_results=return_results,
67-
report_formats=report_formats,
68-
plot_formats=plot_formats,
69-
bundle_outputs=bundle_outputs,
70-
keep_individual_outputs=keep_individual_outputs,
71-
raise_exceptions=raise_exceptions)
57+
config=config)
7258

7359

74-
def exec_sed_task(task, variables, log=None):
60+
def exec_sed_task(task, variables, log=None, config=None):
7561
''' Execute a task and save its results
7662
7763
Args:
7864
task (:obj:`Task`): task
7965
variables (:obj:`list` of :obj:`Variable`): variables that should be recorded
8066
log (:obj:`TaskLog`, optional): log for the task
67+
config (:obj:`Config`, optional): BioSimulators common configuration
8168
8269
Returns:
8370
:obj:`tuple`:
8471
8572
:obj:`VariableResults`: results of variables
8673
:obj:`TaskLog`: log
8774
'''
88-
config = get_config()
75+
config = config or get_config()
8976

90-
log = log or TaskLog()
77+
if config.LOG and not log:
78+
log = TaskLog()
9179

9280
model = task.model
9381
sim = task.simulation
@@ -121,7 +109,7 @@ def exec_sed_task(task, variables, log=None):
121109
raise NotImplementedError(msg)
122110

123111
# determine the simulation algorithm
124-
algorithm_substitution_policy = get_algorithm_substitution_policy()
112+
algorithm_substitution_policy = get_algorithm_substitution_policy(config=config)
125113
exec_kisao_id = get_preferred_substitute_algorithm_by_ids(
126114
sim.algorithm.kisao_id, KISAO_ALGORITHMS_MAP.keys(),
127115
substitution_policy=algorithm_substitution_policy)
@@ -267,18 +255,19 @@ def exec_sed_task(task, variables, log=None):
267255
raise NotImplementedError(msg)
268256

269257
# log action
270-
log.algorithm = exec_kisao_id
271-
log.simulator_details = {
272-
'method': "simulateSBMLFromFile",
273-
'arguments': {
274-
'sim_time': sim.output_end_time,
275-
'dt': time_step,
276-
'print_interval': print_interval,
277-
'print_amount': print_amount,
278-
'method': integrator,
279-
'use_lazy_method': use_lazy_newton_method,
280-
},
281-
}
258+
if config.LOG:
259+
log.algorithm = exec_kisao_id
260+
log.simulator_details = {
261+
'method': "simulateSBMLFromFile",
262+
'arguments': {
263+
'sim_time': sim.output_end_time,
264+
'dt': time_step,
265+
'print_interval': print_interval,
266+
'print_amount': print_amount,
267+
'method': integrator,
268+
'use_lazy_method': use_lazy_newton_method,
269+
},
270+
}
282271

283272
# return results and log
284273
return variable_results, log

biosimulators/requirements.txt

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

biosimulators/tests/test_core_main.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from biosimulators_libsbmlsim.data_model import KISAO_ALGORITHMS_MAP
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.sedml.data_model import (
1516
SedDocument, Model, ModelLanguage, UniformTimeCourseSimulation, Task, Variable, Symbol,
1617
Algorithm, AlgorithmParameterChange,
@@ -260,9 +261,13 @@ def test_exec_sedml_docs_in_combine_archive(self):
260261
CombineArchiveWriter().run(archive, archive_dirname, archive_filename)
261262

262263
out_dir = os.path.join(self.dirname, 'results')
263-
core.exec_sedml_docs_in_combine_archive(
264-
archive_filename, out_dir,
265-
report_formats=[report_data_model.ReportFormat.h5])
264+
265+
config = get_config()
266+
config.REPORT_FORMATS = [report_data_model.ReportFormat.h5]
267+
268+
_, log = core.exec_sedml_docs_in_combine_archive(archive_filename, out_dir, config=config)
269+
if log.exception:
270+
raise log.exception
266271

267272
results = ReportReader().run(report, out_dir, 'sim.sedml/report', format=report_data_model.ReportFormat.h5)
268273

0 commit comments

Comments
 (0)