catalystneuro / neuroconv

Create NWB files by converting and combining neural data in proprietary formats and adding essential metadata.
https://neuroconv.readthedocs.io
BSD 3-Clause "New" or "Revised" License
51 stars 23 forks source link

[Feature]: SpikeGLX improvements #522

Open CodyCBakerPhD opened 1 year ago

CodyCBakerPhD commented 1 year ago

What would you like to see added to NeuroConv?

Three key improvements to the SpikeGLXConverter based on discussions with @jenniferColonell

1a) Use the sync channels of the AP band of each probe to automatically sync analog, digital channels, and other probes, into that time basis

1b) Record the error info encoded into the 6th bit of the first byte of the sync channel along with interpration

2) Multi-probe support with naming conventions - this feature has been awaiting example data, which I know have (just need to snip it down a bit to put on the repo)

3) NeuroPixel probe extension with all the rich metadata found at http://billkarsh.github.io/SpikeGLX/Sgl_help/Metadata_30.html (and for other versions too maybe)

Is your feature request related to a problem?

No response

Do you have any interest in helping implement the feature?

Yes.

Code of Conduct

h-mayorquin commented 1 year ago

Relevant: https://github.com/SpikeInterface/probeinterface/issues/192

https://github.com/SpikeInterface/spikeinterface/pull/1830

CodyCBakerPhD commented 3 months ago

@h-mayorquin I actually don't know anymore if this is still something we want, or just let users handle their own sync access?

Otherwise the items on this issue have been done

h-mayorquin commented 3 months ago

Flagging for discussing in the next in-person meeting.

h-mayorquin commented 3 months ago

Discussion with Cody at 2024-08-20

1a) We both agree that the user / person doing the conversion is the one that should be setting timestamps. We should provide tutorials, helper function and education in general but we probably don't want to go that far in that direction without seeting a sufficiently large number of example.

1b) Record the error info encoded into the 6th bit of the first byte of the sync channel along with interpration [The synch channel has some bytes/magic number/code to indicate there is something wrong with the data. We should use that information warn or assert (correction most likely not possible). Figure that out.

  1. Done
  2. This needs to be done in probeinterface and propagated here

Related: https://github.com/catalystneuro/neuroconv/issues/923