This have been writtent before neo 2 implementation just after the wokshop. Not every hting is up to date.
to remove electrophysiological (or other) dependencies and keep generality.
For every object we specified mandatory attributes and recommended attributes. For every attribute we define a python-based data type. The changes are reflected in the diagram #FIXME with red (mandatory) and blue (recommended) attributes indicated.
Attributes and parent objects are available on the diagram #FIXME
Due to some logical considerations we remove the link between “RecordingChannel” and “Spiketrain”. “SpikeTrain” now depends on “Unit”, which in its turn connects to “RecordingChannel”. For inconsistency reasons we removed link between “SpikeTrain” and a “Spike” (“SpikeTrain” is an object containing numpy array of spikes, but not a container of “Spike” objects - which is performance-unefficient). The same idea is applied to AnalogSignal / AnalogSignalArray, Event / EventArray etc. All changes are relected in # FIXME
In order to implement flexibility and embed user-defined metadata into the NEO objects we decided to assign “annotations” dictionnary to very NEO object. This attribute is optional; user may add key-value pairs to it according to its scientific needs.
The decision is made to use “quantities” package for objects, representing data arrays with units. “Quantities” is a stable (at least for python2.6) package, presented in pypi, easy-embeddable into NEO object model. Points of implementation are presented in the diagram # FIXME
We postpone the solution of object ID management inside NEO.
In AnalogSignal - t_stop become a property (for consistency reasons).
in the BaseIO class. These parameters are valid for every method, provided by the IO (.read_segment() etc.). If “lazy” is True, the IO does not load data array, and makes array load otherwise. “Cascade” parameter regulates load of object relations.
- consistency in names of object attributes and get/set functions