Edited by: Jan G. Bjaalie, International Neuroinformatics Coordination Facility, Sweden; University of Oslo, Norway Reviewed by: Eilif Muller, Ecole Polytechnique Fédérale de Lausanne, Switzerland Nicholas T. Carnevale, Yale University School of Medicine, USA Örjan Ekeberg, Royal Institute of Technology, Sweden * Correspondence: Dan F. M. Goodman obtained a degree in Mathematics from the University of Cambridge and a Ph.D. in Mathematics from the University of Warwick. He is currently doing post-doctoral research in Theoretical and Computational Neuroscience at the Ecole Normale Supérieure in Paris. His research interests are in the role of spike-timing based coding and computation, and neural simulation technologies. At the moment, he is working on developing spiking neural network models of sound localisation and GPU-based parallel processing algorithms for Brian. dan.goodman@ens.fr FOCUSED REVIEW published: 15 September 2009 doi: 10.3389/neuro.01.026.2009 The Brian simulator Dan F. M. Goodman1,2* and Romain Brette1,2* 1 Laboratoire Psychologie de la Perception, CNRS and Université Paris Descartes, Paris, France 2 Département d’Etudes Cognitives, Ecole Normale Supérieure, Paris, France “Brian” is a simulator for spiking neural networks (http://www.briansimulator.org). The focus is on making the writing of simulation code as quick and easy as possible for the user, and on ﬂexibility: new and non-standard models are no more difﬁcult to deﬁne than standard ones. This allows scientists to spend more time on the details of their models, and less on their implementation. Neuron models are deﬁned by writing differential equations in standard mathematical notation, facilitating scientiﬁc communication. Brian is written in the Python programming language, and uses vector-based computation to allow for efﬁcient simulations. It is particularly useful for neuroscientiﬁc modelling at the systems level, and for teaching computational neuroscience. Keywords: Python, spiking neural networks, simulation, teaching, systems neuroscience INTRODUCTION Computational modelling of neural networks plays an increasing role in neuroscience research. Writing simulation code from scratch (typically in Matlab or C) can be very time-consuming and in all but the simplest cases requires expertise in programming and knowledge of neural simula- tion algorithms. This can discourage researchers from investigating non-standard models or more complex network structures. Several successful neural simulators already exist (Brette et al., 2007), such as Neuron (Carnevale and Hines, 2006) and Genesis (Bower and Beeman, 1998) for compartmental modelling, and NEST (Gewaltig and Diesmann, 2007) for large scale network modelling. These simulators implement computationally efﬁcient algorithms and are widely used for large-scale modelling and complex biophysical models. However, computational efﬁ- ciency is not always the main limiting factor when simulating neural models. Efforts have been made in several simulators to make it as easy as possible, such as Neuron’s NMODL language described in Hines and Carnevale (2000) and graphical user interface. In many practical cases; however, it still takes considerably more time to write the code than to run the simulations. Minimising learn- ing and development time rather than simulation time implies different design choices, putting more emphasis on ﬂexibility, readability, and simplicity of the syntax. There are various projects underway to address these issues. All of the major simulation pack- ages now include Python interfaces (Eppler et al., 2008; Hines et al., 2009) and the PyNN project (Davison et al., 2008) is working towards provid- ing a uniﬁed interface to them. Because it is both easy and powerful, Python is rapidly becoming the standard high-level language for the ﬁeld of computational neuroscience, and for scientiﬁc computing more generally (Bassi, 2007). We took those approaches one step further by developing a new neural simulator, Brian, which is an extension package for the Python program- ming language (Goodman and Brette, 2008). A simulation using Brian is a Python program either executed from a script or interactively from a Python shell. The primary focus is on making the development of a model by the user as rapid and ﬂexible as possible. For that purpose, the Frontiers in Neuroscience www.frontiersin.org September 2009 | Volume 3 | Issue 2 | 192