* Multiple events (not just spike initiation): currently in dev/ideas/multiple_events

* Brian examples: Abbott delayed STDP (PLoS CB), Gerstner 1996

* Progress reporting could report memory usage as well, and warn if we might run out of memory

* Online saving for monitors (direct to disk), possibly with a buffer

* Save/load methods for objects and Network (perhaps starting with monitors)

* library.ionic_currents: might not work if units are off (looks for amp to recognize the current)

* eqs = MembraneEquation(C=200*pF) + leak + K_current + Na_current
works, but not eqs = leak + K_current + Na_current + MembraneEquation(C=200*pF).
Solution: have a new class that is a set of currents, or (easier) use a new variable with the sum of currents.

* Better progress reporting: the estimated time should adapt, maybe use only the last few seconds rather the entire simulation.

(* Modulation keyword with variables defined as functions) 

* Clean NeuronGroup init, in particular S0 is strangely handled; remove the
init keyword? (in fact S0 is used mostly for unit checking)
(* Neuron = NeuronGroup(1,..))
(* Unit checking in string resets and thresholds)

(* Change default values of compile and freeze to true in NeuronGroup? 
[I would say no, it is less reliable])

(* Cluster computing)
Idea: use pypar, it seems really simple to use
http://datamining.anu.edu.au/~ole/pypar/

(* Compound linear/nonlinear state updaters?)
For example, often there is a linear and nonlinear part of the equation,
e.g. dv/dt is nonlinear, but you have some auxiliary variables to define
an alpha synapse that can be considered separately and are linear. The
separate_equations() function in dev/ideas/separate_equations.py could be
used for this purpose.

(* Better LinearStateUpdater)
In most cases, the update matrix is degenerate only because of the parameters.
It would be better to take care of this directly (separate dynamical variables
and parameters, and calculate the matrix).
Other thing: use A**100 instead of 100 time steps.

(* Add MultiLinearStateUpdater to Brian)
Need to decide what the syntax should be, e.g. could have specification of constant
parameters in the Equations, e.g.
eqs = '''
dV/dt = -V/tau : volt
const tau : second
'''
At first this would only be used by MultiLinearStateUpdater
but in principle could also be used by nonlinear mechanisms for better optimisation.

(* Why is t a vector?)
Figure out why group.t is a vector. It might have to do with units.

(* Turning off magic? )

(* Finish autocorrelogram object )

(* Meaningful error messages: Improve catching of errors and usefulness of error messages,
   also look into logging which is very inconsistent at the moment.)
