Software packages maintained by our research group

Doing large-scale computational modelling requires the development of software infrastructure. Members of my research group maintain both general-purpose packages that support any type of scientific or engineering research, and those specifically tailored to my own research in computational neuroscience.

General-purpose packages

Param and ParamTk

Param is a general-purpose library that extends Python attributes to support types, ranges, documentation, and dynamic values. Param is useful for any Python code that presents an interface to a user, because it helps specify what the user should supply and helps catch errors early.

Public releases: 1.0 (7/2012), 1.1.0 (5/2014), 1.2.0 (6/2014), 1.2.1 (6/2014).


HoloViews is a general-purpose library that makes analyzing and visualizing scientific and engineering data, particular involving dense measurements from continuous system, much simpler and more intuitive. It builds on the Matplotlib plotting package and IPython Notebook to provide a natural way to express even complex visualizations easily.

News 2/2015: HoloViews is the winner of the 2015 UK Open Source Award for a student-developed package!

Public releases: 1.0 (2/2015), 1.0.1 (3/2015).


Lancet is a general-purpose tool that supports exploring large parameter spaces by launching a large number of independent jobs and collating the results. Lancet helps specify the parameter space in a very flexible way, then launch the jobs locally or on remote supercomputers, and then collect results as they arrive and make them ready for analysis and visualization (e.g. using HoloViews). Lancet can be used with any simulator or analysis program, as long as it can be called from the command line or Python.

Public releases: 0.8 (11/2013).


ImaGen is a general-purpose Python library providing primitives and combination methods for generating arbitrary streams of scalars, vectors, and images. ImaGen separates the construction of such patterns from their use, providing a simple function-call interface that allows clients to use any supported pattern with no changes to the client code. One use of ImaGen is for generating visual testing and training patterns for visual modelling, but it is also useful for other types of models and any application needing flexible control over generation of streams of patterns.

Public releases: 1.0 (7/2012), 1.0.1 (11/2014), 2.0 (3/2015), 2.0.1 (4/2015).

Neuroscience-specific packages


Topographica is a simulator for a very wide range of topographic neural maps, including all of those from my research. It is based on all of the packages above, but adding specific support for computational modelling, including modelling of the visual system.

Public releases: 0.8.0 (11/2005), 0.8.1 (12/2005), 0.8.2 (2/2006), 0.9.0 (5/2006), 0.9.1 (7/2006), 0.9.2 (11/2006), 0.9.3 (4/2007), 0.9.4 (10/2007), 0.9.5 (9/2008), 0.9.6 (12/2009), 0.9.7 (07/2010), 0.9.8 (11/2012).


FeatureMapper allows you to analyze how a system responds to a set of parameterizable test patterns. For instance, you can present ImaGen sine gratings with various parameter settings (orientation, phase, color, spatial frequency, etc.) to some external system, which needs to return responses in the form of a matrix of activity values. For instance, the external system might be a neural simulation, and the matrix could be the two-dimensional organization of feature-selective cells in a cortical region. With this data, FeatureMapper can then calculate tuning curves, receptive fields, peri-stimulus time histograms, and feature maps that characterize the response of that system to the input patterns. These tools can be used to understand models implemented in any simulator, and can even be used with experimental data as long as the input patterns and their responses can be saved.

Public releases: 1.0 (12/2013).


The ideas behind Topographica were first developed in a special-purpose C++ simulator for LISSOM. The LISSOM package contains the C++ source code and examples for training and testing most of the LISSOM-based computational models in my published work. However, this simulator is now obsolete, and new work with the LISSOM model should done in Topographica. LISSOM has been reimplemented in Topographica in a much more flexible form that can be modified more easily for new requirements. Moreover, the newer GCAL model is a better way to do what LISSOM did. Even so, the original software is still available if anyone needs to replicate the earliest results, though they will probably need to use a virtual machine with a Linux operating system dating to 2004 if they want to be able to compile it, as GCC/G++ has changed in many incompatible ways since then.

Public releases: 2.0 (10/1998), 2.1 (11/1998), 3.0a1 (8/2000), 3.0b1 (4/2001), 3.0 (11/2001), 4.0 (1/2003), 5.0 (9/2004).