Geppetto is a web-based multi-algorithm, multi-scale simulation platform engineered to support the simulation of complex biological systems and their surrounding environment. Geppetto's integrative approach to biological modeling is at the heart of the Open Worm project.
Screenshot 2 - Particle visualisation of a liquid in Geppetto simulated using the fluid dynamics module.
Geppetto is currently used and contributed to by the following groups:
A short tutorial explaining how to implement your own "Hello World" Geppetto bundle is available online.
Here's an article that lists the different bundles (and relative repositories), and available demos as a combination of given bundles. Instructions are available for setting up an Eclipse-based development environment to build and run the contents of the open source repositories.
While the Geppetto platform is engineered with a generic framework capable of encapsulating any algorithm into a module, the OpenWorm project has begun implementing specific modules to meet the particular challenges of its domain. The OpenWorm case study has led to the development of one module to simulate the electrophysiology of neuronal cells and networks, and another to simulate fluid-mechanics based on the smoothed particle hydrodynamics (SPH) algorithm (Solenthaler 2011). SPH provides the ability to simulate soft tissues and their interface to liquids of varying viscosities, which in turn allows for the simulation of forces created by muscles pulling on a non-rigid body.
The decision to build Geppetto came after an analysis of the requirements for a platform to support a full-scale simulation of the C. elegans and potentially even more complex organisms in times to come. Beside the functional requirements, Geppetto's goal is to move away from the common monolithic approach usually found in academic software projects. Geppetto is an open source project and engineers, scientists and developers are welcome to contribute to its development by adding functionalities to existing plugins or writing new ones without having to deal with millions of lines of code with no clearly defined boundaries.
Computational neuroscience has produced software systems, including NEURON and Genesis, that are extremely useful for simulating systems of neurons that include biophysical details (Brette et al, 2007). There also exist a range of other algorithms devised in other areas of computational biology (Barnes & Chu, 2010) for which simulators have been produced (Takahashi, 2004). Several investigations have pointed to the challenges in building a single system that integrates multiple simulation algorithms together into a single biological model (Takahashi et al., 2002, Dada and Mendes, 2007, Cornelis et al., 2012).
Geppetto aims to address these scientific challenges along with some engineering ones. Geppetto's design leverages cutting edge software technologies and its architecture and development follows industry standards.
The analysis of the requirements for Geppetto resulted in a clearly identified set of architectural features that have driven its development:
Geppetto is written in JAVA on top of the OSGi framework. This enables us to build modules as “OSGi bundles”, independent components that allow for clean separations between functional areas that are simulating different aspects of a bio-physical system. On top of OSGi, Spring has been chosen as the glue-framework to assemble a complex system from a set of loosely-coupled components (POJOs) in a consistent and transparent fashion.
Geppetto OSGi based bundles are deployed on the Eclipse Virgo WebServer.
You can check out this article for more information on Geppetto's architectural concepts.
The design artifacts of Geppetto are captured here.
Geppetto is currently in development. A version is released every month with new added features.
Geppetto is being developed to combine cutting edge science into an industry grade software platform. The open source nature is essential in this process and so is your feedback. If you have any question please email us. If you wish to raise a bug, request a feature or an enhancement please do so by logging an issue. If the issues is related to a specific module (e.g. frontend, fluid mechanics simulator, etc.) you can log it directly on it, for the list of modules see here.
Last edited by Matteo Cantarelli,