第一篇的脚本执行完后会生成对应的更完善的长脚本。接下来我们分析脚本内容。
符号#代表对shell程序的注释,
# set list of runs
set runs = (`count -digits 2 1 3`)
这是第一个tcat模块,这是将输入数据复制到结果目录的最后一步。该3dTcat程序用于将EPI数据复制到结果目录,而从每次运行中删除前面两个TR。
# ============================ auto block: tcat ============================
# apply 3dTcat to copy input dsets to results dir,
# while removing the first 2 TRs
3dTcat -prefix $output_dir/pb00.$subj.r01.tcat FT/FT_epi_r1+orig'[2..$]'
3dTcat -prefix $output_dir/pb00.$subj.r02.tcat FT/FT_epi_r2+orig'[2..$]'
3dTcat -prefix $output_dir/pb00.$subj.r03.tcat FT/FT_epi_r3+orig'[2..$]'
# and make note of repetitions (TRs) per run
set tr_counts = ( 150 150 150 )
# -------------------------------------------------------
# enter the results directory (can begin processing data)
cd $output_dir
然后是第二个代码块,作为质量控制的重要部分,检测异常值。outliers are detected
# data check: compute outlier fraction for each volume
touch out.pre_ss_warn.txt
foreach run ( $runs )
3dToutcount -automask -fraction -polort 3 -legendre \
pb00.$subj.r$run.tcat+orig > outcount.r$run.1D
# outliers at TR 0 might suggest pre-steady state TRs
if ( `1deval -a outcount.r$run.1D"{0}" -expr "step(a-0.4)"` ) then
echo "** TR #0 outliers: possible pre-steady state TRs in run $run" \
>> out.pre_ss_warn.txt
endif
end
# catenate outlier counts into a single time series
cat outcount.r*.1D > outcount_rall.1D
# get run number and TR index for minimum outlier volume
set minindex = `3dTstat -argmin -prefix - outcount_rall.1D\'`
set ovals = ( `1d_tool.py -set_run_lengths $tr_counts \
-index_to_run_tr $minindex` )
# save run and TR indices for extraction of vr_base_min_outlier
set minoutrun = $ovals[1]
set minouttr = $ovals[2]
echo "min outlier: run $minoutrun, TR $minouttr" | tee out.min_outlier.txt
以下为对常用的afni语句的注释:
用于离群值:3dToutcount, 3dDespike
用于时间对齐或切片时间校正(切片按顺序/交错):3dTshift
EPI图像/体积配准(头部运动校正):3dvolreg
EPI to anatomy registration: align_epi_anat.py
空间归一化(标准空间转换):@auto_tlrc, auto_warp.py
Blurring/smoothing: 3dmerge, 3dBlurToFWHM, 3dBlurInMask
Masking: 3dAutomask
Temporal mean scaling: 3dTstat and 3dcalc