Brian package structure
-----------------------

List of modules with descriptions of contents:

**Root package**

``base``
	Shared base classes for some Brian clases. At the moment, just the
	:class:`ObjectContainer` class used to implement the ``contained_objects``
	protocol.
``clock``
	The :class:`Clock` object, :func:`guess_clock` function, and other clock
	manipulation functions.
``compartments``
	A class used in compartmental modelling (see user documentation).
``connection``
	Everything to do with connections, including the :class:`Connection` and
	:class:`DelayConnection` classes, but also construction/connection matrices
	and connection vector code. One of the longest and most technical parts of
	Brian.
``correlatedspikes``
	A tool for producing correlated spike trains.
``directcontrol``
	Classes for producing groups which fire spikes at user specified times.
``equations``
	Everything to do with the :class:`Equations` class.
``globalprefs``
	Global preferences for Brian, a few routines for getting and setting.
``group``
	A base class for :class:`NeuronGroup` which creates an ``_S`` attribute from
	an :class:`Equations` object with the appropriate dynamical variables, and
	allows these variables to be accessed by e.g. ``grp.V`` by overriding the
	``__getattr__`` and ``__setattr__`` methods.
``inspection``
	Utility functions for inspecting namespaces, checking consistency of
	equations, some code manipulation, etc.
``log``
	Brian's somewhat under-developed logging capabilities.
``magic``
	Classes and functions for tracking and finding instances of classes.
``membrane_equations``
	More code for compartmental modelling (see user docs).
``monitor``
	All the monitors, including :class:`SpikeMonitor` and :class:`StateMonitor`.
``network``
	The :class:`Network` and :class:`MagicNetwork` classes as well as the
	:class:`NetworkOperation` class. Also includes the :func:`run`, etc.
	functions.
``neurongroup``
	The :class:`NeuronGroup` definition and some related stuff, including linked
	variables (the :class:`LinkedVar` class) and :class:`PoissonGroup`.
``optimiser``
	Some tools for freezing expressions (converting e.g. ``3*ms`` into 0.003) and
	simplifying some equations (e.g. ``a/(10*ms)`` converted to ``a*100``). 
``plotting``
	Plotting tools, mostly ``raster_plot``.
``quantityarray``
	A leftover from the day when Brian had support for arrays with units, will
	be removed when practical.
``reset``
	Reset classes.
``stateupdater``
	State update classes and the :func:`magic_state_updater` function.
``stdp``
	STDP features.
``stdunits``
	Standard unit names such as ``mV`` for ``mvolt``, etc.
``stp``
	Short term plasticity features.
``threshold``
	Threshold classes.
``timedarray``
	The :class:`TimedArray` class and related functions.
``units``
	The Brian units package, including the :class:`Quantity` class.
``unitsafefunctions``
	Some functions which override the numpy ones which are safe to use with
	units, e.g. ``sin(3*volt)`` raises a dimensionality error.

**``library`` subpackage**

``electrophysiology``
	Electrophysiology library with electrode and amplifier models.
``IF``
	Integrate-and-fire models (leaky, quadratic, exponential...).
``ionic_currents``
	Ionic current models (K+, Na+...).
``random_processes``
	Currently only Ornstein-Uhlenbeck.
``synapses``
	Synaptic models (exponential, alpha and biexponential models).

**``utils`` subpackage**

``approximatecomparisons``
	Some tools for doing approximate comparisons with floating point numbers
	(because they are inexact).
``autodiff``
	Automatic differentiation routines (for single-valued functions).
``circular`` and the ``ccircular`` subpackage
	The important :class:`SpikeContainer` and related classes. The ``C`` version
	uses SWIG and is much faster but requires the user to compile themselves
	at the moment (this will be addressed at some point in the future).
``documentation``
	Some utility functions related to documentation.
``information_theory``
	Entropy and mutual information estimators. Requires the ANN wrapper in scikits.
``parallelpython``
	A utility function for using the Parallel Python module.
``parameters``
	The :class:`Parameters` class, basically independent of Brian but
	potentially useful. 
``progressreporting``
	A progress reporting framework which :meth:`Network.run` can use to report
	how long it is taking to run, with text or graphical options.
``statistics``
	Statistics of spike trains (CV, vector strength, correlograms...).
``tabulate``
	Tabulation of numerical functions (precalculation).
