========================
Neo 0.10.0 release notes
========================

27th July 2021


New IO modules
--------------

.. currentmodule:: neo.io

* :class:`CedIO` - an alternative to :class:`Spike2IO`
* :class:`AxonaIO`
* :class:`OpenEphysIO` - handle the binary format
* :class:`PhyIO`
* :class:`SpikeGLXIO`
* :class:`NWBIO` - support for a subset of the `NWB:N`_ format
* :class:`MaxwellIO`


Bug fixes and improvements in IO modules
----------------------------------------

* :class:`NeuralynxIO` was refactored and now supports new file versions (neuraview) and single file loading.
* Legacy versions of old IOs were removed for NeuralynxIO (neuralynxio_v1), BlackrockIO, NeoHdf5IO.
* :class:`NixIOfr` now supports array annotations of :class:`AnalogSignal` objects.
* :class:`NSDFIO` was removed because we can no longer maintain it.
* all IOs now accept :class:`pathlib.Path` objects.
* The IO modules of this release have been tested with version 0.1.0 of the `ephy_testing_data`_.


Removal of Unit and ChannelIndex
--------------------------------

.. currentmodule:: neo.core

In version 0.9.0 :class:`Group` and :class:`ChannelView` were introduced, replacing :class:`Unit` and :class:`ChannelIndex`, which were deprecated.
In this version the deprecated :class:`Unit` and :class:`ChannelIndex` are removed and only the new :class:`Group` and :class:`ChannelView` objects are available.

Supported Python and NumPy versions
-----------------------------------

We no longer support Python 3.6, nor versions of NumPy older than 1.16.

Other new or modified features
------------------------------

* Lists of :class:`SpikeTrain` objects can now also be created from two arrays: one containing spike times
  and the other unit identities of the times (:class:`SpikeTrainList`).
* Object identity is now preserved when using utility :func:`time_slice()` methods.

See all `pull requests`_ included in this release and the `list of closed issues`_.

RawIO modules
-------------

Internal refactoring of the neo.rawio module regarding channel grouping.
Now the concept of a signal stream is used to handle channel groups for signals.
This enhances the way the :attr:`annotation` and :attr:`array_annotation` attributes are rendered at neo.io level.

Acknowledgements
----------------

Thanks to Samuel Garcia, Julia Sprenger, Peter N. Steinmetz, Andrew Davison, Steffen Bürgers,
Regimantas Jurkus, Alessio Buccino,  Shashwat Sridhar, Jeffrey Gill, Etienne Combrisson,
Ben Dichter and Elodie Legouée for their contributions to this release.

.. _`list of closed issues`: https://github.com/NeuralEnsemble/python-neo/issues?q=is%3Aissue+milestone%3A0.10.0+is%3Aclosed
.. _`pull requests`: https://github.com/NeuralEnsemble/python-neo/pulls?q=is%3Apr+is%3Aclosed+merged%3A%3E2020-11-10+milestone%3A0.10.0
.. _`ephy_testing_data`: https://gin.g-node.org/NeuralEnsemble/ephy_testing_data/src/v0.1.0
.. _`NWB:N`: https://www.nwb.org/nwb-neurophysiology/
