From cf58a83b02119dc6cfa74510766eeac11c775910 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 13:59:14 -0500 Subject: [PATCH 1/4] Support NeuroConv 0.7.5 --- environments/environment-Linux.yml | 3 +-- environments/environment-MAC-apple-silicon.yml | 3 +-- environments/environment-MAC-intel.yml | 3 +-- environments/environment-Windows.yml | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/environments/environment-Linux.yml b/environments/environment-Linux.yml index a742f3df7..b2b372cc1 100644 --- a/environments/environment-Linux.yml +++ b/environments/environment-Linux.yml @@ -15,11 +15,10 @@ dependencies: - flask-cors == 4.0.0 - flask_restx == 1.1.0 - werkzeug < 3.0 # werkzeug 3.0 deprecates features used by flask 2.3.2. Remove this when updating flask. - - neuroconv[dandi,compressors] == 0.7.4 + - neuroconv[dandi,compressors] == 0.7.5 - dandi < 0.74.0 # 0.74.0 renamed dandi-staging to dandi-sandbox, breaking neuroconv 0.6.6 - spikeinterface >= 0.101.0 # Previously included via neuroconv[ecephys]; needed for tutorial data generation - pandas < 3.0 # pandas 3.0 uses Arrow backend by default, returning read-only arrays that break spikeinterface Phy extractor - - neo == 0.14.1 # 0.14.2 is not compatible with neuroconv < 0.7.5 - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling diff --git a/environments/environment-MAC-apple-silicon.yml b/environments/environment-MAC-apple-silicon.yml index 1bc176d56..43b60ce3a 100644 --- a/environments/environment-MAC-apple-silicon.yml +++ b/environments/environment-MAC-apple-silicon.yml @@ -23,11 +23,10 @@ dependencies: - werkzeug < 3.0 # werkzeug 3.0 deprecates features used by flask 2.3.2. Remove this when updating flask. # NOTE: the NeuroConv wheel on PyPI includes sonpy which is not compatible with arm64, so build and install # NeuroConv from GitHub, which will remove the sonpy dependency when building from Mac arm64 - - neuroconv[dandi,compressors] == 0.7.4 + - neuroconv[dandi,compressors] == 0.7.5 - dandi < 0.74.0 # 0.74.0 renamed dandi-staging to dandi-sandbox, breaking neuroconv 0.6.6 - spikeinterface >= 0.101.0 # Previously included via neuroconv[ecephys]; needed for tutorial data generation - pandas < 3.0 # pandas 3.0 uses Arrow backend by default, returning read-only arrays that break spikeinterface Phy extractor - - neo == 0.14.1 # 0.14.2 is not compatible with neuroconv < 0.7.5 - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling diff --git a/environments/environment-MAC-intel.yml b/environments/environment-MAC-intel.yml index 0585dcf83..76293bd97 100644 --- a/environments/environment-MAC-intel.yml +++ b/environments/environment-MAC-intel.yml @@ -18,11 +18,10 @@ dependencies: - flask-cors == 4.0.0 - flask_restx == 1.1.0 - werkzeug < 3.0 # werkzeug 3.0 deprecates features used by flask 2.3.2. Remove this when updating flask. - - neuroconv[dandi,compressors] == 0.7.4 + - neuroconv[dandi,compressors] == 0.7.5 - dandi < 0.74.0 # 0.74.0 renamed dandi-staging to dandi-sandbox, breaking neuroconv 0.6.6 - spikeinterface >= 0.101.0 # Previously included via neuroconv[ecephys]; needed for tutorial data generation - pandas < 3.0 # pandas 3.0 uses Arrow backend by default, returning read-only arrays that break spikeinterface Phy extractor - - neo == 0.14.1 # 0.14.2 is not compatible with neuroconv < 0.7.5 - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling diff --git a/environments/environment-Windows.yml b/environments/environment-Windows.yml index fcbc1423c..dda0bc49f 100644 --- a/environments/environment-Windows.yml +++ b/environments/environment-Windows.yml @@ -18,11 +18,10 @@ dependencies: - flask-cors === 3.0.10 - flask_restx == 1.1.0 - werkzeug < 3.0 # werkzeug 3.0 deprecates features used by flask 2.3.2. Remove this when updating flask. - - neuroconv[dandi,compressors] == 0.7.4 + - neuroconv[dandi,compressors] == 0.7.5 - dandi < 0.74.0 # 0.74.0 renamed dandi-staging to dandi-sandbox, breaking neuroconv 0.6.6 - spikeinterface >= 0.101.0 # Previously included via neuroconv[ecephys]; needed for tutorial data generation - pandas < 3.0 # pandas 3.0 uses Arrow backend by default, returning read-only arrays that break spikeinterface Phy extractor - - neo == 0.14.1 # 0.14.2 is not compatible with neuroconv < 0.7.5 - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling From daeb16c6dd2c11a3e6b193656f93d8c3c71163da Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 14:13:46 -0500 Subject: [PATCH 2/4] =?UTF-8?q?Loosen=20nwbinspector=20pin:=20=3D=3D=200.6?= =?UTF-8?q?.2=20=E2=86=92=20>=3D=200.6.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- environments/environment-Linux.yml | 2 +- environments/environment-MAC-apple-silicon.yml | 2 +- environments/environment-MAC-intel.yml | 2 +- environments/environment-Windows.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/environments/environment-Linux.yml b/environments/environment-Linux.yml index b2b372cc1..74df8eca3 100644 --- a/environments/environment-Linux.yml +++ b/environments/environment-Linux.yml @@ -23,6 +23,6 @@ dependencies: - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - ndx-pose == 0.1.1 - - nwbinspector == 0.6.2 + - nwbinspector >= 0.6.2 - tables - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 diff --git a/environments/environment-MAC-apple-silicon.yml b/environments/environment-MAC-apple-silicon.yml index 43b60ce3a..57f342196 100644 --- a/environments/environment-MAC-apple-silicon.yml +++ b/environments/environment-MAC-apple-silicon.yml @@ -31,5 +31,5 @@ dependencies: - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - ndx-pose == 0.1.1 - - nwbinspector == 0.6.2 + - nwbinspector >= 0.6.2 - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 diff --git a/environments/environment-MAC-intel.yml b/environments/environment-MAC-intel.yml index 76293bd97..d21280942 100644 --- a/environments/environment-MAC-intel.yml +++ b/environments/environment-MAC-intel.yml @@ -26,7 +26,7 @@ dependencies: - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - ndx-pose == 0.1.1 - - nwbinspector == 0.6.2 + - nwbinspector >= 0.6.2 - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 - h5py == 3.12.1 # 3.13.0 uses features in hdf5 1.14.4 that is not available in earlier hdf5 libs packaged # with tables==3.9.1 (latest that can be used by neuroconv 0.6.0). diff --git a/environments/environment-Windows.yml b/environments/environment-Windows.yml index dda0bc49f..711d17a7e 100644 --- a/environments/environment-Windows.yml +++ b/environments/environment-Windows.yml @@ -26,6 +26,6 @@ dependencies: - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - ndx-pose == 0.1.1 - - nwbinspector == 0.6.2 + - nwbinspector >= 0.6.2 - tables - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 From d77e19df01934d5c2fb47af6b7489fc173b79698 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 14:41:14 -0500 Subject: [PATCH 3/4] =?UTF-8?q?Loosen=20ndx-pose=20pin:=20=3D=3D=200.1.1?= =?UTF-8?q?=20=E2=86=92=20>=3D=200.1.1=20(pynwb=203=20compat)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- environments/environment-Linux.yml | 2 +- environments/environment-MAC-apple-silicon.yml | 2 +- environments/environment-MAC-intel.yml | 2 +- environments/environment-Windows.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/environments/environment-Linux.yml b/environments/environment-Linux.yml index 74df8eca3..ded931ed2 100644 --- a/environments/environment-Linux.yml +++ b/environments/environment-Linux.yml @@ -22,7 +22,7 @@ dependencies: - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - - ndx-pose == 0.1.1 + - ndx-pose >= 0.1.1 - nwbinspector >= 0.6.2 - tables - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 diff --git a/environments/environment-MAC-apple-silicon.yml b/environments/environment-MAC-apple-silicon.yml index 57f342196..a80c8ef94 100644 --- a/environments/environment-MAC-apple-silicon.yml +++ b/environments/environment-MAC-apple-silicon.yml @@ -30,6 +30,6 @@ dependencies: - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - - ndx-pose == 0.1.1 + - ndx-pose >= 0.1.1 - nwbinspector >= 0.6.2 - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 diff --git a/environments/environment-MAC-intel.yml b/environments/environment-MAC-intel.yml index d21280942..d6926e342 100644 --- a/environments/environment-MAC-intel.yml +++ b/environments/environment-MAC-intel.yml @@ -25,7 +25,7 @@ dependencies: - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - - ndx-pose == 0.1.1 + - ndx-pose >= 0.1.1 - nwbinspector >= 0.6.2 - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 - h5py == 3.12.1 # 3.13.0 uses features in hdf5 1.14.4 that is not available in earlier hdf5 libs packaged diff --git a/environments/environment-Windows.yml b/environments/environment-Windows.yml index 711d17a7e..7070612d6 100644 --- a/environments/environment-Windows.yml +++ b/environments/environment-Windows.yml @@ -25,7 +25,7 @@ dependencies: - scikit-learn == 1.4.0 # Tutorial data generation - tqdm_publisher >= 0.0.1 # Progress bars - tzlocal >= 5.2 # Frontend timezone handling - - ndx-pose == 0.1.1 + - ndx-pose >= 0.1.1 - nwbinspector >= 0.6.2 - tables - numcodecs < 0.16.0 # numcodecs 0.16.0 is not compatible with zarr 2.18.5 From 271156433b538a8173cc405c806ebc1e2d6b4286 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 15:17:19 -0500 Subject: [PATCH 4/4] Sync ElectrodeColumns with Electrode schema properties MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Same fix as UnitColumns sync — ensures ElectrodeColumns includes entries for all Electrode schema properties to prevent frontend linked-table validation errors ('not allowed to have additional property manufacturer'). --- src/pyflask/manageNeuroconv/manage_neuroconv.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pyflask/manageNeuroconv/manage_neuroconv.py b/src/pyflask/manageNeuroconv/manage_neuroconv.py index 6247ce254..e3714e9e0 100644 --- a/src/pyflask/manageNeuroconv/manage_neuroconv.py +++ b/src/pyflask/manageNeuroconv/manage_neuroconv.py @@ -610,6 +610,19 @@ def on_recording_interface(name, recording_interface): "additionalProperties": True, # Allow for new columns } + # Ensure ElectrodeColumns includes entries for all Electrode schema properties + # (needed for frontend linked-table validation in neuroconv >= 0.7.5) + existing_electrode_columns = ecephys_metadata.get("ElectrodeColumns", []) + existing_ecol_names = {col["name"] for col in existing_electrode_columns} + for prop_name, prop_info in new_electrodes_properties.items(): + if prop_name not in existing_ecol_names: + existing_electrode_columns.append( + { + "name": prop_name, + "description": prop_info.get("description", "No description."), + } + ) + if has_units: unitprops_def = defs["UnitProperties"]