BouchardLab / nsds_lab_to_nwb

Python package to convert NSDS Lab data to NWB files.
https://nsds-lab-to-nwb.readthedocs.io/en/latest/
0 stars 4 forks source link

Bad recording #71

Closed jthermiz closed 3 years ago

jthermiz commented 3 years ago

How should we handle bad blocks like RVG16_B09? Should we convert them as is or force the user to indicate a stimulus which is what triggered the error. Or should we not convert it?

I think nsds_nwb should still be able to convert 'bad' recording if the user wants to. I think either forcing the user to indicate a stimulus or having a catch all stimulus when it's not provided (such as 'Unknown') are good options.

jthermiz commented 3 years ago

There's actually a field in the experiment notes called 'Clean recording?' that's imported in the metadata. Perhaps, by default nsds_nwb processes only blocks where Clean recording = True. And if the user really wants to convert a bad block, then can pass an keyword arguments in generate_nwb to force the conversion?

jihyunbak commented 3 years ago

Hi @jthermiz , just trying to understand --- what's the nature of bad recording, for example in the case of RVG16_B09?

We can easily add a switch to check the clean_recording metadata and raise an error or warning if its value is False. But if might actually be useful to convert all available blocks to NWB systematically (if the bad recording is not technically prohibiting this) and simply choose to not analyze later...

jihyunbak commented 3 years ago

PR #85 adds a feature that stops processing when the stimulus information is missing - this applies to RVG16_B09. The builder doesn't use the clean_recording switch at this point.

jihyunbak commented 3 years ago

@jthermiz How should I interpret clean_block (bool) and stim_response (str) flags in the metadata?

Should we always skip a block when either clean_block is false or stim_response says "bad"? Basically need a logical operation of the two flags to determine when we should quit nwb_build.

jthermiz commented 3 years ago

@jihyunbak Sorry for the delay in responding to this. clean_block is whether the recording could be useful. If it doesn't look usable by the experimentalist they will note False for this field. Examples of clean_block=False are when the measurements are overwhelmed with artifact, the stimulus was not executed, a failure in recording equipment, etc...

It would be convenient if the there was a switch that when clean_block=False, nwb conversion is not completed. Otherwise the experimentalist can change clean_block=True if they want to convert it.

When user doesn't specify a stimulus, then perhaps there should be warning message to the user about this unexpected behavior to force the end user to provide one. If no stimulus was given, then there is a baseline option they can select.

jihyunbak commented 3 years ago

@jthermiz Thanks, this makes things clear to me!