AUTOMATED QC OF DWI DATA
In 2019, the Kimel lab formed a DWI working group. One of its tasks was to create a method of automatically performing QC on large DWI datasets, as a complement to visual review. Ultimately, we found very high agreement between trained human raters and 6 quality metrics derived from eddy
and MRTrix
. The method was tested on 3 large datasets (SPINS, POND, and a subset of HCP) and compared to ratings of 5 independent human raters.
The metrics, and their suggested thresholds, were as follows:
Metric | Absolute motion | Relative motion | Percent outliers | Average SNR | Average CNR | Residual noise |
---|---|---|---|---|---|---|
Suggested threshold | >= 2 (mm) | >= .5 (mm) | >= 2 (%) | <= 20 | <= 1.5 | >= 6 |
Repo Contents
This repo contains code to format and review the 6 requiste metrics, produce a score for each participant that can be used as a quality regressor in future analyses, and indicate which participants should likely be removed from further analyses. Specifically:
code
01_qualityScore.Rmd
. This script performs two tasks. First, it examines the correlations between the 6 QC metrics. The intent is to ensure that, on a global level, there are no unexpected associations between quality metrics. Second, it performs PCA. The intent to to generate a 'quality regressor' that can be used in subsequent analyses, assuming the first one or two PCs capture a large proportion of variance.02_excludeParticipants.Rmd
. This script visualizes participant scores on the 6 QC metrics, and summarizes which participants should be excluded on the basis of the groups' established thresholds.
/data
-
/input
eddyMetrics.tsv
. This .tsv is generated by lab pipelines for data found in the/archive
. Specifically, it can be found inbids/pipelines/dwiprep/
.mrtrixResidualNoise.txt
. This output should be generated by the user (it does not, at present, exist in the/archive
. A script to do so can be found at here (currently private).
-
/output
.df_dwiQC_PC.csv
is generated by01_qualityScore.Rmd
. It is a dataframe containing the 6 variables of interest, as well as the first PC score.excludeParticipants.txt
is generated by02_excludeParticipants.Rmd
. It contains the IDs of those participants exceeding exclusion thresholds.
Examples.
When knitted in RStudio, 01_qualityScore.Rmd
should generate a report similar to the one here, and 02_excludeParticipants.Rmd
as here. For more context, notes from the DWI working group meetings here