biac:analysis:topup_correction
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
biac:analysis:topup_correction [2019/02/21 17:10] – cmp12 | biac:analysis:topup_correction [2024/06/21 15:44] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 7: | Line 7: | ||
There will be two series of single timepoint EPI images. | There will be two series of single timepoint EPI images. | ||
- | You need to calculate readout time in seconds ( the physical time it takes to get the acquisition matrix of a single slice ) and get the polarity direction ( phase encode direction ). | + | You need to calculate readout time in seconds |
the readout time in seconds for the parameter file will be: | the readout time in seconds for the parameter file will be: | ||
- | < | + | **For singleband images :** |
+ | < | ||
+ | readout = (echospacing * (acquisitionmatrix[0] * (percentsampling/ | ||
echospacing in the BXH header is in microseconds | echospacing in the BXH header is in microseconds | ||
Line 16: | Line 19: | ||
- | the polarity | + | **For mutli-band images the readout calculation is more complex:** |
+ | < | ||
+ | readout = ( ( ceil ((1/ | ||
+ | |||
+ | AcquisitionMatrixPE = the acquisition size of the data ( acquisitionmatrix[0] ) | ||
+ | Round_factor = 4 if partial fourier ( PFF is in scanoptions ), 2 if full fourier. | ||
+ | Asset_R_factor = the reciprocal of the first value of dcm tag (0043, | ||
+ | </ | ||
+ | |||
+ | unfortunately at this point the polarity | ||
+ | |||
+ | Here is a rough guide to help with inspection. | ||
+ | {{: | ||
reverse will be " | reverse will be " | ||
Line 62: | Line 78: | ||
applytopup --imain=../ | applytopup --imain=../ | ||
applytopup --imain=../ | applytopup --imain=../ | ||
+ | </ | ||
+ | |||
+ | If you have the scenario where the functional data was acquired with acceleration, | ||
+ | |||
+ | < | ||
+ | echospacing in the BXH header is in microseconds | ||
</ | </ | ||
Line 82: | Line 104: | ||
--------------- | --------------- | ||
- | ====== DWI Correction with B0s using TOPUP ====== | + | ====== DWI Correction with RPE B0s using TOPUP ====== |
- | Correcting DWI images using B0s is almost the same as the above. | + | Correcting DWI images using reverse phase encoded |
==== Create your acq_params.txt file === | ==== Create your acq_params.txt file === | ||
- | the readout time in seconds for the parameter file will be: | + | calculate your readout time from above |
- | < | + | |
- | + | ||
- | echospacing in BXH header is in microseconds | + | |
- | </ | + | |
the regular B0s will get the " | the regular B0s will get the " | ||
Line 173: | Line 191: | ||
rm tmp.bxh | rm tmp.bxh | ||
</ | </ | ||
+ | |||
+ | |||
+ | --------------- | ||
+ | |||
+ | ====== DWI Correction with MRTRIX3 and RPE Data ====== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | If you are running dwidenoise, do it BEFORE dwipreproc. | ||
+ | |||
+ | ==== Calculate your readout time as mentioned above ==== | ||
+ | |||
+ | ==== Prepare your input datasets ==== | ||
+ | |||
+ | there are 2 scenarios that typically apply here | ||
+ | 1) DWI and a short acquisition with RPE B0s | ||
+ | 2) 2 entire acquisitions with the same gradient table and reverse phase encoding | ||
+ | |||
+ | In both scenarios it is important to create your data with normal phase encoding direction first, followed by reversed. | ||
+ | |||
+ | ===== Scenario 1 ===== | ||
+ | |||
+ | ==== Prepare your input datasets ==== | ||
+ | |||
+ | Specify that a set of images (typically b=0 volumes) will be provided for use in inhomogeneity field estimation only | ||
+ | |||
+ | For scenario 1, create your blip up / blip down B0 data the same way as above. | ||
+ | < | ||
+ | bxhselect --timeselect 0 bia6_00197_012.bxh bu | ||
+ | bxhselect --timeselect 0 bia6_00197_013.bxh bd | ||
+ | fslmerge -t bud bu.nii.gz bd.nii.gz | ||
+ | rm bu.* bd.* | ||
+ | </ | ||
+ | |||
+ | Prepare your dwi series for input to mrtrix3. | ||
+ | |||
+ | < | ||
+ | #pull the gradient table from BXH in FSL format | ||
+ | extractdiffdirs --fsl bia6_00414_013.bxh bvecs bvals | ||
+ | |||
+ | #convert nii.gz data into mif while inserting the gradients | ||
+ | mrconvert -fslgrad bvecs bvals bia6_00414_013.nii.gz dwi.mif | ||
+ | |||
+ | #export the table back out in their format | ||
+ | mrinfo dwi.mif -export_grad_mrtrix grads.b | ||
+ | |||
+ | #put THOSE back into the mif header | ||
+ | mrconvert -grad grads.b dwi.mif dwi.mif -force | ||
+ | |||
+ | </ | ||
+ | |||
+ | The last step seems redundant, but there is an issue with how mrtrix3 tools are handling the multi-shell GE data produced on our scanners. | ||
+ | |||
+ | ==== Run dwipreproc -rpe_pair ==== | ||
+ | |||
+ | Run [[https:// | ||
+ | |||
+ | < | ||
+ | dwifslpreproc dwi.mif dwi_corr.mif -rpe_pair -se_epi bud.nii.gz -pe_dir AP -readout_time 0.10656 | ||
+ | |||
+ | -rpe_pair specifies you're providing a pair of B0s ( regular, reversed ) | ||
+ | -se_epi is you bud image | ||
+ | -pe_dir is your dwi's phase encode direction | ||
+ | -readout_time is from calculation above | ||
+ | </ | ||
+ | |||
+ | dwipreproc will run topup, eddy and apply topup. | ||
+ | |||
+ | You can generate a BXH header for a mif file with: | ||
+ | < | ||
+ | mif2bxh dwi_corr.mif dwi_corr.bxh | ||
+ | </ | ||
+ | |||
+ | ===== Scenario 2 ===== | ||
+ | |||
+ | You have an entire acquisition with the same gradient table as your DWI sequence, but with reverse phase encoding. | ||
+ | |||
+ | Calculate the readout time in the same way as above | ||
+ | |||
+ | ==== Prepare your input datasets ==== | ||
+ | |||
+ | This time you'll concatenate the 2 DWI acquisitions. | ||
+ | |||
+ | < | ||
+ | #concat the 2 series ( regular, reversed ) | ||
+ | bxh_concat bia6_00260_00 | ||
+ | 7_LAS.bxh bia6_00260_008_LAS.bxh both | ||
+ | |||
+ | #extract the gradients | ||
+ | extractdiffdirs --fsl both.bxh bvecs bvals | ||
+ | |||
+ | #convert to mif | ||
+ | mrconvert -fslgrad bvecs bvals both.nii.gz dwi.mif | ||
+ | |||
+ | #re-extract table | ||
+ | mrinfo dwi.mif -export_grad_mrtrix grads.b | ||
+ | |||
+ | #put corrected table back in | ||
+ | mrconvert -grad grads.b dwi.mif dwi.mif -force | ||
+ | |||
+ | #remove the temporary files ( bvecs, bvals, both.* ) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Run dwipreproc -rpe_all ==== | ||
+ | |||
+ | Run dwipreproc with the " | ||
+ | |||
+ | < | ||
+ | dwipreproc dwi.mif dwi_corr.mif -rpe_all -pe_dir AP -readout_time 0.10656 -debug | ||
+ | |||
+ | - rpe_all signals that you've replicated ALL the directions with a rpe acquisition | ||
+ | - pe_dir is the phase encode direction of your regular acquisition | ||
+ | - readout_time from above | ||
+ | </ | ||
+ | |||
+ | |||
+ | {{ : | ||
biac/analysis/topup_correction.txt · Last modified: 2024/06/21 15:44 by 127.0.0.1