Migrate read_spikegadgets to the catalogue pattern#418
Conversation
|
I think I can get some NP2 test data ;) |
for more information, see https://pre-commit.ci
|
@alejoe91 I added the example you shared recently to the repo. The reader now branches on Your example only activates one shank, so we are still missing a true 4-shank example, but I guess that can be done later. |
|
I can also separate the PRs with the migration first and then 2.0 support if you want @alejoe91 |
Reverts the NP2.0 4-shank additions so this PR is a pure NP1.0 catalogue migration. NP2.0 support will land as a separate follow-up, which keeps the dispatch dict and unknown-device guard out of the migration PR.
build_neuropixels_probe annotates adc_range_vpp and, when the catalogue lists a single fixed value (NP2.x), ap_gain/lf_gain. read_imro, read_spikeglx, and _annotate_openephys_probe fall back to source metadata for the scalar gains when the catalogue did not provide them. read_spikegadgets parses APGainMode/LFPGainMode from the SourceOptions block and calls _annotate_probe_with_adc_sampling_info, bringing it to functional parity with the other Neuropixels readers for downstream preprocessing.
…on_spikegadgets # Conflicts: # src/probeinterface/neuropixels_tools.py
This should be ready.2 |
This migrates
read_spikegadgetsto usebuild_neuropixels_probe+get_slice, the same pattern thatread_spikeglx(#232),read_openephys(#406, #409), andread_imro(#410) already follow. Instead of constructing probe geometry from scratch by parsing XML coordinates, the reader now builds the full 960-contact catalogue probe and slices it to the active electrodes using thechannelsOnbitmask. Device channel indices are mapped from the SpikeNTrodehwChanattributes. This was the last Neuropixels reader that bypassed the catalogue (#405).The SpikeGadgets XML format does not include the probe part number, so I hardcode
"NP1000"for the catalogue lookup. I verified that all 10 staggered NP 1.0 variants in the catalogue (NP1000, NP1001, NP1010-NP1014, PRB_1_2_0480_2, PRB_1_4_0480_1, PRB_1_4_0480_1_C) share identical 2D geometry: contact positions, pitch, stagger, shank width, tip length, shank length, contour, electrode count, and ADC/MUX tables. The only fields that differ are metadata (description, datasheet, is_commercial) and shank_thickness_um (Z-axis), none of which probeinterface uses. Because we cannot attribute a specific part number,model_nameanddescriptionare cleared after slicing. This assumption would be wrong for NP1015-NP1017 (NHP linear) and NP1300 (Optopix), but the SpikeGadgets headstage is documented as supporting standard rodent Neuropixels 1.0 probes, which are the staggered variants.The newer Bennu datalogger (https://spikegadgets.com/products/bennu-neuropixels-datalogger/) advertises NP 2.0 support. When
.recfiles from that device become available, we will need test data and likely a way to detect the probe type from the XML to extend this reader.