-
Notifications
You must be signed in to change notification settings - Fork 161
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
[ENH] BEP030: Functional Near-Infrared Spectroscopy #802
Conversation
d940087
to
1ebcd72
Compare
@sappelhoff do you know why the types aren't rendering as hyperlinks in my tables? I think I copied the format from the other BEPs. Thanks |
you probably forgot to copy over the link targets, the |
Thanks so much @sappelhoff, that makes total sense now. Appreciate it. |
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
src/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
Outdated
Show resolved
Hide resolved
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.
We merged some table-rendering code that will generate the tables from the schema (see 3ce06ae). There were some inconsistencies between the schema tables and the ones rendered in text, so I took the ones rendered in text as authoritative. Please review the rendered document to verify.
Also I have some questions about the ordering constraints that are in the schema tables but were not in the text. Now they'll be rendered, so please make sure that's actually what you intended:
initial_columns: | ||
- name__channels | ||
- type__nirs_channels | ||
- source__channels | ||
- detector__channels | ||
- wavelength_nominal | ||
- units__nirs |
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.
There was nothing in the spec text that said that the order of these columns was intended to be enforced. Is the intention that these be enforced? This section could be shortened or dropped, if the order of columns isn't important.
Side question: I assume the name
column is intended to have unique values. Is that correct?
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.
Great catch @effigies
Yes, lets enforce order of these columns. I will add this to the text of the spec.
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.
@rob-luke The order requirement is now part of the table. No need to add more text, IMO.
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.
Thanks @effigies
initial_columns: | ||
- name__optodes | ||
- type__optodes | ||
- x__optodes | ||
- y__optodes | ||
- z__optodes |
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.
Again, is this order meant to be enforced? And is name
going to be unique?
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.
Yes, order should be enforced, I will add to spec text.
Name MUST be unique. I will add this to the spec text. Is there a way to make the validator enforce that name is unique?
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.
Yes, we'll implement it with #1304, so again, I don't think you need to do anything. I just wanted to make sure that my interpretation was correct.
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.
Thanks @effigies
RequiredChannels: | ||
selectors: | ||
- datatype == "nirs" | ||
- suffix == "optodes" | ||
- extension == ".tsv" | ||
checks: | ||
- associations.channels != null |
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.
I didn't see this rule in the spec. Is channels.tsv
required if optodes.tsv
is present? Or is it just that channels is required?
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.
channels.tsv
is RECOMMENDED. optodes.tsv
is REQUIRED if channels.tsv
is present.
I just clarified this in the text. Thanks for highlighting it.
- intersect(columns.x, ["n/a"]) | ||
checks: | ||
- columns.template_x != null |
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.
This is a limited check that just says that the column template_x
must exist if there are any n/a
in x
. I can't think of a way of verifying that template_x
is non-n/a
every time that x
is n/a
with our current set of operations, but I suspect this check would catch >90% of honest mistakes.
If it's important to get the full check in the validator, we can think more about what functions need to be added to our expression language.
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.
I suspect this check would catch >90% of honest mistakes.
I agree this should be sufficent.
Thanks for the code changes and review @effigies |
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.
Thanks all for your work on this.
I am +1 on merging this one to avoid merge conflicts and make this PR longer and longer. Instead I propose we resolve the two remaining issues from #802 (review) in standalone PRs after this merge but before the upcoming release.
If I get a couple more maintainer approvals I'll go ahead and hit the button.
I have made the variable name changes as requested by @tsalo #802 (review) |
As discussed in yesterday's maintainers meeting I am merging this PR now -- congrats to all who helped and especially to @rob-luke and @lpollonini! 🎉 🥳 We can now continue to look for bugs and work on the few remaining issues (mainly NIRS vs fNIRS and Gyro vs AngVel). Once the remaining issues are resolved we can initiate the release protocol and go forward with BIDS 1.8.0 🚀 |
Thanks @sappelhoff ! I am revising and formatting the manuscript for submission to Scientific Data, and will distribute a cloud copy to all co-authors/contributors for their input right after the upcoming fNIRS 2022 conference. |
WooHoo!!!!!! 🎉 Thank you to everyone who contributed. Now let's knock these last few issues off 🚀 |
awesome work, the community will thank you ;) |
Congrats everyone!!! |
Hooray!!! 🥳🥳🥳 |
Regarding these two issues:
Thanks for the merge @sappelhoff and extensive contributions from all @bids-maintenance @bids-standard/maintainers @bids-standard/steering over the last year(s) |
Starting testing things on NIRS things with bids-matlab. Should nirs be mentioned in the modalities of the schema: https://github.com/bids-standard/bids-specification/blob/master/src/schema/objects/modalities.yaml If I get a 👍🏾 I will open a separate issue and PR to fix (ideally before release) |
one thing to consider is the modality folder names (like "beh" for behavioral, "anat" for anatomical MRI data, etc.) --> if it's |
@sappelhoff I think I might be misunderstanding what we are discussing, so let me overcommunicate so we can ensure I am trying to solve the correct problem. The naming of the modality is currently Currently, the text in the specification (as rendered on ReadTheDocs) has the title We are not debating if the schema and file names should be changed from nirs. Is my above understanding of the problem statement correct? I think the current mixing of fNIRS and NIRS is ok, but I will also be fine with changing everything in the written document from fNIRS to NIRS if thats what the community prefers. I do not think we should change the schema and validator to use |
Okay, thank you for clarifying, Rob. I am fine with your outline of the problem. |
Given that these are the last open items before a release, it'd be great to wrap this up :-) |
I think GYRO it is
I am not sure if the discussion has concluded, but I am also OK with converting fNIRS to NIRS in the docs, if the mixing with the schema/validator could generate confusion. Also the SNIRF data format does not contain the word "functional", and that's one more reason to drop it from the doc in consistency with everything else. |
Agreed, I will make the changes. |
@bids-standard/maintainers
These are done. Please let me know if there is anything else, but I think we are good to wrap this up!! |
BEP030: Functional Near-Infrared Spectroscopy
This PR adds functional near-infrared spectroscopy to BIDS.
Leads: @rob-luke & @lpollonini
Progress:
NOTE: At all stages in this process we will actively advertise and invite feedback on the proposal. We invite all feedback no matter how minor or major. And we will advertise the draft website to the community for review once it is rendering correctly.
closes bids-standard/legacy-validator#438
Scope of proposal:
This specification applies to the storage of raw fNIRS data and metadata, and does not address data processing or the storage of processed data. This specification aims to deal with data from well established commercial systems, not experimental or DIY systems, although everyone is encouraged to adhere to BIDS-fNIRS to facilitate future data sharing. The specification currently only addresses continuous wave (CW) fNIRS devices, but consideration is taken not to preclude extensions to TD and FD instruments in the future upon contributions from experts in these domains.
Considerations when reviewing this BEP:
To provide feedback:
Files Changed
in the tab list at the top of this text box.Load Diff
button for thesrc/04-modality-specific-files/10-functional-near-infrared-spectroscopy.md
file