Brian Changelog

What's new in Brian 2.0 Beta 2

Mar 13, 2015
  • Major new features:
  • Multi-compartmental simulations can now be run using the C++ standalone mode (this is not yet well-tested, though).
  • The implementation of TimedArray now supports two-dimensional arrays, i.e. different input per neuron (or synapse, etc.), see Timed arrays for details.
  • Previously, not setting a code generation target (using the codegen.target preference) would mean that the numpy target was used. Now, the default target is auto, which means that a compiled language (weave or cython) will be used if possible. See Computational methods and efficiency for details.
  • The implementation of SpikeGeneratorGroup has been improved and it now supports a period argument to repeatedly generate a spike pattern.
  • Improvements:
  • The selection of a numerical algorithm (if none has been specified by the user) has been simplified. See Numerical integration for details.
  • Expressions that are shared among neurons/synapses are now updated only once instead of for every neuron/synapse which can lead to performance improvements.
  • On Windows, The Microsoft Visual C compiler is now supported in the cpp_standalone mode, see the respective notes in the Installation and Computational methods and efficiency documents.
  • Simulation runs (using the standard “runtime” device) now collect profiling information. See Profiling for details.
  • Infrastructure and documentation improvements:
  • Tutorials for beginners in the form of ipython notebooks (currently only covering the basics of neurons and synapses) are now available.
  • The Examples in the documentation now include the images they generated. Several examples have been adapted from Brian 1.
  • The code is now automatically tested on Windows machines, using the appveyor service. This complements the Linux testing on travis.
  • Using a version of a dependency (e.g. sympy) that we don’t support will now raise an error when you import brian2 – see Dependency checks for more details.
  • Test coverage for the cpp_standalone mode has been significantly increased.
  • Important bug fixes:
  • The preparation time for complicated equations has been significantly reduced.
  • The string representation of small physical quantities has been corrected (#361)
  • Linking variables from a group of size 1 now works correctly (#383)

New in Brian 2.0 Beta (Nov 28, 2014)

  • Major new features:
  • New classes Morphology and SpatialNeuron for the simulation of Multicompartment models
  • A temporary “bridge” for brian.hears that allows to use its Brian 1 version from Brian 2 (Brian 1 Hears bridge)
  • Cython is now a new code generation target, therefore the performance benefits of compiled code are now also available to users running simulations under Python 3.x (where scipy.weave is not available)
  • Networks can now store their current state and return to it at a later time, e.g. for simulating multiple trials starting from a fixed network state (Continuing/repeating simulations)
  • C++ standalone mode: multiple processors are now supported via OpenMP (Multi-threading with OpenMP), although this code has not yet been well tested so may be inaccurate.
  • C++ standalone mode: after a run, state variables and monitored values can be loaded from disk transparently. Most scripts therefore only need two additional lines to use standalone mode instead of Brian’s default runtime mode (C++ standalone).
  • Syntax changes:
  • The syntax and semantics of everything around simulation time steps, clocks, and multiple runs have been cleaned up, making reinit obsolete and also making it unnecessary for most users to explicitly generate Clock objects – instead, a dt keyword can be specified for objects such as NeuronGroup (Running a simulation)
  • The scalar flag for parameters/subexpressions has been renamed to shared
  • The “unit” for boolean variables has been renamed from bool to boolean
  • C++ standalone: several keywords of CPPStandaloneDevice.build have been renamed
  • The preferences are now accessible via prefs instead of brian_prefs
  • The runner method has been renamed to custom_operation
  • Improvements:
  • Variables can now be linked across NeuronGroups (Linked variables)
  • More flexible progress reporting system, progress reporting also works in the C++ standalone mode (Progress reporting)
  • State variables can be declared as integer (Equation strings)
  • Bug fixes:
  • 57 github issues have been closed since the alpha release, of which 26 had been labeled as bugs. We recommend all users of Brian 2 to upgrade.

New in Brian 1.2.1 (Jul 7, 2010)

  • Major features:
  • New remote controlling of running Brian scripts via RemoteControlServer
  • and RemoteControlClient.
  • Minor features:
  • New module tools.io
  • weight and sparseness can now both be functions in connect_random
  • New StateHistogramMonitor object
  • clear now has a new keyword all which allows you to destroy all Brian
  • objects regardless of whether or not they would be found by MagicNetwork.
  • In addition, garbage collection is called after a clear.
  • New method StateMonitor.insert_spikes to have spikes on voltage traces.
  • Improvements:
  • The sparseness keyword in connect_random can be a function
  • Added ‘wmin’ to STDP
  • You can now access STDP internal variables, e.g. stdp.A_pre, and monitor
  • them by doing e.g. StateMonitor(stdp.pre_group, ‘A_pre’)
  • STDP now supports nonlinear equations and parameters
  • refractory can now be a vector (see docstring for NeuronGroup) for constant
  • resets.
  • modelfitting now uses playdoh library
  • C++ compiled code is now much faster thanks to adding -ffast-math switch to
  • gcc, and there is an option which allows you to set your own
  • compiler switches, for example -march=native on gcc 4.2+.
  • SpikeGeneratorGroup now has a spiketimes attribute to reset the list of
  • spike times.
  • StateMonitor now caches values in an array, improving speed for M[i] operation
  • and resolving ticket #53
  • Bug fixes:
  • Sparse matrices with some versions of scipy
  • Weave now works on 64 bit platforms with 64 bit Python
  • Fixed bug introduced in 1.2.0 where dense DelayConnection structures would
  • not propagate any spikes
  • Fixed bug where connectfunctions on DelayConnection didn’t work with
  • subgroups but only with the whole group.
  • Fixed bug with linked_var from subgroups not working
  • Fixed bug with adding Equations objects together using a shared base equation
  • (ticket #9 on the trac)
  • unit_checking=False now works (didn’t do anything before)
  • Fixed bug with using Equations object twice (for two different NeuronGroups)
  • Fixed unit checking bug and ZeroDivisionError (ticket #38)
  • Fixed rare problems with spikes being lost due to wrong size of SpikeContainer,
  • it now dynamically adapts to the number of spikes.
  • Fixed ticket #5, ionic_currents did not work with units off
  • Fixed ticket #6, Current+MembraneEquation now works
  • Fixed bug in modelfitting : the fitness was not computed right with CPUs.
  • Fixed bug in modelfitting with random seeds on Unix systems.
  • brian.hears.filtering now works correctly on 64 bit systems
  • Removed features:
  • Model has now been removed from Brian (it was deprecated in 1.1).

New in Brian 1.2.0 (Jan 20, 2010)

  • Major features:
  • Model fitting toolbox (library.modelfitting)
  • Minor features:
  • New real-time “refresh=“ options added to plotting functions
  • Gamma factor in utils.statistics
  • New RegularClock object
  • Added brian_sample_run function to test installation in place of nose tests
  • Improvements:
  • Speed improvements to monitors and plotting functions
  • Sparse matrix support improved, should work with scipy versions up to 0.7.1
  • Various improvements to brian.hears (still experimental though)
  • Parameters now picklable
  • Made Equations picklable
  • Bug fixes:
  • Fixed major bug with subgroups and connections (announced on webpage)
  • Fixed major bug with multiple clocks (announced on webpage)
  • No warnings with Python 2.6
  • Minor bugfix to TimedArray caused by floating point comparisons
  • Bugfix: refractory neurons could fire in very extreme circumstances
  • Fixed bug with DelayConnection not setting max_delay
  • Fixed bug with STP
  • Fixed bug with weight=lambda i,j:rand()
  • New examples:
  • New multiprocessing examples
  • Added polychronisation example
  • Added modelfitting examples
  • Added examples of TimedArray and linked_var
  • Added examples of using derived classes with Brian
  • Realtime plotting example

New in Brian 1.1.3 (Sep 8, 2009)

  • STDP now works with DelayConnection
  • Added EventClock
  • Added RecentStateMonitor
  • Added colormap option to StateMonitor.plot
  • Added timed array module, see TimedArray class for details.
  • Added optional progress reporting to run()
  • New recall() function (converse to forget())
  • Added progress reporting module (brian.utils.progressreporting)
  • Added SpikeMonitor.spiketimes
  • Added developer's guide to docs
  • Early version of brian.hears subpackage for auditory modelling
  • Various bug fixes

New in Brian 1.1.2 (Feb 27, 2009)

  • Standard functions rand() and randn() can now be used in string resets.
  • New forget() function.
  • Major bugfix for STP.

New in Brian 1.1.1 (Feb 9, 2009)

  • New statistical function: vector_strength
  • Bugfix for one line string thresholds/resets

New in Brian 1.1.0 (Feb 3, 2009)

  • STDP
  • Short-term plasticity (Tsodyks-Markram model)
  • New DelayConnection for heterogeneous delays
  • New code for Connections, including new 'dynamic' connection matrix type
  • Reset and threshold can be specified with strings (Python expressions)
  • Much improved documentation
  • clear() function added for ipython users
  • Simplified initialisation of Connection objects
  • Optional unit checking in NeuronGroup
  • Spike train statistics (utils.statistics)
  • Miscellaneous optimisations
  • New MultiStateMonitor class
  • New Group, MultiGroup objects (for convenience of people writing extensions mostly)
  • Improved contained_objects protocol with ObjectContainer class in brian.base
  • UserComputedclasses removed for this version (they will return in another form).

New in Brian 1.0.0 (Nov 14, 2008)

  • 2nd order Runge-Kutta method (use order=2)
  • Quantity arrays are disabled (units only for scalars)
  • brian_global_config added
  • UserComputedConnectionMatrix and UserComputedSparseConnectionMatrix
  • SimpleCustomRefractoriness, CustomRefractoriness