A general biological simulator: the multiscale object oriented simulation environment, MOOSE
© Ray et al; licensee BioMed Central Ltd. 2008
Published: 11 July 2008
The MOOSE project is a next-generation simulator for large, detailed models that span multiple scales of computational biology. It does so using a modular, object oriented data representation combined with an event-driven messaging architecture. This framework is good both for intuitive representation of biological concepts, and for coupling disparate simulation engines. Thus MOOSE is not just a simulator, but a simulation environment. It reimplements, and is backward compatible with, the GENESIS  simulator capabilities, but is designed for multiprocessing, multiple scripting languages, interoperability, and scaling to very large simulations.
Biological entities are implemented in MOOSE as objects whose fields include state variables and whose functions include the ability to calculate the time evolution of these variables. Objects communicate with each other through event-triggered messages that initiate function calls in other objects. Simulations are set up by creating objects (nodes) and messages between them (edges), using scripting languages and declarative data files such as GENESIS .p files.
MOOSE provides a repertoire of classes to create and simulate models in Neuroscience and Systems Biology. A key feature of MOOSE is its ability to encapsulate numerical engines, also known as solvers. These are typically highly optimized numerical programs designed for narrowly specialized domains in computational biology. For example, the Smoldyn  simulator for 3-D single molecule Monte Carlo chemical simulations has been successfully integrated into MOOSE. Other current solvers include chemical kinetic solution engines using the GNU Scientific Library, and a Crank-Nicolson solver for compartmental models of neurons. Several other solvers are under development.
MOOSE is written in C++ with extensive use of templates. It is being parallelized using MPI, but the architecture separates the communication layer so that developers of MOOSE classes just need to implement them serially. It inherits the legacy GENESIS parser, making it backward compatible with GENESIS. MOOSE uses SWIG to interface with the Python programming language. It is open source .
MOOSE is in Beta 1.0.0. It currently supports chemical kinetic, single neuron, and network simulations including most of the core functionalities of GENESIS. Many GENESIS scripts run on MOOSE, including systems biology and kinetic simulations generated by "kinetikit" . Kinetic simulations in MOOSE typically run 10–50 times faster than GENESIS. Compartmental models run at similar speeds as GENESIS. Network models currently run around twice as fast.
The MOOSE website was implemented by GV Harsharani. Steven Andrews helped in integrating Smoldyn engine into MOOSE. This research was supported by DAE-SRC, DBT, NCBS/TIFR and EU-India Grid.
- Wilson MA, Bhalla US, Bower JM: GENESIS: A System for Simulating Neural Networks. Advances in Neural Information Processing Systems. 1989, 1: 485-492.Google Scholar
- Andrews SS, Bray D: Stochastic simulation of chemical reactions with spatial resolution and single molecule detail. Phys Biol. 2004, 1: 137-151. 10.1088/1478-3967/1/3/001.View ArticlePubMedGoogle Scholar
- Bhalla US: Use of Kinetikit and GENESIS for modeling signaling pathways. Methods Enzymol. 2002, 345: 3-23.View ArticlePubMedGoogle Scholar
This article is published under license to BioMed Central Ltd.