123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605 |
- #!/bin/tcsh -xef
- echo "auto-generated by afni_proc.py, Mon Feb 25 16:50:45 2019"
- echo "(version 6.32, February 22, 2019)"
- echo "execution started: `date`"
- # to execute via tcsh:
- # tcsh -xef proc.FT.rest.11 |& tee output.proc.FT.rest.11
- # to execute via bash:
- # tcsh -xef proc.FT.rest.11 2>&1 | tee output.proc.FT.rest.11
- # =========================== auto block: setup ============================
- # script setup
- # take note of the AFNI version
- afni -ver
- # check that the current AFNI version is recent enough
- afni_history -check_date 17 Jan 2019
- if ( $status ) then
- echo "** this script requires newer AFNI binaries (than 17 Jan 2019)"
- echo " (consider: @update.afni.binaries -defaults)"
- exit
- endif
- # the user may specify a single subject to run with
- if ( $#argv > 0 ) then
- set subj = $argv[1]
- else
- set subj = FT.rest.11
- endif
- # assign output directory name
- set output_dir = $subj.results
- # verify that the results directory does not yet exist
- if ( -d $output_dir ) then
- echo output dir "$subj.results" already exists
- exit
- endif
- # set list of runs
- set runs = (`count -digits 2 1 3`)
- # create results and stimuli directories
- mkdir $output_dir
- mkdir $output_dir/stimuli
- # copy anatomy to results dir
- 3dcopy FT/FT_anat+orig $output_dir/FT_anat
- # copy anatomical follower datasets into the results dir
- 3dcopy FT/SUMA/aparc.a2009s+aseg.nii $output_dir/copy_af_aaseg
- 3dcopy FT/SUMA/aparc.a2009s+aseg.nii $output_dir/copy_af_aeseg
- 3dcopy FT/SUMA/FT_vent.nii $output_dir/copy_af_FSvent
- 3dcopy FT/SUMA/FT_white.nii $output_dir/copy_af_FSWe
- # ============================ 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
- # ========================== auto block: outcount ==========================
- # 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
- # censor outlier TRs per run, ignoring the first 0 TRs
- # - censor when more than 0.1 of automask voxels are outliers
- # - step() defines which TRs to remove via censoring
- 1deval -a outcount.r$run.1D -expr "1-step(a-0.1)" > rm.out.cen.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
- # catenate outlier censor files into a single time series
- cat rm.out.cen.r*.1D > outcount_${subj}_censor.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
- # ================================ despike =================================
- # apply 3dDespike to each run
- foreach run ( $runs )
- 3dDespike -NEW -nomask -prefix pb01.$subj.r$run.despike \
- pb00.$subj.r$run.tcat+orig
- end
- # ================================= tshift =================================
- # time shift data so all slice timing is the same
- foreach run ( $runs )
- 3dTshift -tzero 0 -quintic -prefix pb02.$subj.r$run.tshift \
- pb01.$subj.r$run.despike+orig
- end
- # --------------------------------
- # extract volreg registration base
- 3dbucket -prefix vr_base_min_outlier \
- pb02.$subj.r$minoutrun.tshift+orig"[$minouttr]"
- # ================================= align ==================================
- # for e2a: compute anat alignment transformation to EPI registration base
- # (new anat will be intermediate, stripped, FT_anat_ns+orig)
- align_epi_anat.py -anat2epi -anat FT_anat+orig \
- -save_skullstrip -suffix _al_junk \
- -epi vr_base_min_outlier+orig -epi_base 0 \
- -epi_strip 3dAutomask \
- -volreg off -tshift off
- # ================================== tlrc ==================================
- # warp anatomy to standard space (non-linear warp)
- auto_warp.py -base MNI_caez_N27+tlrc -input FT_anat_ns+orig \
- -skull_strip_input no
- # move results up out of the awpy directory
- # - NL-warped anat, affine warp, NL warp
- # - use typical standard space name for anat
- # - wildcard is a cheap way to go after any .gz
- # - be sure NIFTI sform_code=2 means standard space
- 3dbucket -DAFNI_NIFTI_VIEW=tlrc \
- -prefix FT_anat_ns awpy/FT_anat_ns.aw.nii*
- mv awpy/anat.un.aff.Xat.1D .
- mv awpy/anat.un.aff.qw_WARP.nii .
- # ================================= volreg =================================
- # align each dset to base volume, to anat, warp to tlrc space
- # verify that we have a +tlrc warp dataset
- if ( ! -f FT_anat_ns+tlrc.HEAD ) then
- echo "** missing +tlrc warp dataset: FT_anat_ns+tlrc.HEAD"
- exit
- endif
- # register and warp
- foreach run ( $runs )
- # register each volume to the base image
- 3dvolreg -verbose -zpad 1 -base vr_base_min_outlier+orig \
- -1Dfile dfile.r$run.1D -prefix rm.epi.volreg.r$run \
- -cubic \
- -1Dmatrix_save mat.r$run.vr.aff12.1D \
- pb02.$subj.r$run.tshift+orig
- # create an all-1 dataset to mask the extents of the warp
- 3dcalc -overwrite -a pb02.$subj.r$run.tshift+orig -expr 1 \
- -prefix rm.epi.all1
- # catenate volreg/epi2anat/tlrc xforms
- cat_matvec -ONELINE \
- anat.un.aff.Xat.1D \
- FT_anat_al_junk_mat.aff12.1D -I \
- mat.r$run.vr.aff12.1D > mat.r$run.warp.aff12.1D
- # apply catenated xform: volreg/epi2anat/tlrc/NLtlrc
- # then apply non-linear standard-space warp
- 3dNwarpApply -master FT_anat_ns+tlrc -dxyz 2.5 \
- -source pb02.$subj.r$run.tshift+orig \
- -nwarp "anat.un.aff.qw_WARP.nii mat.r$run.warp.aff12.1D" \
- -prefix rm.epi.nomask.r$run
- # warp the all-1 dataset for extents masking
- 3dNwarpApply -master FT_anat_ns+tlrc -dxyz 2.5 \
- -source rm.epi.all1+orig \
- -nwarp "anat.un.aff.qw_WARP.nii mat.r$run.warp.aff12.1D" \
- -interp cubic \
- -ainterp NN -quiet \
- -prefix rm.epi.1.r$run
- # make an extents intersection mask of this run
- 3dTstat -min -prefix rm.epi.min.r$run rm.epi.1.r$run+tlrc
- end
- # make a single file of registration params
- cat dfile.r*.1D > dfile_rall.1D
- # ----------------------------------------
- # create the extents mask: mask_epi_extents+tlrc
- # (this is a mask of voxels that have valid data at every TR)
- 3dMean -datum short -prefix rm.epi.mean rm.epi.min.r*.HEAD
- 3dcalc -a rm.epi.mean+tlrc -expr 'step(a-0.999)' -prefix mask_epi_extents
- # and apply the extents mask to the EPI data
- # (delete any time series with missing data)
- foreach run ( $runs )
- 3dcalc -a rm.epi.nomask.r$run+tlrc -b mask_epi_extents+tlrc \
- -expr 'a*b' -prefix pb03.$subj.r$run.volreg
- end
- # warp the volreg base EPI dataset to make a final version
- cat_matvec -ONELINE \
- anat.un.aff.Xat.1D \
- FT_anat_al_junk_mat.aff12.1D -I > mat.basewarp.aff12.1D
- 3dNwarpApply -master FT_anat_ns+tlrc -dxyz 2.5 \
- -source vr_base_min_outlier+orig \
- -nwarp "anat.un.aff.qw_WARP.nii mat.basewarp.aff12.1D" \
- -prefix final_epi_vr_base_min_outlier
- # create an anat_final dataset, aligned with stats
- 3dcopy FT_anat_ns+tlrc anat_final.$subj
- # record final registration costs
- 3dAllineate -base final_epi_vr_base_min_outlier+tlrc -allcostX \
- -input anat_final.$subj+tlrc |& tee out.allcostX.txt
- # -----------------------------------------
- # warp anat follower datasets (non-linear)
- 3dNwarpApply -source copy_af_aaseg+orig \
- -master anat_final.$subj+tlrc \
- -ainterp NN -nwarp anat.un.aff.qw_WARP.nii anat.un.aff.Xat.1D \
- -prefix follow_ROI_aaseg
- 3dNwarpApply -source copy_af_aeseg+orig \
- -master pb03.$subj.r01.volreg+tlrc \
- -ainterp NN -nwarp anat.un.aff.qw_WARP.nii anat.un.aff.Xat.1D \
- -prefix follow_ROI_aeseg
- 3dNwarpApply -source copy_af_FSvent+orig \
- -master pb03.$subj.r01.volreg+tlrc \
- -ainterp NN -nwarp anat.un.aff.qw_WARP.nii anat.un.aff.Xat.1D \
- -prefix follow_ROI_FSvent
- 3dNwarpApply -source copy_af_FSWe+orig \
- -master pb03.$subj.r01.volreg+tlrc \
- -ainterp NN -nwarp anat.un.aff.qw_WARP.nii anat.un.aff.Xat.1D \
- -prefix follow_ROI_FSWe
- 3dNwarpApply -source FT_anat+orig \
- -master anat_final.$subj+tlrc \
- -ainterp wsinc5 -nwarp anat.un.aff.qw_WARP.nii anat.un.aff.Xat.1D\
- -prefix anat_w_skull_warped
- # ================================== blur ==================================
- # blur each volume of each run
- foreach run ( $runs )
- 3dmerge -1blur_fwhm 4.0 -doall -prefix rm.pb04.$subj.r$run.blur \
- pb03.$subj.r$run.volreg+tlrc
- # and apply extents mask, since no scale block
- 3dcalc -a rm.pb04.$subj.r$run.blur+tlrc -b mask_epi_extents+tlrc \
- -expr 'a*b' -prefix pb04.$subj.r$run.blur
- end
- # ================================== mask ==================================
- # create 'full_mask' dataset (union mask)
- foreach run ( $runs )
- 3dAutomask -prefix rm.mask_r$run pb04.$subj.r$run.blur+tlrc
- end
- # create union of inputs, output type is byte
- 3dmask_tool -inputs rm.mask_r*+tlrc.HEAD -union -prefix full_mask.$subj
- # ---- create subject anatomy mask, mask_anat.$subj+tlrc ----
- # (resampled from tlrc anat)
- 3dresample -master full_mask.$subj+tlrc -input FT_anat_ns+tlrc \
- -prefix rm.resam.anat
- # convert to binary anat mask; fill gaps and holes
- 3dmask_tool -dilate_input 5 -5 -fill_holes -input rm.resam.anat+tlrc \
- -prefix mask_anat.$subj
- # compute tighter EPI mask by intersecting with anat mask
- 3dmask_tool -input full_mask.$subj+tlrc mask_anat.$subj+tlrc \
- -inter -prefix mask_epi_anat.$subj
- # compute overlaps between anat and EPI masks
- 3dABoverlap -no_automask full_mask.$subj+tlrc mask_anat.$subj+tlrc \
- |& tee out.mask_ae_overlap.txt
- # note Dice coefficient of masks, as well
- 3ddot -dodice full_mask.$subj+tlrc mask_anat.$subj+tlrc \
- |& tee out.mask_ae_dice.txt
- # ---- create group anatomy mask, mask_group+tlrc ----
- # (resampled from tlrc base anat, MNI_caez_N27+tlrc)
- 3dresample -master full_mask.$subj+tlrc -prefix ./rm.resam.group \
- -input /home/rickr/abin/MNI_caez_N27+tlrc
- # convert to binary group mask; fill gaps and holes
- 3dmask_tool -dilate_input 5 -5 -fill_holes -input rm.resam.group+tlrc \
- -prefix mask_group
- # ================================ regress =================================
- # compute de-meaned motion parameters (for use in regression)
- 1d_tool.py -infile dfile_rall.1D -set_nruns 3 \
- -demean -write motion_demean.1D
- # compute motion parameter derivatives (for use in regression)
- 1d_tool.py -infile dfile_rall.1D -set_nruns 3 \
- -derivative -demean -write motion_deriv.1D
- # convert motion parameters for per-run regression
- 1d_tool.py -infile motion_demean.1D -set_nruns 3 \
- -split_into_pad_runs mot_demean
- 1d_tool.py -infile motion_deriv.1D -set_nruns 3 \
- -split_into_pad_runs mot_deriv
- # create censor file motion_${subj}_censor.1D, for censoring motion
- 1d_tool.py -infile dfile_rall.1D -set_nruns 3 \
- -show_censor_count -censor_prev_TR \
- -censor_motion 0.2 motion_${subj}
- # combine multiple censor files
- 1deval -a motion_${subj}_censor.1D -b outcount_${subj}_censor.1D \
- -expr "a*b" > censor_${subj}_combined_2.1D
- # create ROI regressor: FSWe
- # (get each ROI average time series and remove resulting mean)
- foreach run ( $runs )
- 3dmaskave -quiet -mask follow_ROI_FSWe+tlrc \
- pb03.$subj.r$run.volreg+tlrc \
- | 1d_tool.py -infile - -demean -write rm.ROI.FSWe.r$run.1D
- end
- # and catenate the demeaned ROI averages across runs
- cat rm.ROI.FSWe.r*.1D > ROI.FSWe_rall.1D
- # note TRs that were not censored
- set ktrs = `1d_tool.py -infile censor_${subj}_combined_2.1D \
- -show_trs_uncensored encoded`
- # ------------------------------
- # create ROI PC ort sets: FSvent
- # create a time series dataset to run 3dpc on...
- # detrend, so principal components are not affected
- foreach run ( $runs )
- # to censor, create per-run censor files
- 1d_tool.py -set_run_lengths $tr_counts -select_runs $run \
- -infile censor_${subj}_combined_2.1D -write rm.censor.r$run.1D
- # do not let censored time points affect detrending
- 3dTproject -polort 3 -prefix rm.det_pcin_r$run \
- -censor rm.censor.r$run.1D -cenmode KILL \
- -input pb03.$subj.r$run.volreg+tlrc
- end
- # catenate runs, prepare to censor TRs
- 3dTcat -prefix rm.det_pcin_rall rm.det_pcin_r*+tlrc.HEAD
- # make ROI PCs : FSvent
- 3dpc -mask follow_ROI_FSvent+tlrc -pcsave 3 \
- -prefix rm.ROIPC.FSvent rm.det_pcin_rall+tlrc
- # zero pad censored TRs
- 1d_tool.py -censor_fill_parent censor_${subj}_combined_2.1D \
- -infile rm.ROIPC.FSvent_vec.1D \
- -write ROIPC.FSvent.1D
- # ------------------------------
- # run the regression analysis
- 3dDeconvolve -input pb04.$subj.r*.blur+tlrc.HEAD \
- -censor censor_${subj}_combined_2.1D \
- -ortvec ROI.FSWe_rall.1D ROI.FSWe \
- -ortvec ROIPC.FSvent.1D ROIPC.FSvent \
- -ortvec mot_demean.r01.1D mot_demean_r01 \
- -ortvec mot_demean.r02.1D mot_demean_r02 \
- -ortvec mot_demean.r03.1D mot_demean_r03 \
- -ortvec mot_deriv.r01.1D mot_deriv_r01 \
- -ortvec mot_deriv.r02.1D mot_deriv_r02 \
- -ortvec mot_deriv.r03.1D mot_deriv_r03 \
- -polort 3 \
- -num_stimts 0 \
- -fout -tout -x1D X.xmat.1D -xjpeg X.jpg \
- -x1D_uncensored X.nocensor.xmat.1D \
- -fitts fitts.$subj \
- -errts errts.${subj} \
- -x1D_stop \
- -bucket stats.$subj
- # -- use 3dTproject to project out regression matrix --
- 3dTproject -polort 0 -input pb04.$subj.r*.blur+tlrc.HEAD \
- -censor censor_${subj}_combined_2.1D -cenmode ZERO \
- -ort X.nocensor.xmat.1D -prefix errts.${subj}.tproject
- # if 3dDeconvolve fails, terminate the script
- if ( $status != 0 ) then
- echo '---------------------------------------'
- echo '** 3dDeconvolve error, failing...'
- echo ' (consider the file 3dDeconvolve.err)'
- exit
- endif
- # display any large pairwise correlations from the X-matrix
- 1d_tool.py -show_cormat_warnings -infile X.xmat.1D |& tee out.cormat_warn.txt
- # display degrees of freedom info from X-matrix
- 1d_tool.py -show_df_info -infile X.xmat.1D |& tee out.df_info.txt
- # create an all_runs dataset to match the fitts, errts, etc.
- 3dTcat -prefix all_runs.$subj pb04.$subj.r*.blur+tlrc.HEAD
- # --------------------------------------------------
- # generate fast ANATICOR result: errts.$subj.fanaticor+tlrc
- # --------------------------------------------------
- # fast ANATICOR: generate local FSWe time series averages
- # create catenated volreg dataset
- 3dTcat -prefix rm.all_runs.volreg pb03.$subj.r*.volreg+tlrc.HEAD
- # mask white matter before blurring
- 3dcalc -a rm.all_runs.volreg+tlrc -b follow_ROI_FSWe+tlrc \
- -expr "a*bool(b)" -datum float -prefix rm.all_runs.volreg.mask
- # generate ANATICOR voxelwise regressors via blur
- 3dmerge -1blur_fwhm 30 -doall -prefix Local_FSWe_rall \
- rm.all_runs.volreg.mask+tlrc
- # -- use 3dTproject to project out regression matrix --
- 3dTproject -polort 0 -input pb04.$subj.r*.blur+tlrc.HEAD \
- -censor censor_${subj}_combined_2.1D -cenmode ZERO \
- -dsort Local_FSWe_rall+tlrc \
- -ort X.nocensor.xmat.1D -prefix errts.$subj.fanaticor
- # --------------------------------------------------
- # create a temporal signal to noise ratio dataset
- # signal: if 'scale' block, mean should be 100
- # noise : compute standard deviation of errts
- 3dTstat -mean -prefix rm.signal.all all_runs.$subj+tlrc"[$ktrs]"
- 3dTstat -stdev -prefix rm.noise.all errts.$subj.fanaticor+tlrc"[$ktrs]"
- 3dcalc -a rm.signal.all+tlrc \
- -b rm.noise.all+tlrc \
- -c mask_epi_anat.$subj+tlrc \
- -expr 'c*a/b' -prefix TSNR.$subj
- # ---------------------------------------------------
- # compute and store GCOR (global correlation average)
- # (sum of squares of global mean of unit errts)
- 3dTnorm -norm2 -prefix rm.errts.unit errts.$subj.fanaticor+tlrc
- 3dmaskave -quiet -mask full_mask.$subj+tlrc rm.errts.unit+tlrc \
- > gmean.errts.unit.1D
- 3dTstat -sos -prefix - gmean.errts.unit.1D\' > out.gcor.1D
- echo "-- GCOR = `cat out.gcor.1D`"
- # ---------------------------------------------------
- # compute correlation volume
- # (per voxel: average correlation across masked brain)
- # (now just dot product with average unit time series)
- 3dcalc -a rm.errts.unit+tlrc -b gmean.errts.unit.1D -expr 'a*b' -prefix rm.DP
- 3dTstat -sum -prefix corr_brain rm.DP+tlrc
- # compute 2 requested correlation volume(s)
- # create correlation volume corr_af_aeseg
- 3dcalc -a follow_ROI_aeseg+tlrc -b full_mask.$subj+tlrc -expr 'a*b' \
- -prefix rm.fm.aeseg
- 3dmaskave -q -mask rm.fm.aeseg+tlrc rm.errts.unit+tlrc > mean.unit.aeseg.1D
- 3dcalc -a rm.errts.unit+tlrc -b mean.unit.aeseg.1D \
- -expr 'a*b' -prefix rm.DP.aeseg
- 3dTstat -sum -prefix corr_af_aeseg rm.DP.aeseg+tlrc
- # create correlation volume corr_af_FSvent
- 3dcalc -a follow_ROI_FSvent+tlrc -b full_mask.$subj+tlrc -expr 'a*b' \
- -prefix rm.fm.FSvent
- 3dmaskave -q -mask rm.fm.FSvent+tlrc rm.errts.unit+tlrc > mean.unit.FSvent.1D
- 3dcalc -a rm.errts.unit+tlrc -b mean.unit.FSvent.1D \
- -expr 'a*b' -prefix rm.DP.FSvent
- 3dTstat -sum -prefix corr_af_FSvent rm.DP.FSvent+tlrc
- # --------------------------------------------------------
- # compute sum of non-baseline regressors from the X-matrix
- # (use 1d_tool.py to get list of regressor colums)
- set reg_cols = `1d_tool.py -infile X.nocensor.xmat.1D -show_indices_interest`
- 3dTstat -sum -prefix sum_ideal.1D X.nocensor.xmat.1D"[$reg_cols]"
- # also, create a stimulus-only X-matrix, for easy review
- 1dcat X.nocensor.xmat.1D"[$reg_cols]" > X.stim.xmat.1D
- # ============================ blur estimation =============================
- # compute blur estimates
- touch blur_est.$subj.1D # start with empty file
- # create directory for ACF curve files
- mkdir files_ACF
- # -- estimate blur for each run in epits --
- touch blur.epits.1D
- # restrict to uncensored TRs, per run
- foreach run ( $runs )
- set trs = `1d_tool.py -infile X.xmat.1D -show_trs_uncensored encoded \
- -show_trs_run $run`
- if ( $trs == "" ) continue
- 3dFWHMx -detrend -mask mask_epi_anat.$subj+tlrc \
- -ACF files_ACF/out.3dFWHMx.ACF.epits.r$run.1D \
- all_runs.$subj+tlrc"[$trs]" >> blur.epits.1D
- end
- # compute average FWHM blur (from every other row) and append
- set blurs = ( `3dTstat -mean -prefix - blur.epits.1D'{0..$(2)}'\'` )
- echo average epits FWHM blurs: $blurs
- echo "$blurs # epits FWHM blur estimates" >> blur_est.$subj.1D
- # compute average ACF blur (from every other row) and append
- set blurs = ( `3dTstat -mean -prefix - blur.epits.1D'{1..$(2)}'\'` )
- echo average epits ACF blurs: $blurs
- echo "$blurs # epits ACF blur estimates" >> blur_est.$subj.1D
- # -- estimate blur for each run in errts --
- touch blur.errts.1D
- # restrict to uncensored TRs, per run
- foreach run ( $runs )
- set trs = `1d_tool.py -infile X.xmat.1D -show_trs_uncensored encoded \
- -show_trs_run $run`
- if ( $trs == "" ) continue
- 3dFWHMx -detrend -mask mask_epi_anat.$subj+tlrc \
- -ACF files_ACF/out.3dFWHMx.ACF.errts.r$run.1D \
- errts.$subj.fanaticor+tlrc"[$trs]" >> blur.errts.1D
- end
- # compute average FWHM blur (from every other row) and append
- set blurs = ( `3dTstat -mean -prefix - blur.errts.1D'{0..$(2)}'\'` )
- echo average errts FWHM blurs: $blurs
- echo "$blurs # errts FWHM blur estimates" >> blur_est.$subj.1D
- # compute average ACF blur (from every other row) and append
- set blurs = ( `3dTstat -mean -prefix - blur.errts.1D'{1..$(2)}'\'` )
- echo average errts ACF blurs: $blurs
- echo "$blurs # errts ACF blur estimates" >> blur_est.$subj.1D
- # ================== auto block: generate review scripts ===================
- # generate a review script for the unprocessed EPI data
- gen_epi_review.py -script @epi_review.$subj \
- -dsets pb00.$subj.r*.tcat+orig.HEAD
- # generate scripts to review single subject results
- # (try with defaults, but do not allow bad exit status)
- gen_ss_review_scripts.py -mot_limit 0.2 -out_limit 0.1 \
- -errts_dset errts.$subj.fanaticor+tlrc.HEAD -exit0 \
- -ss_review_dset out.ss_review.$subj.txt \
- -write_uvars_json out.ss_review_uvars.json
- # ========================== auto block: finalize ==========================
- # remove temporary files
- \rm -fr rm.* awpy
- # if the basic subject review script is here, run it
- # (want this to be the last text output)
- if ( -e @ss_review_basic ) then
- ./@ss_review_basic |& tee out.ss_review.$subj.txt
- # generate html ss review pages
- # (akin to static images from running @ss_review_driver)
- apqc_make_tcsh.py -review_style basic -subj_dir . \
- -uvar_json out.ss_review_uvars.json
- tcsh @ss_review_html
- apqc_make_html.py -qc_dir QC_$subj
- echo "\nconsider running: \n\n afni_open -b $subj.results/QC_$subj/index.html\n"
- endif
- # return to parent directory (just in case...)
- cd ..
- echo "execution finished: `date`"
- # ==========================================================================
- # script generated by the command:
- #
- # afni_proc.py -subj_id FT.rest.11 -script proc.FT.rest.11 -scr_overwrite \
- # -blocks despike tshift align tlrc volreg blur mask regress -copy_anat \
- # FT/FT_anat+orig -anat_follower_ROI aaseg anat \
- # FT/SUMA/aparc.a2009s+aseg.nii -anat_follower_ROI aeseg epi \
- # FT/SUMA/aparc.a2009s+aseg.nii -anat_follower_ROI FSvent epi \
- # FT/SUMA/FT_vent.nii -anat_follower_ROI FSWe epi FT/SUMA/FT_white.nii \
- # -dsets FT/FT_epi_r1+orig.HEAD FT/FT_epi_r2+orig.HEAD \
- # FT/FT_epi_r3+orig.HEAD -tcat_remove_first_trs 2 -tlrc_base \
- # MNI_caez_N27+tlrc -tlrc_NL_warp -volreg_align_to MIN_OUTLIER \
- # -volreg_align_e2a -volreg_tlrc_warp -blur_size 4.0 -mask_epi_anat yes \
- # -regress_ROI_PC FSvent 3 -regress_ROI FSWe -regress_make_corr_vols \
- # aeseg FSvent -regress_anaticor_fast -regress_anaticor_label FSWe \
- # -regress_motion_per_run -regress_censor_motion 0.2 \
- # -regress_censor_outliers 0.1 -regress_apply_mot_types demean deriv \
- # -regress_est_blur_epits -regress_est_blur_errts -regress_run_clustsim no
|