Skip to content
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

AcquisitionDuration definition does not match usage or paired DICOM definition, constraints are invalid #1855

Open
effigies opened this issue Jun 11, 2024 · 0 comments
Labels
bug Something isn't working discussion ongoing discussion

Comments

@effigies
Copy link
Collaborator

effigies commented Jun 11, 2024

Grepping for AcquisitionDuration on OpenNeuro we see:

for DS in ds00*; do grep AcquisitionDuration $DS/**/*bold.json; done 2>/dev/null |  awk -F/ '{ if ($1 != prev) { print; prev = $1 }}' 
ds000113/sub-01/ses-localizer/func/sub-01_ses-localizer_task-movielocalizer_run-1_bold.json:            "AcquisitionDuration": 109.91799926757812, 
ds000201/derivatives/mriqc/derivatives/sub-9001_ses-1_task-hands_bold.json:    "AcquisitionDuration": 723.000256,
ds001107/eyetracking while movie watching, plus visual localizers/sub-01/ses-localizer/func/sub-01_ses-localizer_task-movielocalizer_run-1_bold.json:            "AcquisitionDuration": 109.91799926757812, 
ds002813/task-fintest_bold.json:    "AcquisitionDuration": [],
ds003764/sub-01/ses-01/func/sub-01_ses-01_task-categorization_run-01_bold.json: "AcquisitionDuration": 362.5
ds004693/sub-01/func/sub-01_task-localizer_run-001_bold.json:  "AcquisitionDuration": 450.905,
ds004718/derivatives/sub-HK044/func/sub-HK044_task-lppHK_run-1_bold.json:    "AcquisitionDuration": 370.882,

That's only seven datasets, but that indicates to me that dcm2niix has been generating AcquisitionDuration metadata for years, and in no cases is it used in the sense that it's defined in BIDS for BOLD data:

Duration (in seconds) of volume acquisition. Corresponds to DICOM Tag 0018, 9073 Acquisition Duration. This field is mutually exclusive with "RepetitionTime".

Must be a number greater than 0.

The goal of AcquisitionDuration was to have a way to encode triggered fMRI, where the TR is non-constant but the TA (time from start to end of volume acquisition) is constant. Instead, it is used as an measure of the time the entire BOLD series took to collect, which matches the DICOM tag (0018,9073) "The time in seconds needed to run the prescribed pulse sequence. [...]".

The intent was something more along the lines of "Frame Acquisition Duration" (0018,9220) "The actual amount of time [in milliseconds] that was used to acquire data for this frame." I'm not sure if we ever actually see that.

Given that the field is not used in this way, I would suggest that we move it to a generic MRI field so that at least cross-referencing a dataset with BIDS will not be wrong.

Then it would be nice to have some way of capturing TA if SliceTiming is undefined. Perhaps VolumeAcquisitionDuration? And if we can find example data where (0018, 9220) is actually used for that case, we could even ask dcm2niix to populate the field.

@effigies effigies added bug Something isn't working discussion ongoing discussion labels Jun 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working discussion ongoing discussion
Projects
None yet
Development

No branches or pull requests

1 participant