Data processing pipeline to quantify cerebrovascular reactivity (CVR) from cerebral blood flow (CBF) or blood oxygen level-dependent (BOLD) MRI data.
This pipeline takes CBF or BOLD timeseries and computes CVR using ther linear regression technique specified in Liu et al., 2019. CBF data is inherently noisy, so there is also a routine to compute CVR with CBF using a "block" method which averages CBF volumes over the baseline and activation time periods reducing noise.
- process_cvr_M2-PCASL-CBF.sh: master script that processes end-tidal
$\text{CO}_2$ and BOLD or CBF data to compute CVR. It takes CBF or BOLD data, raw end-tidal$\text{CO}_2$ measurements, and the output directory name as inputs. - process_bold_smooth.m: extracts BOLD signal and performs spatial smoothing on BOLD images.
- align_etco2.m: called by process_cvr_M2-PCASL-CBF.sh. Temporally aligns the end-tidal
$\text{CO}_2$ to the BOLD signal. - calc_BOLDCVR.m: called by process_cvr_M2-PCASL-CBF.sh. Calculates BOLD CVR according to
$\text{BOLD} = \beta_1 * \text{EtCO}_2 + \beta_0$ where$\text{CVR} = \beta_1/\beta_0$ . - block_estimation.m: calculates CBF CVR according to
where
- Convert dicoms to nifti format
- Copy dependencies (CBF, masks, etc.) from M2-PCASL-CBF outputs to M2-PCASL-CVR outputs
- Smooth end-tidal
$\text{CO}_2$ data - Spatially smooth BOLD data; CBF data left as is
- Temporally align end-tidal
$\text{CO}_2$ data and BOLD signal - Calculate either BOLD or CBF CVR
- Run a quality control on outputs
Some scripts in this repo are not part of the data processing pipeline but assist in statistical analyses and reliability studies.
- icc_roi.py: calculates the intraclass correlation coefficient (ICC) from a region of interest (ROI) given repeated measures data. This script is important for ensuring that the data acquisition and processing pipelines are robust.
- icc_map.py: calculates the ICC in each voxel as opposed to within an ROI. This requires the normalization of CBF maps to a standard space (MNI space).
