diff --git a/.travis.yml b/.travis.yml index 4ab0e1182..7ff6dec06 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,18 +4,10 @@ sudo: false matrix: include: - - python: "3.6" - env: NUMPY_VERSION="1.14.6" - - python: "3.6" - env: NUMPY_VERSION="1.18.3" - python: "3.7" - env: NUMPY_VERSION="1.14.6" + env: NUMPY_VERSION="1.16.6" - python: "3.7" - env: NUMPY_VERSION="1.19.2" - - python: "3.8" - env: NUMPY_VERSION="1.14.6" - - python: "3.8" - env: NUMPY_VERSION="1.15.4" + env: NUMPY_VERSION="1.21.0" - python: "3.8" env: NUMPY_VERSION="1.16.6" - python: "3.8" @@ -23,7 +15,23 @@ matrix: - python: "3.8" env: NUMPY_VERSION="1.18.5" - python: "3.8" - env: NUMPY_VERSION="1.19.2" + env: NUMPY_VERSION="1.19.5" + - python: "3.8" + env: NUMPY_VERSION="1.20.3" + - python: "3.8" + env: NUMPY_VERSION="1.21.0" + - python: "3.9" + env: NUMPY_VERSION="1.16.6" + - python: "3.9" + env: NUMPY_VERSION="1.17.5" + - python: "3.9" + env: NUMPY_VERSION="1.18.5" + - python: "3.9" + env: NUMPY_VERSION="1.19.5" + - python: "3.9" + env: NUMPY_VERSION="1.20.3" + - python: "3.9" + env: NUMPY_VERSION="1.21.0" # command to install dependencies before_install: diff --git a/LICENSE.txt b/LICENSE.txt index cbd46d224..0fcae7d28 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2010-2020, Neo authors and contributors +Copyright (c) 2010-2021, Neo authors and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.rst b/README.rst index 1a002cb72..482a4df59 100644 --- a/README.rst +++ b/README.rst @@ -53,7 +53,7 @@ For installation instructions, see doc/source/install.rst To cite Neo in publications, see CITATION.txt -:copyright: Copyright 2010-2020 by the Neo team, see doc/source/authors.rst. +:copyright: Copyright 2010-2021 by the Neo team, see doc/source/authors.rst. :license: 3-Clause Revised BSD License, see LICENSE.txt for details. Funding diff --git a/doc/source/authors.rst b/doc/source/authors.rst index 0878a8641..159bea37d 100644 --- a/doc/source/authors.rst +++ b/doc/source/authors.rst @@ -24,10 +24,10 @@ and may not be the current affiliation of a contributor. * Erik Li [9] * Georg Raiser [10] * Joffrey Gonin [2] -* Kyler Brown [?] +* Kyler Brown * Mikkel Elle Lepperød [11] * C Daniel Meliza [12] -* Julia Sprenger [13] +* Julia Sprenger [13, 6] * Maximilian Schmidt [13] * Johanna Senk [13] * Carlos Canova [13] @@ -57,6 +57,9 @@ and may not be the current affiliation of a contributor. * Alessio Buccino [23] * Regimantas Jurkus [13] * Steffen Buergers [24] +* Etienne Combrisson [6] +* Ben Dichter [24] +* Elodie Legouée [21] 1. Centre de Recherche en Neuroscience de Lyon, CNRS UMR5292 - INSERM U1028 - Universite Claude Bernard Lyon 1 2. Unité de Neuroscience, Information et Complexité, CNRS UPR 3293, Gif-sur-Yvette, France diff --git a/doc/source/conf.py b/doc/source/conf.py index 7415b32b5..b05adde32 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -51,7 +51,7 @@ # General information about the project. project = 'Neo' -copyright = '2010-2020, ' + AUTHORS +copyright = '2010-2021, ' + AUTHORS # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/doc/source/install.rst b/doc/source/install.rst index d190b2f51..8275c1d95 100644 --- a/doc/source/install.rst +++ b/doc/source/install.rst @@ -11,8 +11,8 @@ Installing from the Python Package Index Dependencies ------------ - * Python_ >= 3.6 - * numpy_ >= 1.13.0 + * Python_ >= 3.7 + * numpy_ >= 1.16.1 * quantities_ >= 0.12.1 You can install the latest published version of Neo and its dependencies using:: diff --git a/doc/source/releases/0.10.0.rst b/doc/source/releases/0.10.0.rst new file mode 100644 index 000000000..5f2ad6cbd --- /dev/null +++ b/doc/source/releases/0.10.0.rst @@ -0,0 +1,72 @@ +======================== +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/ diff --git a/doc/source/releases/0.8.0.rst b/doc/source/releases/0.8.0.rst index 62c2b0866..05fd6a095 100644 --- a/doc/source/releases/0.8.0.rst +++ b/doc/source/releases/0.8.0.rst @@ -70,25 +70,25 @@ returning an :class:`AnalogSignal` object:: Other new features ------------------ - * new neo.utils module - * Numpy 1.16+ compatibility - * :meth:`time_shift()` method for :class:`Epoch`/:class:`Event`/:class:`AnalogSignal` - * :meth:`time_slice()` method is now more robust - * dropped support for Python 3.4 +* new neo.utils module +* Numpy 1.16+ compatibility +* :meth:`time_shift()` method for :class:`Epoch`/:class:`Event`/:class:`AnalogSignal` +* :meth:`time_slice()` method is now more robust +* dropped support for Python 3.4 See all `pull requests`_ included in this release and the `list of closed issues`_. Bug fixes and improvements in IO modules ---------------------------------------- - * Blackrock - * Neuroshare - * NixIOFr - * NixIO (array annotation + 1d coordinates) - * AsciiSignal (fix + json metadata + IrregularlySampledSignals + write proxy) - * Spike2 (group same sampling rate) - * Brainvision - * NeuralynxIO +* Blackrock +* Neuroshare +* NixIOFr +* NixIO (array annotation + 1d coordinates) +* AsciiSignal (fix + json metadata + IrregularlySampledSignals + write proxy) +* Spike2 (group same sampling rate) +* Brainvision +* NeuralynxIO .. Warning:: Some IOs (based on rawio) when loading can choose to split each channel into its own 1-channel :class:`AnalogSignal` or to group them diff --git a/doc/source/releases/0.9.0.rst b/doc/source/releases/0.9.0.rst index c750ad783..17194323e 100644 --- a/doc/source/releases/0.9.0.rst +++ b/doc/source/releases/0.9.0.rst @@ -54,24 +54,24 @@ To get the "multiple single-channel signals" behaviour, use:: Other new or modified features ------------------------------ - * added methods :func:`rectify()`, :func:`downsample` and :func:`resample` to :class:`AnalogSignal` - * :func:`SpikeTrain.merge()` can now merge multiple spiketrains - * the utility function :func:`cut_block_by_epochs()` gives a new :class:`Block` now - rather than modifying the block in place - * some missing properties such as ``t_start`` were added to :class:`ImageSequence`, - and ``sampling_period`` was renamed to ``frame_duration`` - * :func:`AnalogSignal.time_index()` now accepts arrays of times, not just a scalar. +* added methods :func:`rectify()`, :func:`downsample` and :func:`resample` to :class:`AnalogSignal` +* :func:`SpikeTrain.merge()` can now merge multiple spiketrains +* the utility function :func:`cut_block_by_epochs()` gives a new :class:`Block` now + rather than modifying the block in place +* some missing properties such as ``t_start`` were added to :class:`ImageSequence`, + and ``sampling_period`` was renamed to ``frame_duration`` +* :func:`AnalogSignal.time_index()` now accepts arrays of times, not just a scalar. See all `pull requests`_ included in this release and the `list of closed issues`_. Bug fixes and improvements in IO modules ---------------------------------------- - * NeoMatlabIO (support for signal annotations) - * NeuralynxIO (fix handling of empty .nev files) - * AxonIO (support EDR3 header, fix channel events bug) - * Spike2IO (fix rounding problem, fix for v9 SON files) - * MicromedIO (fix label encoding) +* NeoMatlabIO (support for signal annotations) +* NeuralynxIO (fix handling of empty .nev files) +* AxonIO (support EDR3 header, fix channel events bug) +* Spike2IO (fix rounding problem, fix for v9 SON files) +* MicromedIO (fix label encoding) Acknowledgements diff --git a/doc/source/whatisnew.rst b/doc/source/whatisnew.rst index 67923d78c..3c74f629a 100644 --- a/doc/source/whatisnew.rst +++ b/doc/source/whatisnew.rst @@ -6,6 +6,7 @@ Release notes .. toctree:: :maxdepth: 1 + releases/0.10.0.rst releases/0.9.0.rst releases/0.8.0.rst releases/0.7.2.rst diff --git a/neo/version.py b/neo/version.py index 52cb5b4e4..de094d790 100644 --- a/neo/version.py +++ b/neo/version.py @@ -1 +1 @@ -version = '0.9.0' +version = '0.10.0' diff --git a/requirements.txt b/requirements.txt index 421a5361f..bb1ed216b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -numpy>=1.13.0,!=1.16.0 +numpy>=1.16.1 quantities>=0.12.1 diff --git a/setup.py b/setup.py index 50e772402..7bb3cd105 100755 --- a/setup.py +++ b/setup.py @@ -4,13 +4,13 @@ import os long_description = open("README.rst").read() -install_requires = ['numpy>=1.13.0,!=1.16.0', +install_requires = ['numpy>=1.16.1', 'quantities>=0.12.1'] extras_require = { 'igorproio': ['igor'], 'kwikio': ['scipy', 'klusta'], 'neomatlabio': ['scipy>=1.0.0'], - 'nixio': ['nixio>=1.5.0b2'], + 'nixio': ['nixio>=1.5.0'], 'stimfitio': ['stfio'], 'tiffio': ['pillow'] } @@ -34,7 +34,7 @@ long_description=long_description, license="BSD-3-Clause", url='https://neuralensemble.org/neo', - python_requires=">=3.6", + python_requires=">=3.7", classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: Science/Research', @@ -42,9 +42,9 @@ 'Natural Language :: English', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3 :: Only', 'Topic :: Scientific/Engineering'] )