-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Handle all Intan modes and formats and add documentation #789
Comments
Related to this: All of Neo's code for rhs format's are stuck in version 1.0 when we should update to get to version 3.x (the current). So everything you've listed needs to be doubled for the .rhd AND for the .rhs. :) |
Thanks for jumping in @zm711. I think that rhs should be sort of straighfroward (fingers crossed!) but we would need some test files for that. |
I can make some ( still haven't set up my gin g-node account so if I share them would you put them on there :)? ) I think we've done most of the work with the rhd it would just be propagating. I might also try to share an intan merged file so we can get to the bottom of why merging with intan causes neo to fail. I'm pretty busy this week doing analysis, but I can share the files with you this weekend. |
OK, send them over when you have a chance. Consdering the neo release schedule and that now we have some resources on improving intan this is a good time to do it. I still owe you the performance analysis that I will do against the data of the lab that I am working with. This will be important for them and maybe we can add further improvements before the next release. Thanks again for jumping in! |
@zm711 I don't know if @h-mayorquin mentioned in passing to you yet, but we've wanted for a while now to have a GitHub LFS copy (or complete migration) of the example datasets instead of GIN - mainly because we get lots of complaints from users and team members that GIN is really hard to contribute to (and even download from) - but no one has had time or energy on our side to make the jump so if you have any interest in taking that on we'd be very grateful 😁 |
Happy to at least bring it up at the next meeting because I too dislike GIN workflow and haven't got datalad to work on my personal laptop yet. |
One thing that is not clear and it would be good to discuss with both of you guys @CodyCBakerPhD and @zm711 is the following. How to handle the different signal types? We have: ]
stream_type_to_name = {
0: "RHD2000 amplifier channel",
1: "RHD2000 auxiliary input channel",
2: "RHD2000 supply voltage channel",
3: "USB board ADC input channel",
4: "USB board digital input channel",
5: "USB board digital output channel",
} Plus temperature. For the first iteration of the interface I intend this to work for amplifier channels as they are sort of straighfroward for NWB. They should go as ElectricalSeries and we can just write them in the standard way. However, what about the others? Not sure how to handle the rest. |
So from my experience,
These are just based on my reading though so happy to debate. I use amplifier + digital-in + adc all the time so I'm use to those the most. My schema would be amplifier-> DATA |
Sounds like From Zachs comments on Digital signals can depend - if just a simple TTL then seems a waste to include entire raw electrical trace - just parse the on/off times and store those in a table or |
Thanks guys, this is very useful. I have some uses cases from the current conversion that can add to the debate. They are for signal 3 (USB board ADC input channel with files named board-ANALOG) and signal 4 (USB board digital input channel with files named board-DIGITAL-IN).
|
Your USB board ADC input (3) is exactly what I was thinking for ADC. The thing I've noticed for ADC was the baseline wasn't super steady (for my purpose) so I'm curious if your baseline was super steady. For data_of_ones_and_zeros = np.not_equal(np.bitwise_and(raw_digital_data, (1 << value),), 0,) where you just input value for each digital channel to get the TTL signal then do the rising-edge. If you wanted to be more robust you could just iterate through all values So really to @CodyCBakerPhD point there is the raw-raw digital data that is |
Side question: |
As far as I know the amplifier channels need a headstage to be engaged. For example if I turn on intan without a headstage connected it only gives me access to dig-in, analog-in. There are some set ups for EMG (and I think EEG) with their headstages so they don't have to be MEA data. |
The files from Intan come in a variety of formats:
For the last two we recently added suppport in Neo:
NeuralEnsemble/python-neo#1402
I am propagating this to Spikeinterface:
SpikeInterface/spikeinterface#2630
And then to Neuroconv.
A further complication is that for the first format (the one that we already support) the files might be divided across time. That is, a file with all the streams and all their channels is produced every x minutes and to get the whole session you have to concatenate. See this issue and specially this comment.
Regarding documentation, I think we could have a tutorial (maybe in the conversion gallery) where it is explained how to to handle the three cases and what to do if the files are scattered across time.
A lot of good information in this thread that I link here for provenance.
SpikeInterface/spikeinterface#2620
[EDIT]
I am adding a screenshoot of how the saving menu looks like that I think is very useful information to take into account
Taking from page 19 of the user guide
https://intantech.com/files/Intan_RHX_user_guide.pdf
The text was updated successfully, but these errors were encountered: