====================== PyNN 0.6 release notes ====================== 14th February 2010 Welcome to PyNN 0.6! There have been three major changes to the API in this version. * Spikes, membrane potential and synaptic conductances can now be saved to file in various binary formats. To do this, pass a PyNN :class:`File` object to :meth:`Population.print_X()`, instead of a filename. There are various types of PyNN :class:`File` object, defined in the :mod:`recording.files module`, e.g., :class:`StandardTextFile`, :class:`PickleFile`, :class:`NumpyBinaryFile`, :class:`HDF5ArrayFile`. * Added a :func:`reset()` function and made the behaviour of :func:`setup()` consistent across simulators. :func:`reset()` sets the simulation time to zero and sets membrane potentials to their initial values, but does not change the network structure. :func:`setup()` destroys any previously defined network. * The possibility of expressing distance-dependent weights and delays was extended to the :class:`AllToAllConnector` and :class:`FixedProbabilityConnector` classes. To reduce the number of arguments to the constructors, the arguments affecting the spatial topology (periodic boundary conditions, etc.) were moved to a new :class:`Space` class, so that only a single :class:`Space` instance need be passed to the :class:`Connector` constructor. Details ======= * Switched to using the point process-based AdExp mechanism in NEURON. * Factored out most of the commonality between the :class:`Recorder` classes of each backend into a parent class :class:`recording.Recorder`, and tidied up the :mod:`recording` module. * Added an attribute :attr:`conductance_based` to :class:`StandardCellType`, to make the determination of synapse type for a given cell more robust. * PyNN now uses a named logger, which makes it easier to control logging levels when using PyNN within a larger application. * implemented gather for :meth:`Projection.saveConnections()` * Added a test script (:file:`test_mpi.py`) to check whether serial and distributed simulations give the same results * Added a :meth:`size()` method to :class:`Projection`, to give the total number of connections across all nodes (unlike :meth:`__len__()`, which gives only the connections on the local node * Speeded up :func:`record()` by a huge factor (from 10 s for 12000 cells to less than 0.1 s) by removing an unecessary conditional path (since all IDs now have an attribute "local") * `synapse_type` is now passed to the :class:`ConnectionManager` constructor, not to the :meth:`connect()` method, since (a) it is fixed for a given connection manager, (b) it is needed in other methods than just :meth:`connect()`; fixed weight unit conversion in :mod:`brian` module. * Updated connection handling in :mod:`nest` module to work with NEST version 1.9.8498. Will not now work with previous NEST versions * The :mod:`neuron` back-end now supports having both static and Tsodyks-Markram synapses on the same neuron (previously, the T-M synapses replaced the static synapses) - in agreement with :mod:`nest` and common sense. Thanks to Bartosz Telenczuk for reporting this. * Added a `compatible_output` mode for the :meth:`saveConnections()` method. True by default, it allows connections to be reloaded from a file. If False, then the raw connections are stored, which makes for easier postprocessing. * Added an :class:`ACSource` current source to the :mod:`nest` module. * Fixed Hoc build directory problem in :file:`setup.py` - see ticket:147 * :meth:`Population.get_v()` and the other "`get`" methods now return cell indices (starting from 0) rather than cell IDs. This behaviour now matches that of :meth:`Population.print_v()`, etc. See ticket:119 if you think this is a bad idea. * Moved the base :class:`Connector` class from :mod:`common` to :mod:`connectors`. Put the :meth:`distances` function inside a :class:`Space` class, to allow more convenient specification of topology parameters. * :meth:`Projection.setWeights()` and :meth:`setDelays()` now accept a 2D array argument (ref ticket:136), to be symmetric with :meth:`getWeights()` and :meth:`getDelays()`. For distributed simulations, each node only takes the values it needs from the array. * :class:`FixedProbabilityConnector` is now more strict, and checks that :attr:`p_connect` is less than 1 (see ticket:148). This makes no difference to the behaviour, but could act as a check for errors in user code. * Fixed problem with changing :class:`SpikeSourcePoisson` rate during a simulation (see ticket:152)