SpikeInterface / SpikeInterface/probeinterface

Cannot load previously-loadable Open Ephys Neuropixels 2 data (XML file issue)

Open
#469 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
85
Forks
49
Avg merge
13h 47m
Merged PRs (30d)
3

Description

Hi all — I'm encountering an issue related to #407 and potential issues with older versions of Open Ephys. I'm re-analyzing some data from 2024, recorded on NP2 probes (specifically part no. NP2013). Unfortunately, for whatever reason, some of the recordings are mostly on one shank, but have a single channel activated on a different shank, and when this has occurred, I can no longer open the data in recent versions of Open Ephys — I get the error "Could not match electrode positions to catalogue probe 'NP2013'. The probe part number in settings.xml may be incorrect. See https://github.com/SpikeInterface/probeinterface/issues/407 for details.".

For example, here is the beginning of the channels sections of the XML file for one of the recordings that fails:

<CHANNELS CH143="0:0" CH48="0:1" CH49="0:1" CH50="0:1" CH51="0:1" CH52="0:1"....>  # the rest are all 0:1
<ELECTRODE_XPOS CH143="40" CH48="258" CH49="290" CH50="258" CH51="290" CH52="258"...> # the rest are all 258/290
<ELECTRODE_YPOS CH143="705" CH48="0" CH49="0" CH50="15" CH51="15" CH52="30" CH53="30"....>

For different recordings using the same probe on a different day, where there isn't a lone stranded channel, SI can load the recording perfectly fine. So I think this lone channel is causing the error message. What's confusing is that I think (40, 705) is a valid position on these NP2 probes. Plenty of other channels have xpos 40 (it's the second column of shank 1), and 705 is also a valid row y-value. So I think there is something deeper going on, that I'm not fully equipped to unpack.

Any advice for how to load these recordings in this updated SI version, or sanitize the XML files so they can be loaded? Thanks!

Current versions:
probeinterface 0.3.2
spikeinterface 0.104.8

Files that could help:
old_settings_error.xml
old_settings_ok.xml

Traceback
Traceback (most recent call last):
    si.read_openephys("/n/groups/datta/Jonah/20231003_vlPAG_npx/raw_data/J07501/20240823_J07501_tur
    si.read_openephys("/n/groups/datta/Jonah/20231003_vlPAG_npx/raw_data/J07501/20240823_J07501_turbulator_shank3/2024-08-23_16-33-32/Record Node 105")
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/n/groups/datta/Jonah/miniconda3/envs/spikeinterface_5/lib/python3.13/site-packages/spikeinterface/extractors/neoextractors/openephys.py", line 521, in read_openephys
    recording = OpenEphysBinaryRecordingExtractor(folder_path, **kwargs)
  File "/n/groups/datta/Jonah/miniconda3/envs/spikeinterface_5/lib/python3.13/site-packages/spikeinterface/extractors/neoextractors/openephys.py", line 325, in __init__
    probe = probeinterface.read_openephys(
        settings_file=settings_file, stream_name=oe_stream_name, raise_error=False
    )
  File "/n/groups/datta/Jonah/miniconda3/envs/spikeinterface_5/lib/python3.13/site-packages/probeinterface/neuropixels_tools.py", line 1565, in read_openephys
    probe = _slice_openephys_catalogue_probe(full_probe, probe_info)
  File "/n/groups/datta/Jonah/miniconda3/envs/spikeinterface_5/lib/python3.13/site-packages/probeinterface/neuropixels_tools.py", line 1449, in _slice_openephys_catalogue_probe
    raise ValueError(
    ...<3 lines>...
    )
ValueError: Could not match electrode positions to catalogue probe 'NP2013'. The probe part number in settings.xml may be incorrect. See https://github.com/SpikeInterface/probeinterface/issues/407 for details.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in probeinterface/neuropixels_tools.py at _slice_openephys_catalogue_probe and read_openephys, using the traceback and the two attached settings XML files as reproduction inputs. Compare old_settings_error.xml with old_settings_ok.xml, then verify that the affected Open Ephys recording loads while the existing successful case continues to work.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.