From 5f0d61307e5e2ee4b1592b83c4f72004269f078a Mon Sep 17 00:00:00 2001 From: zm711 <92116279+zm711@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:05:59 -0500 Subject: [PATCH 1/7] release notes --- doc/source/authors.rst | 2 ++ doc/source/releases.rst | 1 + doc/source/releases/0.14.0.rst | 35 ++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 doc/source/releases/0.14.0.rst diff --git a/doc/source/authors.rst b/doc/source/authors.rst index 1a3182b0a..16b1d87c9 100644 --- a/doc/source/authors.rst +++ b/doc/source/authors.rst @@ -89,6 +89,7 @@ and may not be the current affiliation of a contributor. * Anthony Pinto [41] * Xin Niu * Nikhil Chandra [40] +* Luigi Petrucco [42] 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 @@ -131,6 +132,7 @@ and may not be the current affiliation of a contributor. 39. Massachusetts General Hospital, Department of Molecular Biology 40. Plexon Inc. 41. Paris Brain Institute +42. Istituto Italiano di Tecnologia (IIT), Italy diff --git a/doc/source/releases.rst b/doc/source/releases.rst index 1b49ab3f0..cee94611d 100644 --- a/doc/source/releases.rst +++ b/doc/source/releases.rst @@ -6,6 +6,7 @@ Release notes .. toctree:: :maxdepth: 1 + releases/0.14.0.rst releases/0.13.4.rst releases/0.13.3.rst releases/0.13.2.rst diff --git a/doc/source/releases/0.14.0.rst b/doc/source/releases/0.14.0.rst new file mode 100644 index 000000000..a9ca76a91 --- /dev/null +++ b/doc/source/releases/0.14.0.rst @@ -0,0 +1,35 @@ +======================== +Neo 0.14.0 release notes +======================== + +17 January 2025 + +This release of Neo contains bug fixes across many IOs as well as support for NumPy 2.0 in the core of Neo all with an eye toward a 1.0 release. + +See all `pull requests`_ included in this release and the `list of closed issues`_. + +Updated dependencies +-------------------- + +Neo now has a limit of NumPy >= 1.22.4 + +CI Improvements +--------------- + +A bug in the CI was fixed which ensures testing on the lowest (3.9) and highest (3.12) supported Python versions for :code:`RawIO` and :code:`IO` testing. + +Testing of additional Python-NumPy combinations for core tests were added (NumPy 2.0, 2.1, and 2.2 with their respective Python versions). + +Bug fixes and improvements in IO modules +---------------------------------------- + +Bug fixes and/or improvements have been made to :class:`NeuroNexusIO`, :class:`OpenEphysBinaryIO`, :class:`MicromedIO`, and :class:`IntanIO`. + +Acknowledgements +---------------- + +Thanks to Zach McKenzie, Heberto Mayorquin, Andrew Davison, Luigi Petrucco, Alessio Buccino, and Samuel Garcia. + +.. _`pull requests` : https://github.com/NeuralEnsemble/python-neo/pulls?q=is%3Apr+is%3Aclosed+milestone%3A0.14.0 + +.. _`list of closed issues` : https://github.com/NeuralEnsemble/python-neo/issues?q=is%3Aissue%20state%3Aclosed%20milestone%3A0.14.0 \ No newline at end of file From 2e8ad5ea8de88113be3e813915515a2e1bb4dd7e Mon Sep 17 00:00:00 2001 From: zm711 <92116279+zm711@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:12:57 -0500 Subject: [PATCH 2/7] update codemeta json --- codemeta.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/codemeta.json b/codemeta.json index 1eb570a3a..1d37611a1 100644 --- a/codemeta.json +++ b/codemeta.json @@ -4,15 +4,15 @@ "license": "https://spdx.org/licenses/BSD-3-Clause", "codeRepository": "https://github.com/NeuralEnsemble/python-neo", "contIntegration": "https://github.com/NeuralEnsemble/python-neo/actions", - "dateModified": "2024-10-14", - "downloadUrl": "https://files.pythonhosted.org/packages/e0/0d/e973b7e8464b6f1d88022c46040f203d93c0b080af0e33702bb11873dbbb/neo-0.13.4.tar.gz", + "dateModified": "2025-01-17", + "downloadUrl": "", "issueTracker": "https://github.com/NeuralEnsemble/python-neo/issues", "name": "Neo", - "version": "0.13.4", + "version": "0.14.0", "identifier": "RRID:SCR_000634", "description": "Neo is a Python package for working with electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats, including Spike2, NeuroExplorer, AlphaOmega, Axon, Blackrock, Plexon, Tdt, and support for writing to a subset of these formats plus non-proprietary formats including HDF5.\n\nThe goal of Neo is to improve interoperability between Python tools for analyzing, visualizing and generating electrophysiology data by providing a common, shared object model. In order to be as lightweight a dependency as possible, Neo is deliberately limited to represention of data, with no functions for data analysis or visualization.\n\nNeo is used by a number of other software tools, including SpykeViewer (data analysis and visualization), Elephant (data analysis), the G-node suite (databasing), PyNN (simulations), tridesclous_ (spike sorting) and ephyviewer (data visualization).\n\nNeo implements a hierarchical data model well adapted to intracellular and extracellular electrophysiology and EEG data with support for multi-electrodes (for example tetrodes). Neo's data objects build on the quantities package, which in turn builds on NumPy by adding support for physical dimensions. Thus Neo objects behave just like normal NumPy arrays, but with additional metadata, checks for dimensional consistency and automatic unit conversion.", "applicationCategory": "neuroscience", - "releaseNotes": "https://neo.readthedocs.io/en/latest/releases/0.13.4.html", + "releaseNotes": "https://neo.readthedocs.io/en/latest/releases/0.14.0.html", "funding": "https://cordis.europa.eu/project/id/945539", "developmentStatus": "active", "referencePublication": "https://doi.org/10.3389/fninf.2014.00010", @@ -113,6 +113,7 @@ { "@type": "Person", "givenName": "Xin", "familyName": "Niu"}, { "@type": "Person", "givenName": "Anthony", "familyName": "Pinto"}, { "@type": "Person", "givenName": "Chris", "familyName": "Heydrick"}, - {"@type": "Person", "givenName": "Nikhil", "familyName": "Chandra"} + {"@type": "Person", "givenName": "Nikhil", "familyName": "Chandra"}, + {"@type": "Person", "givenName": "Luigi", "familyName": "Petrucco"} ] } From f00ea75b56e86506a299621781c94f6b360775d3 Mon Sep 17 00:00:00 2001 From: zm711 <92116279+zm711@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:25:37 -0500 Subject: [PATCH 3/7] update docs --- doc/source/releases/0.14.0.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/source/releases/0.14.0.rst b/doc/source/releases/0.14.0.rst index a9ca76a91..71d23674d 100644 --- a/doc/source/releases/0.14.0.rst +++ b/doc/source/releases/0.14.0.rst @@ -4,7 +4,8 @@ Neo 0.14.0 release notes 17 January 2025 -This release of Neo contains bug fixes across many IOs as well as support for NumPy 2.0 in the core of Neo all with an eye toward a 1.0 release. +This release of Neo is now compatible with NumPy 2.0 for core and IOs (with exception of :class:`MedIO`) as well Python 3.13, +and includes IO bug fixes with an eye toward a 1.0 release. See all `pull requests`_ included in this release and the `list of closed issues`_. @@ -16,14 +17,14 @@ Neo now has a limit of NumPy >= 1.22.4 CI Improvements --------------- -A bug in the CI was fixed which ensures testing on the lowest (3.9) and highest (3.12) supported Python versions for :code:`RawIO` and :code:`IO` testing. +A bug in the CI was fixed which ensures testing on the lowest (3.9) and highest (3.13) supported Python versions for :code:`RawIO` and :code:`IO` testing. -Testing of additional Python-NumPy combinations for core tests were added (NumPy 2.0, 2.1, and 2.2 with their respective Python versions). +Testing of additional Python-NumPy combinations for core tests were added (NumPy 2.0, 2.1, and 2.1 with their respective Python versions). Bug fixes and improvements in IO modules ---------------------------------------- -Bug fixes and/or improvements have been made to :class:`NeuroNexusIO`, :class:`OpenEphysBinaryIO`, :class:`MicromedIO`, and :class:`IntanIO`. +Bug fixes and/or improvements have been made to :class:`NeuroNexusIO`, :class:`OpenEphysBinaryIO`, :class:`MicromedIO`, :class:`IntanIO` and :class:`SpikeGLX`. Acknowledgements ---------------- From 3bfd4f880abfd4e26201f6b4521215838017a782 Mon Sep 17 00:00:00 2001 From: Zach McKenzie <92116279+zm711@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:30:34 -0500 Subject: [PATCH 4/7] Apply suggestions from code review --- doc/source/releases/0.14.0.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/releases/0.14.0.rst b/doc/source/releases/0.14.0.rst index 71d23674d..300a93d0d 100644 --- a/doc/source/releases/0.14.0.rst +++ b/doc/source/releases/0.14.0.rst @@ -4,7 +4,7 @@ Neo 0.14.0 release notes 17 January 2025 -This release of Neo is now compatible with NumPy 2.0 for core and IOs (with exception of :class:`MedIO`) as well Python 3.13, +This release of Neo is now compatible with NumPy 2.0 for core and IOs (with the exception of :class:`MedIO`) as well as Python 3.13, and includes IO bug fixes with an eye toward a 1.0 release. See all `pull requests`_ included in this release and the `list of closed issues`_. @@ -19,7 +19,7 @@ CI Improvements A bug in the CI was fixed which ensures testing on the lowest (3.9) and highest (3.13) supported Python versions for :code:`RawIO` and :code:`IO` testing. -Testing of additional Python-NumPy combinations for core tests were added (NumPy 2.0, 2.1, and 2.1 with their respective Python versions). +Testing of additional Python-NumPy combinations for core tests were added (NumPy 2.0 and 2.1 with their respective Python versions). Bug fixes and improvements in IO modules ---------------------------------------- From ff701feee78ae88f6a0a8c99e65da15cbf9a5710 Mon Sep 17 00:00:00 2001 From: zm711 <92116279+zm711@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:42:46 -0500 Subject: [PATCH 5/7] update doc for ci changes --- doc/source/releases/0.14.0.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/source/releases/0.14.0.rst b/doc/source/releases/0.14.0.rst index 300a93d0d..c517666e7 100644 --- a/doc/source/releases/0.14.0.rst +++ b/doc/source/releases/0.14.0.rst @@ -17,7 +17,11 @@ Neo now has a limit of NumPy >= 1.22.4 CI Improvements --------------- -A bug in the CI was fixed which ensures testing on the lowest (3.9) and highest (3.13) supported Python versions for :code:`RawIO` and :code:`IO` testing. +To ensure compatiblility between pre- and post- NumPy 2.0 the CI was changed to test on the lowest supported Python (3.9) and +the highest supported Python (3.13) each with NumPy 1.26 as well as NumPy 2.0 for all :code:`RawIO` and :code:`IO` tests. + +We also no longer use a cached conda env for testing as we see that there is no speed benefit to caching and we had some issues +with the caches getting corrupted. Testing of additional Python-NumPy combinations for core tests were added (NumPy 2.0 and 2.1 with their respective Python versions). From 836647293d3c26af905a52f2412e46503bd1eb96 Mon Sep 17 00:00:00 2001 From: zm711 <92116279+zm711@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:58:02 -0500 Subject: [PATCH 6/7] correct package version in pyproject.toml --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 21f798eb5..b09a0973b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "neo" -version = "0.14.0.dev0" +version = "0.14.0" authors = [{name = "Neo authors and contributors"}] description = "Neo is a package for representing electrophysiology data in Python, together with support for reading a wide range of neurophysiology file formats" readme = "README.rst" @@ -18,6 +18,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3 :: Only", ] @@ -48,7 +49,7 @@ test = [ # "dhn_med_py<2.0", # ci failing with 2.0 test future version when stable "pytest", "pytest-cov", - # datalad # this dependency is covered by conda (environment_testing.yml) + # datalad # this dependency is covered by conda (environment_testing.yml)-- maybe moving straight to ci "scipy>=1.0.0", "pyedflib", "h5py", From fe77306f4f95e6c5c4ef25a3bc15a28265d35375 Mon Sep 17 00:00:00 2001 From: Alessio Buccino Date: Sun, 19 Jan 2025 15:11:46 +0100 Subject: [PATCH 7/7] Comment out igorio test since data is not found --- examples/plot_igorio.py | 48 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/examples/plot_igorio.py b/examples/plot_igorio.py index ceee94539..5afcf9932 100644 --- a/examples/plot_igorio.py +++ b/examples/plot_igorio.py @@ -1,6 +1,6 @@ """ -IgorProIO Demo -=========================== +IgorProIO Demo (BROKEN) +======================= """ @@ -17,25 +17,25 @@ # Downloaded from Human Brain Project Collaboratory # Digital Reconstruction of Neocortical Microcircuitry (nmc-portal) # http://microcircuits.epfl.ch/#/animal/8ecde7d1-b2d2-11e4-b949-6003088da632 - - -datafile_url = "https://microcircuits.epfl.ch/data/released_data/B95.zip" -filename_zip = "B95.zip" -filename = "grouped_ephys/B95/B95_Ch0_IDRest_107.ibw" -urlretrieve(datafile_url, filename_zip) - -zip_ref = zipfile.ZipFile(filename_zip) # create zipfile object -zip_ref.extract(path=".", member=filename) # extract file to dir -zip_ref.close() - -###################################################### -# Once we have our data we can use `get_io` to find an -# io (Igor in this case). Then we read the analogsignals -# Finally we will make some nice plots -reader = get_io(filename) -signal = reader.read_analogsignal() -plt.plot(signal.times, signal) -plt.xlabel(signal.sampling_period.dimensionality) -plt.ylabel(signal.dimensionality) - -plt.show() +# NOTE: this dataset is not found as the link is broken. + +# datafile_url = "https://microcircuits.epfl.ch/data/released_data/B95.zip" +# filename_zip = "B95.zip" +# filename = "grouped_ephys/B95/B95_Ch0_IDRest_107.ibw" +# urlretrieve(datafile_url, filename_zip) + +# zip_ref = zipfile.ZipFile(filename_zip) # create zipfile object +# zip_ref.extract(path=".", member=filename) # extract file to dir +# zip_ref.close() + +# ###################################################### +# # Once we have our data we can use `get_io` to find an +# # io (Igor in this case). Then we read the analogsignals +# # Finally we will make some nice plots +# reader = get_io(filename) +# signal = reader.read_analogsignal() +# plt.plot(signal.times, signal) +# plt.xlabel(signal.sampling_period.dimensionality) +# plt.ylabel(signal.dimensionality) + +# plt.show()