Below is a necessarily incomplete list of current limitations of Morpheus. Many of these are on our to-do list or under development.
Morpheus uses regular lattice discretization for all spatial processes. It does not support irregular lattices of continuous space models.
The solvers in Morpheus use finite difference schemes with fixed time-steps. Adaptive time-stepping schemes are not available. It does not support solving of stiff ODE systems.
Morpheus can simulate reaction-diffusion systems, but does not support processes that depend on other derivatives in order to model as advection or chemotaxis.
Morpheus supports the cellular Potts model to represent cell shape, motility and adhesion. Depending on the scale at which cell-based models are used, motility of cells may be more suitably modeled in more parsimonious formalisms, such as interacting particle systems. These are currently not available in Morpheus.
Morpheus is an extensible framework and provides a plugin interface to extend its features. However, this requires building from source,
which is currently restricted to developers and collaborators. Therefore, in its current distribution as an application (binaries), extensibility is not supported. To build Morpheus (2.0 beta), please clone the sources from our GitLab repository.
Morpheus heavily relies on muparser for parsing mathematical expressions. Although this provides fast parsing by translating into bytecode, its performance cannot compete with compiled C++ code. Thus, the flexibility gained by using parsed expression invokes a penalty on computational performance. The amount of penalty depends on the number and complexity of parsed expressions and is highly model-dependent. Therefore, in some cases, Morpheus may not be best-suited for large-scale simulations.
See the results of performance and scalability tests for more detailed and quantitative information.
Morpheus uses openMP multithreading to concurrently execute several data-parallel processes. For instance, intracellular ODEs are computed concurrently for each cell
, and the reaction-step in PDEs are computed concurrently per y-line. Although this is a good first approximation, it does not fully exploit parallel computing. As of Morpheus 2.0 beta, the use of multi-threading has been generalized to better exploit computation on multi-core machines. Yet, scalability still heavily depends on the specific simulation model. CPM (sub)models, for instance, are not parallelized.
See the results of performance and scalability tests for more detailed and quantitative information (on Morpheus 1.2).