Brainstorming potential IQMs (image quality metrics) for DWI
oesteban opened this issue · comments
I'd like to tap on the hive mind to figure out some potential summary metrics that may reflect quality aspects of DWI data. The idea is to build from the basis being set in #1131.
At this moment, I have the following thoughts:
- Ratio of NaNs in the FA over binary brain mask (to correct for head size) - #1225
- Ratio of values outside [0, 1] over binary brain mask (discussed long ago with @yasseraleman) - #1225
- Signal drift delta and speed (over the TR)
- Outputs from dwidenoise about the noise floor
- Directional derivative along Z to find slices with global signal drop
- Differences between the b-vectors before b-matrix rotation (with head-motion realignment matrices) and the original (nominal) b-vectors.
- Neighboring dwi correlation (#1226)
- Global and slice-wise spike percentages (#1222)
- Noise in raw dMRI estimated with PIESNO
One more:
- Signal drift delta and speed (over the TR)
One or more:
- Outputs from dwidenoise about the noise floor
Just discussed with @yasseraleman:
- Directional derivative along Z to find slices with global signal drop
- (probably not for MRIQC but for dMRIPrep) Use eddymotion to filter the directional derivative and identify global drop-out slices more safely.
I know it's not an IQM, but how about a DEC map in addition to the FA and ADC images. Would help to diagnose vector files that haven't been written with correct ordering.
From #1221:
Some head-motion metrics from fMRI can be directly applied (e.g., framewise displacement), but in the case of dMRI I think it would be interesting to have a metric reporting the differences between the b-vectors before b-matrix rotation (with head-motion realignment matrices) and the original (nominal) b-vectors.
The rationale behind this metric is that some large head motions do not affect the b-vector (translations), while FD and other head motion metrics are more volume-to-volume absolute measurements.
Another +1 for this is the ease of computation (once you've estimated head motion, of course).
I know it's not an IQM, but how about a DEC map in addition to the FA and ADC images. Would help to diagnose vector files that haven't been written with correct ordering.
@araikes could you open an issue for this? - I'd be happy to add the DEC map to the visual reports
Proposed by @mattcieslak (#1131 (comment)):
- neighboring dwi correlation (see dipy/dipy#3156)
Ok.. I have a question and I think here is about a good a place as any to ask. I recognize that rodent data is not super well supported in MRIQC (rats currently are, but not mice). However, perhaps the general discussion on IQMs can help.
We collect ex-vivo diffusion data on our mice and we have some older datasets from when I first started work in rodent imaging. It's 3D diffusion acquisitions and one of the challenges which we didn't know we were running into until later was cradle motion. So, in a full dataset (n = 140-216 directions), we have a variable number of directions that end up looking like this:
I don't really want to have drop entire acquisitions nor do I really want to spend the tedium of manually (and subjectively) identifying which volumes are the "bad" ones (e.g., how bad is too bad, visually? If the ghosting appears to be only outside the brain, is that ok or is any ghosting bad... those are the things I think about). Is there a plausible quantitative IQM (maybe that z-direction derivative referenced above) that might be useful in identifying volumes with this kind of artifact so that thresholding could be done to remove volumes above/below some study-defined threshold value?
Thoughts @oesteban, @arokem, or @mattcieslak?
maybe that z-direction derivative referenced above
I don't think that would actually tell you much in this case. Maybe something like GSR along z (we have it for functional, and only along x and y for humans: https://mriqc.readthedocs.io/en/latest/iqms/bold.html#measures-for-artifacts-and-other) or some adaptation of metrics like the ones proposed in #673.
Let's close this issue as done and continue with your issue in a separate thread @araikes.
Sorry to chime in a little late here. I've seen that issues have been open for unchecked items. Maybe some of these are already available, but just in case:
- Plot of gradient vectors across shells and checks (uncorrected/corrected, correlation/coverage of surface, etc.) [3,5]
- Volume-to-volume motion (avg abs, avg rel motion (mm); avg x, y, z translation (mm); avg x, y, z rotation (deg) [1]
- Within-volume motion (avg std x, y, z translation (mm); avg std x, y, z rotation (deg)) [1]
- Displacement, translation, rotation (x,y,z) after eddy/motion correction wrt to original [5]
- Slices corrected per volume after eddy
- Total outliers (%); per-shell; outliers per PE direction [1]
- SNR per volume vs b0 [1]
- Stats on volumes of tissue maps (would only make sense in a multi-subject setting)
- FA, MD, residuals [2], etc. mean/stddevs, etc. in e.g. in tissues/across subjects
- Chi-squared goodness-of-fit analysis (?) [5]
Refs:
[1] Bastiani, Automated quality control for within and between studies diffusion MRI data using a non-parametric framework for movement and distortion correction. Nimg 2019
[2] Tournier, Diffusion Tensor Imaging and Beyond. MRM 2011
[3] Schilling, A fiber coherence index for quality control of B-table orientation in diffusion MRI scans. MRI 2019
[4] Dubos, Dmriprep: open-source diffusion MRI quality control framework with graphical user interface. SPIE 2023
[5] Cai, PreQual: An automated pipeline for integrated preprocessing and quality assurance of diffusion weighted MRI images, MRM 2021
Thanks for chiming in!
- Plot of gradient vectors across shells and checks (uncorrected/corrected, correlation/coverage of surface, etc.) [3,5]
This was on my mind, thanks for putting it into writing :)
- Volume-to-volume motion (avg abs, avg rel motion (mm); avg x, y, z translation (mm); avg x, y, z rotation (deg) [1]
We have "framewise displacement" copied from BOLD for this. Instead of motion parameters, FD calculates the motion of four corners of a cube along time. That makes the measure more generalizable across subjects, and does not rely on arbitrary implementation decisions such as where the origin of rotations is set.
Within-volume motion (avg std x, y, z translation (mm); avg std x, y, z rotation (deg)) [1]
How's this estimated? (I guess I have to read the reference, right?)
- Displacement, translation, rotation (x,y,z) after eddy/motion correction wrt to original [5]
- Slices corrected per volume after eddy
I'd be skeptical that we want to address eddy within MRIQC (which should be quick and dirty).
Total outliers (%); per-shell; outliers per PE direction
We have this, but in parts-per-million rather than %. It's called "spikes".
SNR per volume vs b0 [1]
We have this, calculated within a mask of a small portion of the CC. We will expand over other mask with time.
Stats on volumes of tissue maps (would only make sense in a multi-subject setting)
How do you segment tissues? If it is with the data, it really requires a fast method. If it is brought from an atlas, that kind of defeats the purpose.
FA, MD, residuals [2], etc. mean/stddevs, etc. in e.g. in tissues/across subjects
Happy to add. For now we only have degenerate FA voxels in ppm.
Chi-squared goodness-of-fit analysis
We do this with T1w and T2w, but it is a bit of a rabbit hole because most often you don't have enough metadata to make sure the dataset has no scanner preprocessing (e.g., stuff like SENSE).