| Literature DB >> 30881691 |
Joseph L Hellerstein1, Stanley Gu2, Kiri Choi2, Herbert M Sauro2.
Abstract
Biomedical simulations are widely used to understand disease, engineer cells, and model cellular processes. In this article, we explore how to improve the quality of biomedical simulations by developing simulation models using tools and practices employed in software engineering. We refer to this direction as model engineering. Not all techniques used by software engineers are directly applicable to model engineering, and so some adaptations are required. That said, we believe that simulation models can benefit from software engineering practices for requirements, design, and construction as well as from software engineering tools for version control, error checking, and testing. Here we survey current efforts to improve simulation quality and discuss promising research directions for model engineering.Entities:
Keywords: Best Practice; Modeling; Software Engineering; Systems Biology
Mesh:
Year: 2019 PMID: 30881691 PMCID: PMC6406177 DOI: 10.12688/f1000research.15997.1
Source DB: PubMed Journal: F1000Res ISSN: 2046-1402
Figure 1. Illustration of core concepts.
( a) A model of enzyme kinetics is expressed in the Antimony Language. ( b) The simulation object rr is created from the model in ( a). ( c) The experiment uses the simulation object to specify initial values for S and E, runs the simulation, and prints the results.
Figure 2. Snippets of a model of the MAPK cascade that uses variable names that impair readability.
Figure 3. Snippets of a model of the MAPK cascade that uses variable names that promote readability.
Figure 4. Snippet of the glycolysis model in 33.
Figure 5. Snippet of the pentose phosphate pathway model in 34.
Figure 6. Some of the equivalences required between Gly and PPP.
Benefits of model engineering.
The benefits are improvements in reproducibility, readability, and reuse. The benefits are organized by lifecycle phase: requirements (R), design (D), and construction (C).
| SWE Practice | Reproducible | Readable | Reuse |
|---|---|---|---|
| R: Use Cases | ✓ | ✓ | |
| D: Name scope | ✓ | ✓ | |
| D: Code Structure | ✓ | ✓ | |
| C: Domain Specific Languages | ✓ | ✓ | |
| C: Dependency Management | ✓ | ✓ | |
| C: Unit tests | ✓ | ✓ | |
| C: Linters | ✓ | ✓ |