-
Notifications
You must be signed in to change notification settings - Fork 3
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
New Ephys Behavior #586
New Ephys Behavior #586
Conversation
@CodyCBakerPhD As a follow-up to our discussion yesterday, here's the expected Ecephys schema format on the GUIDE end:
This assumes that all of the interfaces (keys in "Electrodes") have the same initial ElectrodeColumns structure. If not, you'd have to duplicate across each interface instead of using the This does have a substantial amount of duplication, which is alright since we're just using this as an intermediary—but let me know if you have any other ideas. We could use |
"inter_sample_shift" is a specific one that will only show up on SpikeGLX format There's been discussion elsewhere that we should not allow changing "offset_to_uV" or "gain_to_uV" so I'd suppress those as well (can add filter to property retrieval to exclude them on backend) I'm not 100% sure what formats will give the "shank_electrode_number" column; be sure to try lots of different types |
Also for our own sake the "data_type" of "ElectrodeColumns" probably ought to be constrained as an Allowed values would be "str", "bool", and "float{8, 16, 32, 64}". I'll have to check but I think we forbid |
(and I guess we should make those
|
And since this is a custom schema particular the GUIDE; all those JSON |
Ah right I have this loosely implemented already, but the addition of readable labels is great. Here's how you'd do it:
|
All of these descriptions will show up; we will just tie the data edited in the ElectrodeColumns table to the schema for each Electrodes table. In other words, all updates to the ElectrodeColumns table will be pushed back to this schema, so the descriptions entered in the rows of each ElectrodeColumn table will be used as hover-over descriptions for the Electrodes table. This relationship was previously initialized as:
Where afterwards we replace the Electrodes schema with our custom declaration, completing the transfer of the default value to actual metadata returned for a different property. |
I see now, thanks for explaining strategy! |
@garrettmflynn Small conflict here now |
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Garrett Michael Flynn <[email protected]> Co-authored-by: CodyCBakerPhD <[email protected]>
@garrettmflynn Small conflict here |
@garrettmflynn Any idea why 'location' is showing up as an electrode column name but not on the electrode table? Actually, I think I might know the reason... The actual column name on these tables should be So there should be an |
If curious, the NeuroConv write tools magically map this onto 'location' since that is the proper NWB column for it, but I think this is clearer to both how the extractor is modified and the meaning of the field itself |
Updated the last two points! I'm rendering mu appropriately, though the V is still in the same font (not New Times Roman). It's possible for me to use MathML here to render in the full mathematical format—though that's a bit overkill and there seems to be some weird formatting (e.g. an anomalous space). Is this sufficient or would you like to switch to MathML? |
Just the |
…utBorders/nwb-guide into ephys-metadata-v2
for more information, see https://pre-commit.ci
…utBorders/nwb-guide into ephys-metadata-v2
Finished adding the extra property support too |
P.S.: what would you think about trying the re-enable interactivity on the electrodes table on a separate branch? |
I ask because I'm curious if the smaller individual table sizes take it back to a responsive range Also because when I import the TSV after modification, the newly modified values aren't reflected in the table |
Give this a shot: #659 |
for more information, see https://pre-commit.ci
Updated the TSV import. Should be good to go! |
@garrettmflynn The TSV doesn't seem to respect strings vs other data types w.r.t. the column dtype For example, if I change a So what I would do is use the 'Data Type' of that column to decide how the dtype of the values should be should be casted after import from the tsv |
OK that did the trick. Everything feels good and works as far as I can tell at the moment. Will continue stress testing on For the next step, the strategy will be identical except working with sorting extractor objects instead of recording extractors, but same syntax applies to properties and same approach of one table per sorting interface (even simpler since there are no hierarchical tables by default) |
This PR will replace #542 to implement Ecephys metadata control.
The following changes still need to be implemented. For several, we need to decide whether to introduce them on the GUIDE backend or within NeuroConv itself:
dtype
as a required propertyschema["properties"]["Ecephys"]["properties"]["Electrodes"]["default"]
to include information about the additional channels (e.g.dtype
)update_electrode_table
from https://github.com/catalystneuro/neuroconv/tree/improve_spikeglx_metadataThere are probably a few more aspect that I'm missing—though these are the ones that stand out for now.