Learn R Programming

ANTsR (version 1.0)

CBF: CBF Computation

Description

Calculate CBF from an ASL image using CASL or PASL.

Usage

# 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 )

Arguments

aslimg

Name of the 4D ASL image file.

aslimg_filename

Name of the 4D ASL image file.

m0img_filename

Name of the 3D M0 image file.

Xvar

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.

Xideal

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.

c

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.

cbf

Existing CBF esitmate to be updated.

method

Can be 0 or 1. 0 -- Chen2011 CASL; 1 -- Chen2011 PASL;

img

ASL image if 'method' = 0 . M0 image if 'method' = 1 .

labelfirst

Boolean indicating if label is first in every time-series voxel.

Value

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.

Details

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 ----------------------------------------------------------------------------

Examples

Run this code
# 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