buzsakilab / buzcode

Code for internal lab sharing - polishing has started but is by no means complete
http://www.buzsakilab.com/
GNU General Public License v3.0
119 stars 129 forks source link

Channels Tags in sessionInfo #183

Open dlevenstein opened 6 years ago

dlevenstein commented 6 years ago

add option to sessionInfoGUI to add arbitrary "tags" for channels.
For example: ThetaChannel, CTXRepresentativeChannel, etc etc.

Can even have drop-down menu for commonly used tags.

DavidTingley commented 6 years ago

:+1: I would love to formalize this. I 'tag' many different things (ripple chan, ref chan, etc, etc) just adding sessionInfo.* fields but that isn't the long term solution

brendonw1 commented 6 years ago

I’m not sure how to think about session info. Are we turning it into a legitimate metadata structure? Right now it’s a limited metadata structure - is the idea to really change that? Is if the right place to put this stuff. It doesn’t quite strike me as right but maybe I just need to reconceptualize sessioninfo.

dlevenstein commented 6 years ago

Maybe think of it as metadata for analysis.

On May 26, 2018, at 6:16 AM, Brendon Watson notifications@github.com wrote:

I’m not sure how to think about session info. Are we turning it into a legitimate metadata structure? Right now it’s a limited metadata structure - is the idea to really change that? Is if the right place to put this stuff. It doesn’t quite strike me as right but maybe I just need to reconceptualize sessioninfo.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub, or mute the thread.

brendonw1 commented 6 years ago

I’m basically fine w that. But I will say it’s like a weird slippery slope in my mind. Like all metadata is useful for analysis - depending on the depth of the analysis. So where to draw the line will be unclear. But it’s prob fine for now. I think what it really is is that I want a more complete metadata solution. I hate not gathering the data with a fully understood metadata framework ahead of time. On Sat, May 26, 2018 at 10:29 AM Dan Levenstein notifications@github.com wrote:

Maybe think of it as metadata for analysis.

On May 26, 2018, at 6:16 AM, Brendon Watson notifications@github.com wrote:

I’m not sure how to think about session info. Are we turning it into a legitimate metadata structure? Right now it’s a limited metadata structure

  • is the idea to really change that? Is if the right place to put this stuff. It doesn’t quite strike me as right but maybe I just need to reconceptualize sessioninfo.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub, or mute the thread.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/buzsakilab/buzcode/issues/183#issuecomment-392265065, or mute the thread https://github.com/notifications/unsubscribe-auth/ADXrTeEVnKzwjrMuqjQ1kvndkGAvx_0hks5t2Wa4gaJpZM4TeToV .

brendonw1 commented 6 years ago

For, say ripple channel, I'm thinking of making a field in a field inside sessionInfo, like this: sessionInfo.LFPAnalysisChannels.RippleChannel. OK?

dlevenstein commented 6 years ago

How about sessionInfo.ChannelTags.RippleChannel? That way its more general than LFPAnalysis.

I can add an easy way to add/edit ChannelTags in the sessionInfoGUI

DavidTingley commented 6 years ago

Although, wouldn't we want this metadata stored in the ripples.event file? as it pertains to channels used for that.

I'm wondering how we can keep these things synchronized..

dlevenstein commented 6 years ago

Yes definitely. Channels used for detection should always be stored in the relevant events.mat file or states.mat file or whatever it may be.

Especially since you might have (for some unknown but maybe interesting physiological reason) two different ripple events on two different channels. (Maybe from two different regions? ;))

brendonw1 commented 6 years ago

I’d like to have them somewhere BEFORE ripple detection so ripple detection can look for it somewhere and use it. SessionInfo isn’t my favorite but it’s ok.

Dan what about “TaggedChannels”? On Sun, Jun 3, 2018 at 12:34 PM Dan Levenstein notifications@github.com wrote:

Yes definitely. Channels used for detection should always we stored in the events.mat file.

Especially since you might have (for some unknown but maybe interesting physiological reason) two different ripple events on two different channels. (Maybe from two different regions? ;))

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/buzsakilab/buzcode/issues/183#issuecomment-394174199, or mute the thread https://github.com/notifications/unsubscribe-auth/ADXrTW3MLSOgit0Oe1BKbu6OfF55NJoQks5t5BAMgaJpZM4TeToV .

DavidTingley commented 6 years ago

@brendonw1, I agree having detectors inherit from sessionInfo is a great idea. We're getting closer and closer to OOP buzcode...

brendonw1 commented 6 years ago

@DavidTingley Good :) @dlevenstein & @DavidTingley ... "ManuallySelectedChannels"?

dlevenstein commented 6 years ago

I'd prefer it be more general. A box for any channel tags you may have.

for example, badchannels should move to sessionInfo.ChannelTags.badchannels

brendonw1 commented 6 years ago

I agree with that idea. It’s just that the term “channel tags” seems off to me. Tags seems like the part that’s kind of informal and a term of the time but not fully clear in meaning. I keep trying to think of ideas beyond what I said but I can’t now. Any other ideas that seem right to you? On Mon, Jun 4, 2018 at 11:55 AM Dan Levenstein notifications@github.com wrote:

I'd prefer it be more general. A box for any channel tags you may have.

for example, badchannels should move to sessionInfo.ChannelTags.badchannels

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/buzsakilab/buzcode/issues/183#issuecomment-394406130, or mute the thread https://github.com/notifications/unsubscribe-auth/ADXrTf4Ekq28Rt3sXJpdD8EzAPCxTNkYks5t5VhhgaJpZM4TeToV .

dlevenstein commented 6 years ago

I dunno, I thought the term tag was pretty standard/general - this is where you store any tags (labels) you want to associate with specific channels. Maybe that didn't get across or isn't how you're thinking about it? Seems like a good general feature to have. I don't really have another term for the same thing. ChannelLabels sounds clunky to me but could work I guess.

https://en.wikipedia.org/wiki/Tag_(metadata)

brendonw1 commented 6 years ago

I worry that it seems like a temporary term. But that might be because I’m old. I also think “coding” seems that way too :)

Basically I’m fine with it if others are fine ... @davidtingley - does “tag” seem like a solid term to use? If you’re fine I’m fine.

brendonw1 commented 6 years ago

The resounding silence on this issue convinces me that no one else cares and we should just do "channel tags"

dlevenstein commented 6 years ago

🦗🦗🦗

On Jun 6, 2018, at 8:35 PM, Brendon Watson notifications@github.com wrote:

The resounding silence on this issue convinces me that no one else cares and we should just do "channel tags"

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

brendonw1 commented 6 years ago

???

dlevenstein commented 6 years ago

^^^crickets

On Jun 6, 2018, at 8:41 PM, Brendon Watson notifications@github.com wrote:

???

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

brendonw1 commented 6 years ago

Ah ;-P So how do we move forward?

dlevenstein commented 6 years ago

Oh, the crickets didn't look very crickety on here.... I guess github doesn't have good emoji integration.

Here's a possible moving forward plan of attack: 1) Update SessioninfoGUI to have a ChannelTags section 2) make a dropdown list of common channel tags, and an option for the user to add their own. users will select or enter a channel tag (i.e. RippleChannel) and list the channels they want associated with that tag. Will be saved as sessionInfo.ChannelTags.RippleChannel

3) move badchannels to a common ChannelTag 4) and to avoid issues with backwards compatibility of badchannels, make bz_getSessionInfo move sessionInfo.badchannels to sessionInfo.ChannelTags.badchannels if it finds them there when loading a sessionInfo file 5) Update existing functions that reference sesionInfo.badchannels to reference sessionInfo.ChannelTags.badchannels

brendonw1 commented 6 years ago

Sounds perfect!

On Fri, Jun 8, 2018 at 11:29 AM Dan Levenstein notifications@github.com wrote:

Oh, the crickets didn't look very crickety on here.... I guess github doesn't have good emoji integration.

Here's a possible moving forward plan of attack:

1.

Update SessioninfoGUI to have a ChannelTags section 2.

make a dropdown list of common channel tags, and an option for the user to add their own. users will select or enter a channel tag (i.e. RippleChannel) and list the channels they want associated with that tag. Will be saved as sessionInfo.ChannelTags.RippleChannel 3.

move badchannels to a common ChannelTag 4.

and to avoid issues with backwards compatibility of badchannels, make bz_getSessionInfo move sessionInfo.badchannels to sessionInfo.ChannelTags.badchannels if it finds them there when loading a sessionInfo file 5.

Update existing functions that reference sesionInfo.badchannels to reference sessionInfo.ChannelTags.badchannels

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/buzsakilab/buzcode/issues/183#issuecomment-395797644, or mute the thread https://github.com/notifications/unsubscribe-auth/ADXrTaLBwojS5WXQx6hfXx5yGIJyR3koks5t6ph2gaJpZM4TeToV .

dlevenstein commented 6 years ago

Step 1-3 is on my short time scale to-do list. Let me know if you dive into it first.

On Jun 8, 2018, at 11:36 AM, Brendon Watson notifications@github.com wrote:

Sounds perfect!

On Fri, Jun 8, 2018 at 11:29 AM Dan Levenstein notifications@github.com wrote:

Oh, the crickets didn't look very crickety on here.... I guess github doesn't have good emoji integration.

Here's a possible moving forward plan of attack:

1.

Update SessioninfoGUI to have a ChannelTags section 2.

make a dropdown list of common channel tags, and an option for the user to add their own. users will select or enter a channel tag (i.e. RippleChannel) and list the channels they want associated with that tag. Will be saved as sessionInfo.ChannelTags.RippleChannel 3.

move badchannels to a common ChannelTag 4.

and to avoid issues with backwards compatibility of badchannels, make bz_getSessionInfo move sessionInfo.badchannels to sessionInfo.ChannelTags.badchannels if it finds them there when loading a sessionInfo file 5.

Update existing functions that reference sesionInfo.badchannels to reference sessionInfo.ChannelTags.badchannels

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/buzsakilab/buzcode/issues/183#issuecomment-395797644, or mute the thread https://github.com/notifications/unsubscribe-auth/ADXrTaLBwojS5WXQx6hfXx5yGIJyR3koks5t6ph2gaJpZM4TeToV .

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/buzsakilab/buzcode/issues/183#issuecomment-395799708, or mute the thread https://github.com/notifications/unsubscribe-auth/AG7dmFtH9cgnKnZrc1e-F-25crMHW0f0ks5t6pn5gaJpZM4TeToV.

dlevenstein commented 5 years ago

Update on this: I've added the function bz_TagChannel(basePath,channums,tag) (see #294)

The function is an easy way for the user to add "tags" to specific channels in the sessionInfo. It saves any tags in: sessionInfo.channelTags.(tagName) For example, it's now being used in PickSWTHChannel to save sessionInfo.channelTags.NREMDetectionChan and sessionInfo.channelTags.ThetaChan

I haven't yet integrated into SessionInfoGUI (steps 1-2 above), but would like to do so, and move badchannels and all references to badchannels in the repo over to this form. (i.e. implement 3-5 above). Does anyone have a problem with this, or thoughts to improve documentation/implementation?