signal drift correction check

181 views
Skip to first unread message

Lenore Tahara-Eckl

unread,
Aug 13, 2020, 4:55:15 PM8/13/20
to ExploreDTI
Dear experts, 

I ran the signal drift correction on some phantom data using ExploreDTI.  Specifically, I first converted the the .bval and .bvec files into a matrix and then went to 'Plugins->Correct for DWI signal drift' to select the files. Our phantom data consisted of a dwi sequence, followed by a fMRI resting sequence, and then another dwi sequence.     

Our data contains 105 volumes, with 6 B0s interleaved. There are 50 b1000 and 50 b2000. Data was collected on a 3 Tesla Siemens MAGNETOM Skyra MRI-scanner. 

Attached are the plots comparing with and without the drift correction. The first dwi set has a signal decrease of 0.78% and the second dwi set has a signal decrease of 1%. Based upon this, my question is whether we should perform this correction for our data? I am unsure whether there is a specific criteria / threshold that must be achieved to perform this correction, or that if it simply exists, then it should be performed.  

Thank you, 
-Lenore
Diff1_sdc.png
Diff2_sdc.png

Viljami Sairanen

unread,
Aug 14, 2020, 3:02:49 AM8/14/20
to ExploreDTI
Hi Lenore,

I was struggling with the same problem some time ago and took a statistician to solve it. I made a script to replace the default 'E_DTI_signal_drift_correction.p' file at /ExploreDTI/Source/Misc directory. To use this, take a backup or rename of the original and place the attached script in the Misc directory. 

After replacement, you should see this message on Matlab commandline when you run  Signal Drift Correction  "Augmented Signal Drift Correction is used". 

The output is augmented with some statistics for the goodness of the fit and 95% prediction intervals for the fitted polynomials. You can compare the 95% prediction intervals between the uncorrected and corrected fits to make the decision whether you should use the correction or not. In the attached example, 1_drift_happens.png you see that the 95% prediction intervals do not overlap all the way so there is evidence for a statistically significant difference between the fits and you should correct for it. If the 95% prediction intervals overlap, then there is no evidence for difference and statistics do not support for correcting the drift.

Disclaimer: this is just a statistical approach. And even worse, it is not official plugin for ExploreDTI and certainly not published nor peer-reviewed. It can guide you but I have not evaluated it with any Monte-Carlo simulations to actually show if a statistical difference between the fits is be required to cause a meaningful difference for the outcome of modeling the diffusion. This would likely depend on your acquisition scheme as well and is not trivial to proof. Furthermore, if you have subject motion in the b0-images, you need to exclude those volumes before you do the Signal Drift Correction.

Happy to hear your (and others in ExploreDTI community) thoughts on this.

Ciao,
 Viljami 
E_DTI_signal_drift_correction.p
1_drift_happens.png

Lenore Tahara-Eckl

unread,
Aug 14, 2020, 11:19:47 PM8/14/20
to ExploreDTI
Hi  Viljami, 

Thank you so much for the information and your script - to me, your method makes sense to qualify whether or not to apply the correction. Unfortunately, I cannot test this out at the moment, since ExploreDTI was installed by someone else on a shared vm, and its content folder only contains the main executable file for the gui and the readme.txt. One question I did have regarding the sample output graph is that there are two, 95% prediction intervals (dashed lines) for the uncorrected and corrected intervals - which ones should I be looking at to evaluate the overlap? 

Also, I am sure that you might have read this paper, but one indication from it was that a 5% signal change in a 15-minute long scan would affect the diffusion results (e.g. diffusion metrics). 

Thank you, 
-Lenore
The Importance of Correcting for Signal Drift in Diffusion MRI.pdf

Viljami Sairanen

unread,
Aug 19, 2020, 4:45:15 AM8/19/20
to ExploreDTI
The 95% prediction intervals tell the following: if a new measurement is made, it will fall between the prediction interval with a 95% chance. Hence, if the corrected measurements are not within the prediction interval of the original measurement fitting, there is evidence for a statistical difference between the before and after correction measurements and correction might be justified. Moreover, when the another line is fitted to the corrected measurements, we get another prediction intervals that tell where a new measurement would likely end up after being corrected for the drift. In a sense, it is just another layer of confirmation for the correction, because if the two prediction intervals do not overlap, the difference between data points can be considered large. 

So in short: look for the red (not corrected) dashed lines, if the blue (corrected) dots are outside of it, then there is evidence for the need of correction. If you want further evidence, check if blue dashed lines go outside the red dashed lines.

Yes, the paper is familiar and indeed 5% drift is definitely that large that it should be taken into account (and preferably told to the technician who is in charge of the MRI device's condition, because this could mean hardware malfunction).

Unfortunately, I haven't made a standalone version for this script yet :/

-Viljami


Tyler Fettrow

unread,
May 3, 2021, 6:14:00 PM5/3/21
to ExploreDTI
Hi there,

I am looking to run  E_DTI_signal_drift_correction as a function, similar to how many of the scripts are run here: https://github.com/stijnimaging/ExploreDTI_scripts. How can I find the expected arguments for this compiled script?

Thanks for any advice

Tyler 

Viljami Sairanen

unread,
May 5, 2021, 9:32:20 AM5/5/21
to ExploreDTI
I don't think you can find such info but I can tell it to you:

E_DTI_signal_drift_correction.p has only one input argument of a struct that contains the needed information. You should be able to generate the struct with following example:

par.f_in_nii = 'path_to_dwi_file';
par.f_in_txt = 'path_to_bmatrix_txt_file';
par.f_out_nii = 'output_dwi_name';
par.f_out_txt = 'output_bmatrix_name';
par.method = 1; % 1 = linear, 2 = quadratic, 3 = cubic
par.bvalC = 0; % What b-value is used for the correction
par.bv_thresh = 25; % b-value margin
par.masking.do_it = 1; % 0 = no mask, 1 = use mask
par.masking.p1 = 5; % morph size [1,3,..,7]
par.masking.p2 = 1; % mask tuning [0.5 to 1.5]
par.show_summ_plot = 1;

and then just call E_DTI_signal_drift_correction(par).

-V

samane pirmoradian

unread,
Oct 17, 2021, 2:07:56 AM10/17/21
to ExploreDTI
Hi
what does this mean when the adjacency matrix of the structural connections in terms of the number of fiber , i.e. , area one with itself and the fiber content itself ? is each district connected to itself ?for example :1 and 1 has 35 fiber.
I dont aundestand
best regard
thanks.

samane pirmoradian

unread,
Oct 17, 2021, 2:08:35 AM10/17/21
to ExploreDTI
Hi
what does this mean when the adjacency matrix of the structural connections in terms of the number of fiber , i.e. , area one with itself and the fiber content itself ? is each district connected to itself ?for example :1 and 1 has 35 fiber.
I dont aundestand
best regard
thanks.

Reply all
Reply to author
Forward
0 new messages