Project Proposals for Google Summer of Code 2013

Google Summer of Code is a global program that offers post-secondary student developers ages 18 and older stipends, financed by Google, to write code for various open source software projects. Students can apply to take part in projects proposed by mentoring organizations – you can see our proposed projects below. Accepted student applicants are paired with a mentor or mentors from the participating projects. To learn more about the program, use the links under Further Information at the bottom of the page.

Proposals and ideas for potential INCF projects within Google Summer of Code:

Optimising MRI Image analysis on a BlueGene/Q super-computer for diffusion guided Quantitative Susceptibility Mapping (dQSM)

Diffusion-Guided Quantitative Susceptibility Mapping (dQSM) is a novel method for estimating magnetic susceptibilities from magnetic resonance images. The method promises the ability to quantify iron content in brain tissue in relation to neurodegenerative disorders such as Alzheimer's and Parkinsons diseases. dQSM is a computationally intensive method.

There are currently two software implementations: a parallel processing implementation that runs in 16 hours on 4096 cores of the IBM BlueGene/Q Victorian Life Science Computation Initiative (VLSCI) supercomputer, Avoca; and a GPU implementation that completes in 1.1 hours on 16 Kepler K10 GPUs.

We propose a project to develop an optimised parallel processing implementation for an IBM BlueGene/Q supercomputer with 65,536 PowerPC based 1.6GHz cores and a total of 64TB RAM. The developer would be expected to work closely with the supervisors and researchers to analyse dQSM both mathematically and algorithmically with the purpose of optimising computation efficiency.

Our aim is to determine the best computation time achievable on the BlueGene/Q and compare it to the efficiency of the GPU implementation.

Mentors: Amanda Ng (Monash University, INCF Victoria Node) David G Barnes (Monash University, INCF Victoria Node) Leigh Johnston (University of Melbourne)

Implementation of a medical imaging Graph Cuts Library

Graph cuts (GC) and related graph based algorithms for segmentation have been proposed and used extensively in imaging and computer vision. While most of the algorithms have been developed for 2D imaging, many have been updated to 3D for use in medical imaging.

However the uptake of graph cuts into medical imaging has been slow. This has been due to various reasons but one of the major factors has been the availability of a software library for graph cuts that is suitable for medical imaging purposes. Moreover the currently available software makes it difficult to use GC in an interactive manner.

The aim of this project is to develop a graph cuts library for medical imaging purposes. The library will be developed within the ITK framework and will support segmentation of 3D images.

Moreover it is envisaged that the library will benefit both from multi-core systems as well as GPU accelerators. Another feature of the library will the lazy evaluation of edge weights, which will enable interactive selection of parameters.

Mentors: Parnesh Raniga (CSIRO, Monash University) David G. Barnes (Monash University, INCF Victoria Node)

A neuronal model builder using the Multiscale-GUI Framework for MOOSE

Description: MOOSE is a simulation environment for computational biology spanning from interaction between single molecules to large networks of biologically realistic neurons. Currently Python scripting is the primary way of model creation in MOOSE. We are trying to facilitate multiscale model development for students and researchers by developing a "Multi-scale GUI". This is a plugin-based graphical user interface for MOOSE using Python and Qt. This GUI framework is designed to work with plugins for models of each scale, like chemical kinetics, single ion channels, single neurons, populations of neurons and networks of such populations. This GUI will be useful for students and researchers who are familiar with neurobiology but not keen on programming.

Aims: Developing a plugin for editing neuronal models in this GUI. The model-builder will extend existing high-level widgets and implement specific widgets for representing elements in neuronal models, handles to connect them and manage the graphical layout of these elements according to neuronal morphology and connectivity. The GUI will map the graphical elements and user actions to underlying MOOSE objects and functions via its Python interface. A plugin to visualize chemical kinetics models is already available in MOOSE repository and can be used as an example.

Skills: Working knowledge of Python and any modern GUI toolkit, preferably Qt.

Mentors: Subhasis Ray, Upi Bhalla (INCF Node India)

An XML-based language for describing multiscale models spanning molecules to neuronal networks

Description: MOOSE is a "multiscale" simulator for biology. This means that it can simulate biological processes spanning many levels of detail: from individual ions and molecules bouncing around in space, to complex biochemical reactions taking place in a rich soup inside a living cell, to the electrical activity flowing along intricate connections between neurons in the brain. More importantly, "multiscale" means that MOOSE can handle calculations for these vastly different levels of detail, and all the interactions between them, all in a single simulation! Such multiscale interactions can be important. For instance, it is known that when the brain stores a memory, a crucial role is played by the interplay between neurons and certain biochemical reactions inside them. This project involves designing an XML-based language to describe multiscale models, and to write MOOSE code to import and export such models. An open language like this is very useful for migrating models between simulators, and for creating public repositories of useful models.

Aims: This project will involve 2 things:

  1. Designing an XML-based language that can describe multiscale models. A few markup languages have already been standardized to handle the individual components. NeuroML and NineML can encode detailed models of neurons and their networks, SBML is a mature language for describing complex biochemical reactions, and LEMS is a general-purpose model description language. In this project, you will design a markup language that allows one to pick models encoded in the above formats (NeuroML, SBML, etc.), and to specify precisely how to couple them in order to create a truly multiscale model.
  2. Writing a reference implementation. The next aim is to write code that can import multiscale models into MOOSE by parsing XML encoded in the above language. If you write code that also does the opposite (i.e., export models from MOOSE back to the multiscale markup language), that'll be fantastic! MOOSE is written in C++, and a Python scripting interface allows one to easily create models and simulate them. The model importer/exporter should ideally be written in C++, but can instead be prototyped in Python if necessary.

Skills: Python and XML. C++ desirable.

Mentors: Niraj Dudani, Upi Bhalla (INCF Node India)

Open source, cross simulator, large scale cortical models

Description: An increasing number of studies are using large scale network models incorporating realistic connectivity to understand information processing in cortical structures. High performance computational resources are becoming more widely available to computational neuroscientists for this type of modelling and general purpose, well tested simulation environments such as NEURON and NEST are widely used. In addition, hardware solutions (based on custom neuromorphic hardware or off the shelf FPGA/GPU hardware) are in development, promising ever larger, faster simulations.

However, there is a lack of well tested, community maintained network model examples which can work across all of these simulation solutions, which both incorporate realistic cell and network properties and provide networks of sufficient complexity to test the performance and scalability of these platforms. This work will involve converting a number of published large scale network models into open, simulator independent formats such as PyNN, NeuroML and NineML, testing them across multiple simulator implementations and making them available to the community through the Open Source Brain repository.

Skills required: Python; XML; open source development; computational modelling experience.

Skills desirable: Java experience; a background in theoretical neuroscience and/or large scale modelling.


  1. Select a number of large scale network models for the conversion & testing process. Examples could include Izhikevich and Edelman 2008, Hill and Tononi 2005, Potjans and Diesmann 2012.
  2. Convert network structure and cell/synaptic properties to PyNN and NeuroML. Where appropriate use the simulator independent specification in LEMS and/or NineML to specify cell/synapse dynamics & to allow mapping to simulators. Implementing extensions to PyNN, NeuroML or tools such as Pyramidal may be required.
  3. Make models available on the Open Source Brain repository, along with documentation and references.

Mentors: Andrew Davison (French INCF Node), Padraig Gleeson (UK INCF Node)

Automated provenance capture for computational experiments: a toolkit for reproducible research

In computational, simulation-based science, reproduction of previous experiments, and establishing the provenance of results, ought to be easy, given that computers are deterministic, not suffering from the problems of inter-subject and trial-to-trial variability that make reproduction of biological experiments more challenging.

In general, however, it is not easy, perhaps due to the complexity of our code and our computing environments, and the difficulty of capturing every essential piece of information needed to reproduce a computational experiment using existing tools such as spreadsheets, version control systems and paper noteboooks.

Sumatra is a tool for managing and tracking projects based on numerical simulation or analysis, with the aim of supporting reproducible research. It can be thought of as an automated electronic lab notebook for simulation/analysis projects. It consists of (1) a command-line interface, smt, for launching simulations/analyses with automatic recording of information about the context, annotating these records, linking to data files, etc. (2) a web interface with a built-in web-server, smtweb, for browsing and annotating simulation/analysis results. (3) a Python API, on which smt and smtweb are based, that can be used in your own scripts in place of using smt. (4) a LaTeX package and Sphinx extension for including Sumatra-tracked figures and links to provenance information in papers and other documents. Skills A working knowledge of Python plus either: (1) experience with at least one other widely-used scientific programming language (e.g. C++, Matlab, R); (2) experience with Python-based web frameworks (e.g. Django) and with client-side Javascript development; (3) experience with the semantic web.

Aims: This project would involve adding functionality to Sumatra in one or more of the following three areas:

  1. adding support for projects written in compiled languages (C, C++, Java) and for mixed-language projects.
  2. support for exporting provenance information using the W3C PROV data model, for interoperability with other provenance-tracking tools.
  3. enhancing the web and command-line interfaces to provide different views of a project, including automatic generation of bash scripts, and a timeline view mixing provenance information, version control commits and freeform entries.

Mentored by Andrew Davison (French INCF Node).

Object Oriented Python kernel Current Source Density toolbox (pykCSD)

Local field potential, the low frequency part of extracellular electrical recordings, is a measure of neural activity reflecting mainly dendritic processing of synaptic inputs to neuronal populations. To localize synaptic dynamics it is very useful, whenever possible, to estimate the density of trans-membrane current sources (CSD) generating the potentials.

Kernel Current Source Density (kCSD; Potworowski et al., 2012) is a method for carrying out such estimations. One of its strengths is the possibility of estimation from an arbitrary distribution of electrodes, whereas all the previous methods required the measurement points to be uniformly distributed.

The method involves inverting a forward modeling scheme which is different depending on whether the electrodes are distributed along a straight line (laminar multielectrodes), planes (planar multielectrodes or aggregated data from laminar multielectrodes), or if they are distributed in a volume.

Matlab scripts carrying out the method in the laminar and planar case exist already. A 3D variant is in to be developed. However, the running time of the scripts for large data sets can be poor. The aim of this project is to create a python implementation of the method for all the dimensionalities, that would also address the performance issues. An object oriented design would be desirable such that all the common aspects would be encapsulated in one class, from which classes dedicated to concrete dimensionalities of data would inherit.


  • Object oriented programming in python
  • Working knowledge of numpy and matplotlib python packages.
  • Interest in numerical programming and machine learning

Aim: An object oriented Python implementation of the kCSD method.

Mentors: Jan Potworowski, Szymon Łęski and Daniel Wójcik, Nencki Institute of Experimental Biology and INCF Node Poland

Online repository of brain tissue images

In many neuroscience experiments one obtains brain tissue of animals. The tissue is sliced and stained for the analysis and when the experiment is over the slices are disposed of or covered by dust on one of countless laboratory shelves. If another scientist wants to access the data, it is often necessary to perform redundant experiments which means a waste of time, money and life of further animals. An improvement of the present situation would be a repository of images of brain tissue slices with controlled access to the data geared towards open sharing of data. This is the aim of project: to facilitate online sharing of slice images and related metadata.

An open server software for maintaining repositories of two-dimensional brain images of different modalities (stained sections, blockfaces, X-ray, MRI scan planes etc.) is being created. The repository functionality includes image upload, online browsing (in a manner similar to Googlemaps) and sharing. The software is designed to allow creation of private repositories by interested entities (after release) and will be used as a basis of a world-wide accessible repository.

Image upload

One of the key functionalities of the repository is the ability to upload large image files (up to 1 GB) in a convenient and robust way. In practice one often has many images of common origin (the same experiment / subject / staining) and it should be possible to upload them simultaneously.

The repository users are expected to have no special IT skills.

We believe that it is possible to improve the current solution and make it much more error-proof and user-friendly. Because of enormous size of the uploads it would be very useful to provide a mechanism of resuming a broken transfer.

Aim: Improve current solution / provide a brand new solution for image upload to the repository.

Skills: Knowledge of HTTP, HTML5, Javascript (jQuery, AJAX), Python (CherryPy?), or other data transmission protocol and web-development tools for its user-friendly implementation. Desired knowledge of software and user interface engineering.

An online annotation editor for the service.

The scans of brain slices are often accompanied by annotations such as outlines indicating brain regions, stimulation areas or any other information significant for the slice. The SVG format is a natural choice for the annotations. The goal of this summer project is to code a functionality of the service allowing to create or modify these annotations online, possibly integrating already developed solutions rather than developing a new code from scratch.

Skills: A working knowledge of SVG. A working knowledge of web application engineering (in particular fluency in javascript is desirable).

Aim: Develop an outline editor (javascript based or other) of SVG outlines and assure integrity with the service (communication with the outlines database and the HTTP server) and possibly with

Mentors: Jakub Kowalski and Jan Potworowski, Nencki Institute of Experimental Biology and INCF Node Poland

G-Node Client for INCF Dataspace

Recently INCF has launched the Dataspace - a platform to enable collaboration between researchers through the sharing of neuroscience data, text, images, sounds, movies, models and simulations. This platform is based on iRODS and physically integrates several data hubs, federated together. However, the INCF Dataspace is not the only system hosting neuroscience data. Several other data platforms are available, including the data management system developed at the German Neuroinformatics Node, which provides direct access to neuroscience data via a well-defined API. The aim of this project is to develop a client application that allows Dataspace users to search and access data at the G-Node, thus integrating available G-Node neuroscience data into the Dataspace federation.

Technically: G-Node system provides a REST-full API, which is supposed to be used by the iRODS Client application to access the data. The API is JSON-based.

Skills: An understanding of web services and REST (HTTP, JSON/XML, caching, etc.), good Linux system programming experience, shell scripting, C/C++.

Mentors: Andrey Sobolev (German INCF Node) and Raphael Ritz (INCF Secretariat)

Enhanced iOS Conference App

For the Bernstein Conference in 2012 the German Neuroinformatics Node (G-Node) has created an iOS Application [1] that contained all necessary information about the conference, including all abstracts. The application is open source so it can be reused in future conferences like the annual INCF congress.

Even though all the basic functionality of a conference guide and proceedings book are present, there is still a lot of features and enhancements that can be made to improve the tool, including:

  • iPad support - custom notes (per event and abstract)
  • synchronisation across devices
  • custom itinerary planner and reminder
  • online updates of schedule changes and news

Skills: A good knowledge of Objective-C (or C and C++) is as necessary as a good understanding of GUI programming, like the idea of widgets, the MFC pattern and so forth. Knowledge of the iOS platform is highly recommended.

Mentor: Christian Kellner and the German INCF Node core development team


Android Conference Mobile App

Electronic versions of conference guides and proceedings are getting more and more popular and are not only a valuable add-on to printed copies but might replace them in the long run entirely. It therefore is obvious that there is demand for a open source conference mobile application that could be (re-)used for different conferences. For the iOS platform a basic version was provided by the German Neuroinformatics Node (G-Node) for the Bernstein Conference 2012 (see " iOS Conference App improvements") but no such thing exists yet for Android. The task would therefore be to create a Android based conference mobile application that would allow conference participants access all the relevant information, like the conference program, the proceedings, additional information, news and updates that are normally present in a conference handbook.

Skills: A good knowledge of the Java programming language is as necessary as a good understanding of GUI programming, like the idea of widgets, the MFC pattern and so forth. Knowledge of the Android platform is very highly recommended.

Mentor: G-Node core development team

BrianDROID - Neural simulation on mobile devices

Description: Brian is a simulator for spiking neural networks, written in Python. The 2.0 version (currently in development) uses a hybrid programming language approach: The models and the simulation script are written in Python but the code in each simulation timestep is executed in generated code (for example in C++). Mobile devices such as Android phones have powerful processing units and versatile sensors, making them useful as a "brain" in robotics applications. Being able to run a Brian script on an Android phone would therefore be a useful testbed for neural models in a "real life" setting. The aims of this project are the following:

  1. Write a conversion tool to convert a Brian simulation to a standalone Java program that runs on Android (making use of Brian's existing code generation facilities).
  2. Add features to Brian that allow real-time simulations in Brian (e.g. dynamically adapt the simulation time step if the simulation is running too slow)
  3. Access the phone's sensors (e.g. the microphone) and use them in the simulation in real time.

The end result should be code with the above functionality and a working prototype for a neural model running on Android (for example, the so-called Licklider model of pitch recognition, using the phone's microphone as input). The student working on this project needs to have access to an Android phone.

Skills required: Python and Java Programming

Skills desirable: Development for Android, experience/interest in computational neuroscience and/or robotics

Mentors: Marcel Stimberg (ENS Paris), Dan Goodman (Harvard Medical School)


XNAT and Human Connectome

ConnectomeDB- The Human Connectome Project ( includes a wide array of behavioral measures that can be used to mine the data. To facilitate mining, we would like to implement a faceted search engine for constructing subject groups. A mockup of the interface is shown to the right. The search interface would dynamically render a plot of the data based on the underlying distribution (e.g. a bar chart for binnable data, a pie chart for categorical data). The plots would be interactive, allowing users to select subsets of the underlying distribution. The search engine will be implemented in XNAT and will be available to the Human Connectome Project and any other XNAT-based repository.

- There are many XNAT-based neuroimaging data repositories out in the world. Currently, they are all standalone silos. With a little effort, they could be federated to present a unified view of distributed data sets. This project would entail developing the user authentication, user authorization, user interface, and distributed query capabilities required to enable such a federated view. XNAT is an open source imaging informatics platform used to manage and share imaging and related data.


Add-on to or extensions of XNAT as outlined above.


A working knowledge of Java as well as Javascript and JSON for the search interface and web security protocols for the federation.

Mentored by Dan Marcus and the XNAT project.


NDF Data Format toolbox support

Most raw data from neurophysiological scientific instruments is encoded in vendor specific (or bespoke) encoding formats. Such formats are often unreadable unless you use vendor specific software or have knowledge of the encoding format. Therefore, there is a need to be able to translate raw data from these systems into a standard data format to allow the standardised design and implementation of service interfaces and interoperable analysis services. To this end, the CARMEN project [1] has developed the Neurophysiology Data translation Format (NDF) [2]. This is a vendor neutral data format that is capable of storing most if not all types of electrophysiology time series and event data. To support the adoption of NDF as a de facto standard for the neuroscience community and for handling data within neuroscience labs, we have developed an NDF Matlab toolbox to allow Matlab code developers (there is a large MatLab programming base in the neurophysiology community) to work with NDF in an intuitive way from within the Matlab environment. The NDF MatLab Toolbox has been implemented on top of the NDF C library API. It consists of a set of object oriented MatLab classes and functions that provide high level support for NDF data I/O. A “multi data formats” to NDF converter is embedded within the toolbox as a data input module. It abstracts away the low level ‘C’ library objects and provides services and functions that are compatible with the MatLab programming environment.

We wish to extend the range of toolbox support options for NDF, such that it can be more widely adopted and deployed in the general neuroscience community. In particular, we wish to add Java, Python, and R programming support, as these are other commonly used programming paradigms for neurophysiology. The project will thus entail building comparable ‘plug-in’ toolbox support libraries for these programming paradigms to allow NDF to be used natively across all of these language sets. The work will underpin global data standardisation activities within INCF, and particularly support the cross collaboration of national data collation exercises led under initiatives such as CARMEN, Neuroscience Information Network (NIF), Collaborative Research in Computational Neuroscience (CRCNS), G-Node and by INCF itself.


A working knowledge of object oriented programming and JAVA plus knowledge of the Python and R programming languages. Experience with Matlab scientific programming language and experience with developing cross-platform API and library based applications would be highly beneficial.


  1. Develop a Python programming support toolbox for the NDF data standard building upon the C library API

  2. Develop an R programming support toolbox for the NDF data standard building upon the C library API;

And, time permitting;

  1. Develop a JAVA programming support toolbox for the NDF data standard building upon the C library API

  2. Support workshop activities to foster the dissemination of these toolboxes across the neurophysiology community

Mentor: Tom Jackson, CARMEN Project Team


[1] The CARMEN Neuroscience Server. Paul Watson, Tom Jackson, Georgios Pitsilis, Frank Gibson, Jim Austin, Martyn Fletcher, Bojian Liang, Phillip Lord. UK e-Science 2007 All Hands Meeting, Nottingham, September 2007.

[2] “The Neurophysiology data Translation Format (NDF)

Further Information

Some links and email addresses related to GSoC:

  1. The Google Summer of Code home page:
  2. INCF profile page on the Google Summer of Code 2012 site:
  3. Timeline of Google Summer of Code 2013:
  4. GSoC Frequently Asked Questions:
  5. Email address for informal inquiries:
  6. 2012, six students were accepted and working over the summer mentored by volunteers from the INCF scientific community. Read more about the projects at
  7. INCF's public users list:
  8. INCF's public developers list:


INCF is also prepared to serve as an umbrella mentoring organization for high-profile neuroinformatics projects. If interested, please contact .

Did you find this interesting? Follow us on Facebook or on Twitter!

Document Actions
Print this