This project contains a reusable, reproducible, understandable, and extensible reimplementation of the one-dimensional model of the rabbit atrioventricular node by Inada et al. [1]. InaMo is written in Modelica and follows our guidelines for writing models in MoDROGH-languages [2].
- Composed of small modules with minimal interfaces that are reused throughout the code to avoid code duplication
- Declarative code that focuses on conveying biological meaning instead of technical implementation details
- Reference simulation data published in separate repository inamo-ref
- Variables and parameters with speaking names, SI units, and documentation strings
- Explanations and literature references for all model components
- A reference and/or rationale for every parameter value
- Extensive unit tests based on reference plots from literature
- Graphical representation of components and whole model
- HTML documentation that is generated from the model code using MoST.jl (WIP)
- A changelog that captures all significant changes to this project
- Continuous integration pipelines that guarantees that
- the full environment required for simulation can be obtained from
.travis.yml
- models can be simulated without errors
- simulations produce identical results to reference
- simulations work on a machine that is physically separated from development environment
- units are consistent across all models
- documentation remains up to date (WIP)
- the full environment required for simulation can be obtained from
To simulate the models in this repository on your own machine, you can use the following steps:
- Download and install the following software for your operating system
- OpenModelica
- Julia (for unit tests)
- The Python distribution Anaconda (for plots)
- alternatively install the packages listed in
requirements.txt
for your existing Python version
- alternatively install the packages listed in
- Clone this repository with Git or download a ZIP file of the current master branch and extract it with an archive manager of your choice.
- Run the following commands in a command prompt from the main folder of this project
julia -e 'using Pkg; Pkg.add("ModelicaScriptingTools")'
(installs MoST.jl)julia scripts/unittests.jl
(runs unittests)python scripts/plot_validation.py
(produces plots)
Alternatively, you can also simulate the models without Python and Julia by using the OpenModelica Connection Editor (OMEdit):
- Download and install OpenModelica for your operating system
- Start OMEdit and open the folder
InaMo
with "File" → "Load Library". - Open the model you want to simulate, e.g.
InaMo.Examples.FullCell.AllCells
(select from "Libraries Browser" on the left hand side with a double click). - Simulate the model with "Simulation" → "Simulate".
- In the "Variables Browser" on the right hand side select the variable
an.cell.v
,n.cell.v
, andnh.cell.v
.
A detailed documentation of InaMo can be found on GitHub pages. (WIP)
[1] S. Inada, J. C. Hancox, H. Zhang, and M. R. Boyett, “One-dimensional mathematical model of the atrioventricular node including atrio-nodal, nodal, and nodal-his cells,” Biophys. J., vol. 97, no. 8, pp. 2117–2127, 2009, doi: 10.1016/j.bpj.2009.06.056.
[2] C. Schölzel, V. Blesius, G. Ernst, and A. Dominik, “The impact of mathematical modeling languages on model quality in systems biology: A software engineering perspective,” bioRxiv, preprint 10.1101/2019.12.16.875260v3, 2020. doi: 10.1101/2019.12.16.875260.
This project is described in the following article:
C. Schölzel, V. Blesius, G. Ernst, A. Goesmann, and A. Dominik, “Countering reproducibility issues in mathematical models with software engineering techniques: A case study using a one-dimensional mathematical model of the atrioventricular node,” PLoS ONE, vol. 16, no. 7, p. e0254749, 2021, doi: 10.1371/journal.pone.0254749.