NeurodataWithoutBorders / nwb-guide

NWB GUIDE is a desktop app that provides a no-code user interface for converting neurophysiology data to NWB.
https://nwb-guide.readthedocs.io/
MIT License
22 stars 3 forks source link

Error loading SpikeGLX data in tutorial #726

Closed stephprince closed 7 months ago

stephprince commented 7 months ago

Describe the issue

I was going through the NWB Guide tutorial to prepare for the Houston workshop - very cool interface and clear tutorial!!

I just ran into an issue when loading the SpikeGLX data for the tutorial:

Traceback (most recent call last):
  File "/Users/smprince/Documents/projects/nwb-guide/pyflask/apis/neuroconv.py", line 97, in post
    return get_metadata_schema(
  File "/Users/smprince/Documents/projects/nwb-guide/pyflask/manageNeuroconv/manage_neuroconv.py", line 381, in get_metadata_schema
    converter = instantiate_custom_converter(resolved_source_data, interfaces)
  File "/Users/smprince/Documents/projects/nwb-guide/pyflask/manageNeuroconv/manage_neuroconv.py", line 352, in instantiate_custom_converter
    return CustomNWBConverter(source_data)
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/neuroconv/nwbconverter.py", line 70, in __init__
    self.data_interface_objects = {
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/neuroconv/nwbconverter.py", line 71, in <dictcomp>
    name: data_interface(**source_data[name])
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/neuroconv/datainterfaces/ecephys/spikeglx/spikeglxconverter.py", line 78, in __init__
    interface = SpikeGLXRecordingInterface(file_path=file_path)
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/neuroconv/datainterfaces/ecephys/spikeglx/spikeglxdatainterface.py", line 60, in __init__
    super().__init__(
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/neuroconv/datainterfaces/ecephys/baserecordingextractorinterface.py", line 38, in __init__
    self.recording_extractor = self.get_extractor()(**source_data)
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/spikeinterface/extractors/neoextractors/spikeglx.py", line 53, in __init__
    NeoBaseRecordingExtractor.__init__(
  File "/Users/smprince/anaconda3/envs/nwb-guide/lib/python3.9/site-packages/spikeinterface/extractors/neoextractors/neobaseextractor.py", line 217, in __init__
    assert stream_id in stream_ids, f"stream_id {stream_id} is not in {stream_ids}"
AssertionError: stream_id imec0.lf is not in []

I wasn't sure if it was because I specified a folder path instead of a file path? However I wasn't able to select a file, only folders were given as options.

Screenshot 2024-04-03 at 12 54 30 PM

A similar thing occurred when I tried the data location autocomplete (really convenient feature!) for multiple sessions , I could only select folders:

Screenshot 2024-04-03 at 1 27 19 PM

Steps to Reproduce

Go to Data entry -> SpikeGLX Converter -> Folder Path

Operating System

Apple M3 Pro

GUIDE Version

latest NWB-GUIDE-arm64.dmg and main branch

Code of Conduct

Yes

Did you confirm this issue was not already reported?

Yes

CodyCBakerPhD commented 7 months ago

The tutorial should have specified to use the SpikeGLXRecordingInterface, not the SpikeGLXConverter

We'll eventually add a 'how to' page to clarify the folder path for multi-stream interfaces since it is a bit particular

stephprince commented 7 months ago

Got it, thanks! I didn't catch the different single-stream and multi-stream categories