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.
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
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).
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).