Moogli

./static/images/introPic.png

Table of Contents

Introduction

Moogli (a sister project of MOOSE) is a simulator independent openGL based visualization tool for neural simulations. Moogli can visualize morphology of single/multiple neurons or network of neurons, and can also visualize activity in these cells.

Moogli is like VLC player for neural simulations.

Installation

Additional Software

  1. python2.6/2.7
  2. PyQt4
  3. hdf5
  4. matplotlib
  5. mencoder
  6. libQGLViewer-2.3.15-py & install instructions here
  7. PyQGLViewer0.10 (first install libQGLViewer-2.3.15-py) and untar contents

    cd / PyQGLViewer0.10
    >python setup.py build # to compile
    >python setup.py install # to install on your system
    >python setup.py bdist # to create a binary distribution

Get Moogli

Download and unzip Moogli from git repo

Run Moogli

In terminal, cd to location of unzipped Moogli folder (/Moogli)

>python moogli.py

You will see an white screen with axes on the bottom left.

Supported Formats

./static/images/supportedFormats.png

Input Formats

Currently .xml (MorphML/NeuroML), .csv for visualizaing morphology of cells The .p file format is in development

The format currently employed for data visualization is hdf5. The file structure includes morphology of the cell(s) being visualized. Currently support Morphml (.xml) Neuroml(.xml) and .csv

Moogli now also supports .csv for data visualization. See /samples/timeSeries.csv for example

In future: Employ a standard format for data visualization. Also plans to include electrophys file formats.

Currently: Testing neo compatibility and auto placement of cells.

Save as formats

Save screenshot (.png) of the current display.

Save as movie (.avi) for data visualization. [Users will be able to 'direct' their movies soon]

Defaults

Refer to /Moogli/defaults.py file (the file is self explanatory via comments)

  1. Background color of the scene.
  2. To draw the cells using default settings.
  3. To visualize the cells using default settings.
  4. To use default binning properties.
  5. Speed of visualization updation.
  6. FPS/height/width when saving as .avi

Keyboard & Mouse shortcuts

Keyboard - User can bring this up by hitting 'H' key

./static/images/keyBoardShortcuts.png

Mouse - User can bring this up by hitting 'H' key

./static/images/mouseShortcuts.png

Additionally:

Control + O : Open File
Control + S : Save As
Control + Q : Quit
Spacebar : Play/Pause Visualization

Use Cases

Inspect morphology of cell

File>Open> (/Moogli/samples/mitralCell.xml)

./static/images/mitralCell1.png

Above prompt is only seen when DEFAULT DRAW is False

Selecting to draw all compartments (Button labeled 'A') as cylinders and click 'OK'

alternatively, if not sure

Click 'Use Defaults'

Result:

./static/images/mitralCell2.png

Try displaying some of the compartments in a cell as cylinders and others as capsules.

Display multiple copies of same cell

File>Open> (/Moogli/samples/cablesIncludedExtended.csv)

Accomplished by giving an offset position in the style selection prompt

Result:

./static/images/stylesOffsetPosition.png

Visualizing Parameters

File>Open> (/Moogli/samples/mitral.h5)

The hdf5 file has the data only for 3 compartments. Moogli can handle partial data. Here showing default visualization.

Result:

./static/images/mitral_h5.png

More later …

TO DO

Network Level

There is also the case of visualizing large network of neurons(1000's) In which case, the morphology of individual cell is ignored, and each neuron is represented as spheres/disks which are placed according to a graphviz like algorithm depending on connectivity. (Also support for NetworkML)

In this case, the data may be only spike timing data. But the tree structure of the previous case is still adhered and the connectivity between compartments is stored as text arrays inside hdf5 file itself.

Formats

Employ a standard format for data, HDF5 format ( NeuroHDF? ) Support additionally Electrophys file formats ( neo? ) Support .p file formats

Direction of movie output - cleaner ways to do it - a possible demo?

Examples

More examples /use cases for documentation

Packaging

Easy to install packaging. Specific to each OS.

Additional Information

New Color Maps

If one needs to add other colormaps to the existing, generate a list of color values (rgb) scaled to 1 (ie 0 to 255 = 0 to 1) and pickle this list. Ensure no name conflics when naming the file. Now add this pickled file in the /Moogli/openGLHeaders/colormaps folder. In addition use the script /Moogli/icons/makeColorMap.py to generate an icon for the colormap.

HDF5

./static/images/hdfFileFormat.png

For single/multiple neurons, the data itself is stored in arrays, following a strict tree structure. For example,

filename.h5>cellName>compartmenName>propertyName

corresponds to the arrayof values of that property (can be membrane potential / Ca concentration etc) over time. This is because, it gives an easy intuitive handle to the data.

Known Issues

  1. Drawing of cylinders/capsules at some times, would show up as discontinous elements.[NOW FIXED]
    Issue: Drawing of cylinders in OpenGL has an issue Ref: /Moogli/openGLHeaders/objects.py
    Current fix: Draw as Ball&Sticks instead [THIS IS FIXED NOW]

FAQ

Q. Would Moogli support some specific file format?
A. The idea is to have as many supported formats as possible. Eventually that is.

Q. I was able to see the cell initially, I zoomed out/in, now I do not see the cell!
A. In the /Moogli folder look for ".MoogliState.xml" file and delete it. This arises because of no limitation on zooming.

More later …

License

GNU GPL (3 or later)

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Acknowledgements

Upinder S. Bhalla, Subhasis Ray, Niraj Dudani, Aditya Gilra of NCBS for feedback and encouragment.
Developers of libQGLViewer and its python bindings by Frederic Boudon.
Harsha and punch for the website

Collaborate

We welcome you to collaborate on this project. Please send us your details, and how you can contribute.

Contact

Upinder S. Bhalla : bhalla[at]ncbs[dot]res[dot]in
C Hanuma Chaitanya : chaitanyah[at]ncbs[dot]res[dot]in

Date: 2012-11-05 22:59:16 CET

Org version 7.8.02 with Emacs version 23

Validate XHTML 1.0