From 9ff57d323db4a1de74e1f8e8f8e55d75de3706fa Mon Sep 17 00:00:00 2001 From: Christian Tabedzki <35670232+tabedzki@users.noreply.github.com> Date: Tue, 11 Aug 2026 12:27:58 -0400 Subject: [PATCH] fix: replace regex probe model check with ProbeType lookup in ephys_precluster ephys_precluster.py used re.search("(1.0|2.0|2013)", probe_model) to gate probe type support, unlike ephys_acute/ephys_no_curation/ ephys_chronic which check membership against the registered ProbeType table. Part-number-style probe_model values (e.g. NP2004, NP2014) don't contain the substrings the regex looks for, so they always failed with NotImplementedError regardless of whether a matching ProbeType row existed. Replace both regex checks (SpikeGLX and Open Ephys branches) with the same supported_probe_types membership check used elsewhere, and register NP2014 in create_neuropixels_probe_types(). Assisted-by: ClaudeCode:claude-sonnet-5 --- element_array_ephys/ephys_precluster.py | 7 ++++--- element_array_ephys/probe.py | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/element_array_ephys/ephys_precluster.py b/element_array_ephys/ephys_precluster.py index c94a1973..d7f177e0 100644 --- a/element_array_ephys/ephys_precluster.py +++ b/element_array_ephys/ephys_precluster.py @@ -1,6 +1,5 @@ import importlib import inspect -import re import datajoint as dj import numpy as np @@ -218,6 +217,8 @@ def make(self, key): f" in {session_dir}" ) + supported_probe_types = probe.ProbeType.fetch("probe_type") + if acq_software == "SpikeGLX": for meta_filepath in ephys_meta_filepaths: spikeglx_meta = spikeglx.SpikeGLXMeta(meta_filepath) @@ -228,7 +229,7 @@ def make(self, key): "No SpikeGLX data found for probe insertion: {}".format(key) ) - if re.search("(1.0|2.0|2013)", spikeglx_meta.probe_model): + if spikeglx_meta.probe_model in supported_probe_types: probe_type = spikeglx_meta.probe_model electrode_query = probe.ProbeType.Electrode & {"probe_type": probe_type} @@ -277,7 +278,7 @@ def make(self, key): "No Open Ephys data found for probe insertion: {}".format(key) ) - if re.search("(1.0|2.0)", probe_data.probe_model): + if probe_data.probe_model in supported_probe_types: probe_type = probe_data.probe_model electrode_query = probe.ProbeType.Electrode & {"probe_type": probe_type} diff --git a/element_array_ephys/probe.py b/element_array_ephys/probe.py index d433ed53..0d5268d3 100644 --- a/element_array_ephys/probe.py +++ b/element_array_ephys/probe.py @@ -138,6 +138,7 @@ def create_neuropixels_probe_types(): "neuropixels 2.0 - MS", "2013", "NP2004", + "NP2014", ): if not (ProbeType & {"probe_type": probe_type}): create_neuropixels_probe(probe_type)