From 23827e147254a9463f385d13fdde5f286ea2c118 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 14:00:56 -0500 Subject: [PATCH 1/4] Support NeuroConv 0.8.1 - Update neuroconv to 0.8.1 - Update automatic_dandi_upload calls: staging parameter renamed to sandbox --- environments/environment-Linux.yml | 2 +- environments/environment-MAC-apple-silicon.yml | 2 +- environments/environment-MAC-intel.yml | 2 +- environments/environment-Windows.yml | 2 +- src/pyflask/manageNeuroconv/manage_neuroconv.py | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/environments/environment-Linux.yml b/environments/environment-Linux.yml index 0b14b3303..57bee7d0b 100644 --- a/environments/environment-Linux.yml +++ b/environments/environment-Linux.yml @@ -15,7 +15,7 @@ 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.8.0 + - neuroconv[dandi,compressors] == 0.8.1 - 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 diff --git a/environments/environment-MAC-apple-silicon.yml b/environments/environment-MAC-apple-silicon.yml index 5ee2e9513..37a4a60f8 100644 --- a/environments/environment-MAC-apple-silicon.yml +++ b/environments/environment-MAC-apple-silicon.yml @@ -23,7 +23,7 @@ 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.8.0 + - neuroconv[dandi,compressors] == 0.8.1 - 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 diff --git a/environments/environment-MAC-intel.yml b/environments/environment-MAC-intel.yml index 4b77b869d..ba964f77d 100644 --- a/environments/environment-MAC-intel.yml +++ b/environments/environment-MAC-intel.yml @@ -18,7 +18,7 @@ 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.8.0 + - neuroconv[dandi,compressors] == 0.8.1 - 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 diff --git a/environments/environment-Windows.yml b/environments/environment-Windows.yml index 605c00d86..67082f4fc 100644 --- a/environments/environment-Windows.yml +++ b/environments/environment-Windows.yml @@ -18,7 +18,7 @@ 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.8.0 + - neuroconv[dandi,compressors] == 0.8.1 - 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 diff --git a/src/pyflask/manageNeuroconv/manage_neuroconv.py b/src/pyflask/manageNeuroconv/manage_neuroconv.py index 6247ce254..1dff566d4 100644 --- a/src/pyflask/manageNeuroconv/manage_neuroconv.py +++ b/src/pyflask/manageNeuroconv/manage_neuroconv.py @@ -1380,7 +1380,7 @@ def upload_folder_to_dandi( return automatic_dandi_upload( dandiset_id=dandiset_id, nwb_folder_path=Path(nwb_folder_path), - staging=sandbox, # Map sandbox parameter to staging for external API + sandbox=sandbox, cleanup=cleanup, number_of_jobs=number_of_jobs or 1, number_of_threads=number_of_threads or 1, @@ -1414,7 +1414,7 @@ def upload_project_to_dandi( return automatic_dandi_upload( dandiset_id=dandiset_id, nwb_folder_path=CONVERSION_SAVE_FOLDER_PATH / project, # Scope valid DANDI upload paths to GUIDE projects - staging=sandbox, # Map sandbox parameter to staging for external API + sandbox=sandbox, cleanup=cleanup, number_of_jobs=number_of_jobs, number_of_threads=number_of_threads, From 42c9bcbea1107a4d763db3b9a1652fa69b74abfb Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 14:13:48 -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 57bee7d0b..75dd56a93 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 37a4a60f8..04f4146c1 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 ba964f77d..8cc10a888 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 67082f4fc..574603f8b 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 e64d098f692e6219557fed8570e61854eaafe8b8 Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 12 Feb 2026 14:41:17 -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 75dd56a93..9b211d7fd 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 04f4146c1..5f17d82aa 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 8cc10a888..e925ef391 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 574603f8b..838cecf50 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 80cb0de75c3201e14494e4901606d13df9ba2cdd 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 1dff566d4..cd2f98403 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"]