-
Notifications
You must be signed in to change notification settings - Fork 0
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
Add initial extension #1
Conversation
Wow, this is really coming together! Just let me know when ready for an initial review - I'm OK with quick merge cycles and subsequent fixes/improvements as well |
Good point. This PR doesn't need to be perfect and I think it is good enough for initial review. We can tackle the remaining TODO items in separate PRs. |
Actually before review, I'm going to make a few small organizational changes. |
Sure, what kind of organization changes were you thinking? |
Let me know when I should take a look into this. |
OK. Sorry for my delay; I admit, I think I sent that last message on a plane and no longer remember what else I wanted to change. So this is ready for review. |
src/pynwb/ndx_extracellular_channels/widgets/tetrode_series_widget.py
Outdated
Show resolved
Hide resolved
Just a couple minor points After that happy to merge this and raise issues as follow-ups if bugs are encountered or changes requested |
I am confused about this. The contacts table is just an non-spatial positioned version of geometry / shape of the probe. Why do we have an attribute for the
I think should be optional. @CodyCBakerPhD why do you think it should be required? We are not sure if people will have the wiring map and we don't want them to make up information. The identity map is making up information. |
Thank you for the detailed review @h-mayorquin ! I have updated the PR based on your suggestions and discussion. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I read the round-trip tests and this looks OK to me. More than that, this is looking great. Thanks @rly for moving this forward. I learned a lot from your reviewing your code. Thanks for your patience.
There are things that I still don't like but that can be addressed later:
- I think probe insertion should go into Probe as discussed. I think we agree on this and will also solve some concerns in [Proposal] The return of ElectrodesTable #3 (comment) without too many changes.
- Make the contacts optional. The wiring between channels and contacts is not obvious and in cases the users don't have it we should not force them to construct fake information. If the mapping is not available, then is not available and tha's it.
- I don't really like having the estimated and confirmed positions as canonical attributes in the channels table. I think that the proposal on [Proposal] The return of ElectrodesTable #3 of relegating this to an
AnatomicalCoordinatesTable
is better for the following reasons. First, separation of concerns between the description of the ecephys setup and experiments of localization. I think is nice to decouple those two things so they can evolve on their own. If the localization experiments improve we then only need the change toAnatomicalCoordinatesTable
or link into a better extension without making parts of our schema obsolete. Second, in the case of SpikeGLX where two channels map to one contact we will end up with redundant information. Plus, even within the current schema I don't like the canonization ofestimated_{}
as a set of single columns. I think thatconfirmed_{x}
is a great name but what if there is more than one estimate? Right now those are optional attributes and maybe something like this is needed urgently in which case is fine but I still wanted to point out what I think are flaws of this design. - Finally, I would still prefer the mapping between the channels table and device to be at the row level for the reasons described in [Proposal] The return of ElectrodesTable #3 (comment). Which in short are that the channels table is working as an abstraction of the DAQ (recording system plus headstage in most cases) and those devices usually map to more than one probe (like the DAQ of Openephys and Intan). In addition, this will make automatization of the conversion possible for some formats that don't have a way of telling if the data came from differentes probes (like Intan). Plus, mapping at the rows of the channel table to either device or rows of the
AnatomicalCoordinatesTable
would also solve the problems of duplication of information described on [Proposal] The return of ElectrodesTable #3 (comment) and is a more general workflow overall. I think is a little bit more clumsy but I think some of that can be attenuated with clever design at the API level.
What do you guys think?
I just moved
I'm not sure. As I understand, people using tetrodes usually do not know the relative position of individual contacts. Should
Let's discuss this in #3 and move forward here.
Let's discuss this in #3 and move forward here. Lastly, in reviewing Thank you so much @h-mayorquin and @CodyCBakerPhD for the thorough reviews! I just have one remaining question above. I suggest we discuss the rest of the topics as independent enhancements that we address after merging this already large PR. |
@rly Thanks for pushing on this! |
create_extension_spec.py
get_class
Resolve [Bug]: Compound dtype attributes are not supported hdmf-dev/hdmf#1099 before addingProbeInsertion.insertion_position_in_mm
andProbeInsertion.insertion_angle_in_deg
pyproject.yaml
create_extension_spec.py