From 9e65f3855448420153138950e848e4d2733a431f Mon Sep 17 00:00:00 2001 From: Ben Dichter Date: Wed, 30 Sep 2026 14:23:45 -0400 Subject: [PATCH] Add IZeroClampSeries and RoiResponseSeries to neurodata_typemap; fix OptogeneticStimulusSite typo process_ndtypes drops any neurodata type not in neurodata_typemap, so files whose only intracellular data is IZeroClampSeries, or whose ophys data is only RoiResponseSeries, got no variableMeasured, technique or approach for it. The OptogeneticStimulusSite entry was misspelled ("SIte") and so never matched the real type. Co-Authored-By: Claude Opus 5.5 --- dandi/metadata/util.py | 16 ++++++++++++++-- dandi/tests/test_metadata.py | 22 ++++++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/dandi/metadata/util.py b/dandi/metadata/util.py index 1bd41bf1f..0710a9720 100644 --- a/dandi/metadata/util.py +++ b/dandi/metadata/util.py @@ -843,6 +843,12 @@ class Neurodatum(TypedDict): "technique": "current clamp technique", "approach": "electrophysiological approach", }, + "IZeroClampSeries": { + "module": "icephys", + "neurodata_type": "IZeroClampSeries", + "technique": "current clamp technique", + "approach": "electrophysiological approach", + }, "VoltageClampSeries": { "module": "icephys", "neurodata_type": "VoltageClampSeries", @@ -885,6 +891,12 @@ class Neurodatum(TypedDict): "technique": None, "approach": "microscopy approach; cell population imaging", }, + "RoiResponseSeries": { + "module": "ophys", + "neurodata_type": "RoiResponseSeries", + "technique": None, + "approach": "microscopy approach; cell population imaging", + }, "Position": { "module": "behavior", "neurodata_type": "Position", @@ -963,9 +975,9 @@ class Neurodatum(TypedDict): "technique": "fourier analysis technique", "approach": None, }, - "OptogeneticStimulusSIte": { + "OptogeneticStimulusSite": { "module": "ogen", - "neurodata_type": "OptogeneticStimulusSIte", + "neurodata_type": "OptogeneticStimulusSite", "technique": None, "approach": "optogenetic approach", }, diff --git a/dandi/tests/test_metadata.py b/dandi/tests/test_metadata.py index 26f29acbb..f05736fa6 100644 --- a/dandi/tests/test_metadata.py +++ b/dandi/tests/test_metadata.py @@ -1062,6 +1062,15 @@ def test_species_record_matching_methods() -> None: "variableMeasured": ["CurrentClampStimulusSeries"], }, ), + pytest.param( + ["IZeroClampSeries"], + { + "approach": ["electrophysiological approach"], + "measurementTechnique": ["current clamp technique"], + "variableMeasured": ["IZeroClampSeries"], + }, + marks=pytest.mark.ai_generated, + ), ( ["VoltageClampSeries"], { @@ -1110,6 +1119,15 @@ def test_species_record_matching_methods() -> None: "variableMeasured": ["PlaneSegmentation"], }, ), + pytest.param( + ["RoiResponseSeries"], + { + "approach": ["microscopy approach; cell population imaging"], + "measurementTechnique": None, + "variableMeasured": ["RoiResponseSeries"], + }, + marks=pytest.mark.ai_generated, + ), ( ["Position"], { @@ -1215,11 +1233,11 @@ def test_species_record_matching_methods() -> None: }, ), ( - ["OptogeneticStimulusSIte"], + ["OptogeneticStimulusSite"], { "approach": ["optogenetic approach"], "measurementTechnique": None, - "variableMeasured": ["OptogeneticStimulusSIte"], + "variableMeasured": ["OptogeneticStimulusSite"], }, ), (