-
Notifications
You must be signed in to change notification settings - Fork 169
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] Add noRF suffix for MR excitation-free noise scans #1451
Conversation
@handwerkerd I'd love your input on the description. |
This LGTM. It seems like this needs to be done manually, but worth looping in @neurolabusc and @yarikoptic for any possible implications for dcm2niix/heudiconv. |
@tsalo can you provide exemplar DICOM validation datasets as sourcedata? It would be great to see examples from the major manufacturers (GE, Siemens, Philips). It is very hard to support a specification without concrete examples. BIDS fields are often defined by experts that have a clear vision of what is needed, but there can be unintended consequences if the implementation is left to end users that have no idea what this data looks like. |
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.
As a separate file, should there be a key(s) that denotes whether a noRF
scan is linked to another scan and, if they were collected as part of one acqusition, whether it was at the beginning or end of the scan.
Here's some data shared from when this was an issue: #1024 (comment) |
Co-authored-by: Dan Handwerker <[email protected]>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #1451 +/- ##
==========================================
- Coverage 87.92% 87.88% -0.04%
==========================================
Files 16 16
Lines 1375 1354 -21
==========================================
- Hits 1209 1190 -19
+ Misses 166 164 -2 ☔ View full report in Codecov by Sentry. |
I assumed that
I also have some DICOMs from the CMRR sequence, with five echoes and magnitude + phase reconstruction. They're available at https://upenn.box.com/s/cgoc7851m3uo4yinxqxqlfv53em0n75b. |
It is definitely possible to have one without a specific primary scan. For example, there are several studies that collect a single stand alone noise scan during a scanning session. Besides Within the existing bids framework, I guess that would mean giving the noise scan a distinct run identifier and, if it's collected as part of a Since it might mess up stimulus timing later, it would be useful, but not essential to know if the noise scans were collected at the beginning or end of a run. |
@handwerkerd in that case, maybe we should recommend using an IntendedFor field in the noRF's metadata. I think events files should be adjusted as part of the BIDSification process, rather than within the BIDS dataset, but I'd like to get @effigies' thoughts on it. |
I have little context for how these files are used, so my thoughts are more based on experiences with "associated data" files in BIDS, such as fieldmaps. I think If the idea here is to use the nearest noRF scan to aid in processing a given file, it seems like the simplest way to encode that is through the |
Also: What files might be corrected by this, in addition to BOLD? Should we add it to DWI, ASL, anat, etc? |
That sounds reasonable... maybe something like
I know it has been applied to DWI data at minimum, but I'm not sure about other modalities. It's meant as a measure of the thermal noise level, I believe, so I can imagine it being useful in other modalities. At least ones that typically involve some kind of denoising over time (e.g., ASL)... but I'm very new to this acquisition, so I could be wrong. |
I think this might be getting overly complex (partially my fault). Any MRI sequence can be collected with noRF and this can be useful to measure the noise floor for any pulse sequence. In practice, you can tell exactly what it is is linked to because all the other parameters should match. The only thing that makes this messy is that there is currently a single pulse sequence that collects some noise volumes a the end of an fMRI run so that a dataset will have multiple noise scans with each one collected as part of a specific run. The only reason we would need to know if it is from the beginning or end of a run is because BIDS requires actively cutting up the runs to separate the noRF from the normal volumes, which risks creating timing issues. As long as a script is included that documents what is done, this run order might be something that's not worth specifying in BIDS. |
I'm not sure that's true, but I guess that would reopen discussion of #1024 (comment), and this has apparently been open for a year, so I'll try to move forward and not look too much backward.
This might be best until there are are enough such scans that it is worth developing a consensus on how to encode it. I think we could still suggest calculating the two split files' |
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.
Given the discussion with @effigies, the actual content of the PR is fine with me. I just noticed a few typos.
FWIW, part of the challenge here is that BIDS is trying to define pulse sequences by application so that a single band fMRI time series is labeled bold
while the exact same sequence is labeled sbref
if it's acquired before a multiband sequence and it has a different label if it's acquired as a b0 scan during a diffusion run, while a multi-echo sequence is bold
even if the earliest echoes shouldn't be called bold-weighted. That's how we get into requiring a label in a file name for what really should be a parameter in the header. Unfortunately, this PR really is the best solution given the current overall set-up of BIDS.
Co-authored-by: Dan Handwerker <[email protected]>
Co-authored-by: Yaroslav Halchenko <[email protected]>
Co-authored-by: Yaroslav Halchenko <[email protected]>
Co-authored-by: Yaroslav Halchenko <[email protected]>
for more information, see https://pre-commit.ci
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.
All this PR will do right now is make |
I'll add the mod entity now. I see noRF files are similar to sbrefs in that they should generally rely on an implicit connection to the original file, so I can't think of any metadata they would need. |
I changed the |
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.
Should I start the 5-day clock now that there are two approvals? |
@bids-standard/raw-mri @bids-standard/raw-mri-func This is now open for voting and will be merged on Wednesday, April 24 if no one raises any major concerns. In order to vote, please add a 👍 or 👎 reaction to this comment. If you vote 👎, it would be really helpful if you could post a follow-up comment explaining why. |
Closing out the vote and merging. |
Joining the party a bit late and have more technical questions about implementing noRF scan (that I just learned about):
Thanks! |
I think I found an answer to my question https://github.com/CMRR-C2P/MB/wiki#extra-shadowy-shadow-header-parameters |
Unfortunately, the only solution I've come up with is to do the split after running heudiconv.
Sorry, I don't know. I only know of it in the context of the CMRR-MB sequence.
I hadn't considered asking CMRR to separate the series. That would be awesome. |
Closes #1024.
Changes proposed: