Morphforge Users Guide

Introduction

morphforge is described in Mike Hull's Ph.D Thesis and this paper(link)

Modern simulators such as NEURON support a range of features; from modelling the internal diffusion of ions within a multicompartmental neuron to the calculation of extracellular potentials. It would require huge number of resources to implement a new interface that was the superset of these features. Rather than try to define a single monolithic system, the approach taken in morphforge is to provide a collection of classes and interfaces which form the core infrastructure, and then use a system of plugins which can be written to implement particular features. For example, morphforge is agnostic to how a synapse model is defined. The core of morphforge defines a minimal interface, and then plugins can be written, which allow a synapse specified in Python or MODL for example to be used with NEURON. This means morphforge naturally splits into two parts, morphforge-core, which contains the core infrastructure, and morphforge-contrib, which contains for example the plugins that define how a synapse model specified in a particular format is mapped to a particular simulator backend.

  mf-core mf-contrib
simulation-analysis
  • Plotting library
  • summary generation infrastructure
  • Trace analysis functions (e.g. spike counting)
simulation
  • classes for defining simulations, (e.g: Cell, Synapse, GapJunction, Channel) and results (e.g. Trace, Event)
  • NEURON backend support
  • mapping of synapse and channel descriptions to simulators, e.g. NEUROML -> NEURON
morphology
  • Classes for defining neuronal morphologies (e.g. Morphology, Segment, Region, MorphLocation )
  • import/export of morphologies (e.g. .SWC)
  • visualisation
core
  • random number seeding & generation
  • file IO
 

morphforge is split into four layers each defining a set of classes that work together as an object-model (Table. 1). The higher layers depend on the lower levels, but lower levels do not need the higher ones, for example, Morphology objects are used by the simulation-layer, but can also be used without it, for example for anatomical reconstructions. The core-layer provides a single point of access to control random number seeding, simulation settings and locations on the filesystem access as well as the plugin infrastructure and utility functions. The morphology-layer provides classes that represent neuronal morphologies as a tree of cylinders and functions for their creation, import, export, rendering, traversal and manipulation. The simulation-layer defines a simulator independent object-model on top of the morphology objects for defining multicompartmental neurons with complex channel distributions. Primitives for defining network connectivity and an interface for recording values during a simulation are also provided. It provides a set of component-libraries to allow objects, such as morphologies, channels and synapses,to be defined once and reused with different parameters as well as an extensible high-level object-model for representing analog signals with units. Finally, the simulationanalysis-layer provides functions for analysing the output of simulations such as spike detection, a visualisation system for easily viewing the outputs of simulations and infrastructure for automatically generating summaries of simulations including the details of components such as channels and synapses.

Reference

Indices and tables