Spikeglx: parse tcat input
Opened this issue · 1 comments
tabedzki commented
Describe the bug
I am unable to read in my lf
files when using SpikeGLXRawIO. The file structure is currently as below. When I had all the lf
files be t0
instead of tcat
it worked flawlessly.
ya008_20240525_g0
├── ya008_20240525_g0_ct_offsets.txt
├── ya008_20240525_g0_fyi.txt
├── ya008_20240525_g0_imec0
│ ├── ya008_20240525_g0_t0.imec0.ap.bin
│ ├── ya008_20240525_g0_t0.imec0.ap.meta
│ ├── ya008_20240525_g0_tcat.imec0.lf.bin
│ └── ya008_20240525_g0_tcat.imec0.lf.meta
├── ya008_20240525_g0_imec1
│ ├── ya008_20240525_g0_t0.imec1.ap.bin
│ ├── ya008_20240525_g0_t0.imec1.ap.meta
│ ├── ya008_20240525_g0_tcat.imec1.lf.bin
│ └── ya008_20240525_g0_tcat.imec1.lf.meta
├── ya008_20240525_g0_t0.nidq.bin
└── ya008_20240525_g0_t0.nidq.meta
To Reproduce
(neuroconv_312) ➜ test2 ipython
Python 3.12.3 | packaged by conda-forge | (main, Apr 15 2024, 18:38:13) [GCC 12.3.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.26.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import neo.rawio
In [2]: reader = neo.rawio.SpikeGLXRawIO(dirname='./ya008_20240525_g0')
In [3]: reader.parse_header()
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
Cell In[3], line 1
----> 1 reader.parse_header()
File /scratch/ct5868/.conda/envs/neuroconv_312/lib/python3.12/site-packages/neo/rawio/baserawio.py:189, in BaseRawIO.parse_header(self)
176 """
177 Parses the header of the file(s) to allow for faster computations
178 for all other functions
179
180 """
181 # this must create
182 # self.header['nb_block']
183 # self.header['nb_segment']
(...)
186 # self.header['spike_channels']
187 # self.header['event_channels']
--> 189 self._parse_header()
190 self._check_stream_signal_channel_characteristics()
191 self.is_header_parsed = True
File /scratch/ct5868/.conda/envs/neuroconv_312/lib/python3.12/site-packages/neo/rawio/spikeglxrawio.py:147, in SpikeGLXRawIO._parse_header(self)
144 signal_channels = []
145 for stream_name in stream_names:
146 # take first segment
--> 147 info = self.signals_info_dict[0, stream_name]
149 stream_id = stream_name
150 stream_index = stream_names.index(info["stream_name"])
KeyError: (0, 'imec1.ap')
Environment:
- OS: Linux
- Python version: 3.12
- Neo version: 0.13.1
I am happy to provide access to the meta
files. The SpikeGLX data is rather large so if having access to that would be necessary, I'd have to ask IT how to best distribute that data.
samuelgarcia commented
@alejoe91 can you handle this ?