Calculate CBF from an ASL image using CASL or PASL.
# ASLtbx
cbf_casl1_ASLtbx( aslimg_filename , m0img_filename )
cbf_casl2_ASLtbx( aslimg_filename )
cbf_pasl_ASLtbx( aslimg_filename , m0img_filename )
# Chen 2011 paper
cbf_casl_Chen2011( aslimg_filename )
cbf_pasl_Chen2011( aslimg_filename , m0img_filename )
cbf_pcasl_Chen2011( aslimg_filename )
# Wang 2012 paper
cbf_casl_Wang2012( aslimg_filename , Xvar = NULL , Xideal = NULL , c =
NULL )
# update a give CBF estimate using PASL/CASL
compute_cbf( cbf , img , method = 0 , labelfirst = 1 )
# compute robust cbf
cbf_robust( asl_img )
Name of the 4D ASL image file.
Name of the 4D ASL image file.
Name of the 3D M0 image file.
Matrix or vector or unspecified. For an image of size 64 * 64 * 18 * 116, Xvar can be a vector of length 116 or a matrix of size 116 * (64*64*18) or unspecified to not use in the general linear model.
Matrix or vector or unspecified. For an image of size 64 * 64 * 18 * 116, Xideal can be a vector of length 116 or a matrix of size 116 * (64*64*18) or left unspecified to use the version from Wang2012 paper.
Matrix or numeric scalar or unspecified. For an image of size 64 * 64 * 18 * 116, c can be a matrix of size 64 * 64 * 18 or a scalar or left unspecified to use the version from Wang2012 paper.
Existing CBF esitmate to be updated.
Can be 0 or 1. 0 -- Chen2011 CASL; 1 -- Chen2011 PASL;
ASL image if 'method' = 0 . M0 image if 'method' = 1 .
Boolean indicating if label is first in every time-series voxel.
cbf -- 4D array of cbf values with extent of the last dimension equal to number of terms in the finite difference ; in case of 'compute_cbf', resulting array is of same dimensions as input 'cbf'. In case of 'cbf_robust', resulting array is 3D representing mean cbf.
In all of the scripts, the cbf calculate is of dimensions [ x , y , z , t ]
ASLtbx( https://cfn.upenn.edu/~zewang/ASLtbx.php ) ----------------------------------------------------------------------------
CBF calculation using 'cbf_casl1_ASLtbx'. # Following are the parameters used in the ASLtbx # First image: label # Subtraction Method: simple subtraction # Subtraction Order: control - label # Applying Mask for Output: yes # Create Mean Images: yes # Calculate qCBF: yes # Output PseudoBOLD Images: no # Save deltaM Images: no # Save qCBF Images: yes # Using a unique M0 value for all voxels: no # Output Image Format: nifti # Saving 4D Image Series: yes # Select ASL type: CASL # Magnetic Field: 3T # Label Time (sec): 2 # Post-Labeling Delay Time (sec): 0.8 # Slice Acquisition Time (msec): 45 # Use Additionally acquired M0 Image for CASL: no # Label Efficiency: 0.68 for every voxel in cbf image, cbf <- ( 6000 * 1000 * lambda * r1a * efftcbf ) / ( 2 * labeff * ( exp( -omega * r1a ) - exp( -( labeltime + omega ) * r1a ) ) ) where, lambda <- 0.9 bloodt1 <- 1664 r1a <- 1 / bloodt1 control <- control voxel value -- ASL image at t = 2 , 4 , 6 , ... even times label <- label voxel value -- ASL image at t = 1 , 3 , 5 , ... odd times efftcbf <- ( control - label ) / m0 labeff <- 0.68 delaytime <- 800 slicetime <- 45 slice <- slice the voxel belongs to ( 1 , 2 , 3 , ... , num-of-slices ) omega <- delaytime + (slice-1) * slicetime labeltime <- 2000 ----------------------------------------------------------------------------
CBF calculation using 'cbf_casl2_ASLtbx'. # Following are the parameters used in ASLtbx # First image: label # Subtraction Method: simple subtraction # Subtraction Order: control - label # Applying Mask for Output: yes # Create Mean Images: yes # Calculate qCBF: yes # Output PseudoBOLD Images: no # Save deltaM Images: no # Save qCBF Images: yes # Using a unique M0 value for all voxels: yes # Output Image Format: nifti # Saving 4D Image Series: yes # Select ASL type: CASL # Magnetic Field: 3T # Label Time (sec): 2 # Post-Labeling Delay Time (sec): 0.8 # Slice Acquisition Time (msec): 45 # Use Additionally acquired M0 Image for CASL: no # Label Efficiency: 0.68 for every voxel in the cbf image, cbf <- ( 6000 * 1000 * lambda * r1a * efftcbf ) / ( 2 * labeff * ( exp( -omega * r1a ) - exp( -( labeltime + omega ) * r1a ) ) ) where, lambda <- 0.9 bloodt1 <- 1664 r1a <- 1 / bloodt1 control <- control voxel value -- ASL image at t = 2 , 4 , 6 , ... even times label <- label voxel value -- ASL image at t = 1 , 3 , 5 , ... odd times efftcbf <- ( control - label ) / control labeff <- 0.68 slicetime <- 45 slice <- slice the voxel belongs to ( 1 , 2 , 3 , ... , num-of-slices ) omega <- delaytime + (slice-1) * slicetime labeltime <- 2000 ----------------------------------------------------------------------------
CBF calculation using cbf_pasl_ASLtbx. # Following are the parameters used in the ASLtbx # First image: label # Subtraction Method: simple subtraction # Subtraction Order: control - label # Applying Mask for Output: yes # Create Mean Images: yes # Calculate qCBF: yes # Output PseudoBOLD Images: no # Save deltaM Images: no # Save qCBF Images: yes # Using a unique M0 value for all voxels: no # Output Image Format: nifti # Saving 4D Image Series: yes # Select ASL type: PASL # Magnetic Field: 3T # Post-Labeling Delay Time (sec): 0.8 # Slice Acquisition Time (msec): 45 # TE (msec): 20 # Select M0 Image: m0.nii # Draw ROI for calculating CBF: yes # Label Efficiency: 0.95 for every voxel in the cbf image, cbf <- ( 6000 * 1000 * lambda * effperf ) / ( 2 * m0 * exp( -TI / bloodt1 ) * TI1 * labeff * qTI ) where, lambda <- 0.9 control <- control voxel value -- ASL image at t = 2 , 4 , 6 , ... , even times label <- label voxel value -- ASL image at t = 1 , 3 , 5 , ... , odd times effperf <- control - label slicetime <- 45 slice <- slice the voxel belongs to ( 1 , 2 , 3 , ... , num-of-slices ) TI1 <- 700 TI <- TI1 + delaytime + (slice-1) * slicetime bloodt1 <- 1664 labeff <- 0.95 qTI <- 0.85 ----------------------------------------------------------------------------
'Test<U+2013>Retest Reliability of Arterial Spin Labeling With Common Labeling Strategies' Yufen Chen, PhD, Danny J.J. Wang, PhD and John A. Detre, MD JOURNAL OF MAGNETIC RESONANCE IMAGING 33:940<U+2013>949 (2011) ----------------------------------------------------------------------------
CBF calculation for CASL. for every voxel in the cbf image, cbf <- ( lambda * deltaM ) / ( 2 * alpha * M0 * T1b * ( exp( -omega / T1b ) - exp( -( tau + omega ) / T1b ) ) ) where, lamda <- 0.9 control <- control voxel value -- ASL image at t = 2 , 4 , 6 , ... , even times label <- label voxel value -- ASL image at t = 1 , 3 , 5 , ... , odd times deltaM <- control - label alpha <- 0.68 M0 <- mean( control ) T1b <- 1664 omega <- 1 tau <- 2 ----------------------------------------------------------------------------
CBF calculation for pCASL. for every voxel in the cbf image, cbf <- ( lambda * deltaM ) / ( 2 * alpha * M0 * T1b * ( exp( -omega / T1b ) - exp( -( tau + omega ) / T1b ) ) ) where, lambda <- 0.9 control <- control voxel value -- ASL image at t = 2 , 4 , 6 , ... , even times label <- label voxel value -- ASL image at t = 1 , 3 , 5 , ... , odd times deltaM <- control - label alpha <- 0.85 M0 <- mean( control ) T1b <- 1664 omega <- 1 tau <- 1.5 ----------------------------------------------------------------------------
CBF calculation for PASL. for every voxel in the cbf image, cbf <- ( lambda * deltaM ) / ( 2 * alpha * M0 * TI1 * exp( -TI2 / T1b ) ) where, lambda <- 0.9 control <- control voxel value -- ASL image at t = 2 , 4 , 6 , ... , even times label <- label voxel value -- ASL image at t = 1 , 3 , 5 , ... , odd times deltaM <- control - label alpha <- 0.95 M0 <- equilibrium magnetization from M0 acquisition (input image) TI1 <- 700 TI2 <- 1700 T1b <- 1664 ----------------------------------------------------------------------------
'Improving cerebral blood flow quantification for arterial spin labeled perfusion MRI by removing residual motion artifacts and global signal fluctuations' Wang Magnetic Resonance Imaging xx (2012) xxx <U+2013> xxx ----------------------------------------------------------------------------
CBF calculation for CASL. for every voxel in the cbf image, cbf <- ( Bideal * lambda * R1a * exp( w * R1a ) ) / ( 2 * c * alpha * ( 1 - exp( -tau * R1a ) ) ) where, Xideal <- ideal label and control signals in the time series Xvar <- represents variations in Xideal in the time series (provide by user) Y <- voxel time series Bideal <- fitting coefficient for Xideal under a general linear model ( Y ~ Xideal + Xvar ) lamda <- 0.9 # stolen T1a <- 1.6 # stolen R1a <- 1 / T1a w <- 1 alpha <- 0.95 tau <- 2 c <- mean( Y ) or value provided by user ----------------------------------------------------------------------------
# NOT RUN {
cbf <- cbf_casl1( "asl.nii" , "m0.nii" )cbf <- cbf_casl2( "asl.nii" )
cbf <- cbf_pasl( "asl.nii" , "m0.nii" )
# updating existing cbf estimate using CASL; method = 0 , labefirst = 1
cbf <- compute_cbf( cbf , asl_img )
# comput robust cbf of an asl image
cbf <- cbf_robust( "asl.nii" )
# }
Run the code above in your browser using DataLab