'''THIS IS A WORK IN PROGRESS AND LIKELY CONTAINS MISTAKES. PLEASE IGNORE FOR NOW'''
FS-FAST USE CASE 1: fMRI Workflow for Reasoning Study
Experiment design
The experiment consists of 3 active conditions (+baseline), referred to as V, T and P.
The task consists in solving visually presented problems in each of these conditions. Subjects respond using a button box.
The paradigm is presented in 6 consecutive runs, each lasting 300s. In each run, two of the three conditions are shown to minimize subject confusion, and increase statistical power
**WHAT ARE THE EFFECTS ON POWER OF SHOWING ONLY A SUBSET OF THE CONDITIONS IN EACH RUN??.
The runs consist of
Run 1: T-P
Run 2: T-V
Run 3: P-V
Run 4: T-P
Run 5: T-V
Run 6: P-V
This alternation allows for similar scanner drift effects across the different pairings of the conditions (i.e. tentatively the same amount of drift occurs between runs 1 and 4 and 2 and 5, assuming drift is linear). Within each run, the plates are presented using a pseudo-randomized (order the same for all subjects, but only known to the experimenter) event-related paradigm. Each plate presentation is considered an event, which can last between 1 and 10s, as the plate disappears when the subject responds or times out after 10 seconds (at which point the paradigm goes on by itself). In-between plates, a fixation cross is shown with a random ISI ranging from 1500 to 3500ms in 250ms steps. Every 6 plates, the fixation cross is held for a longer time, in order to match the total run duration across subjects.
**IS THIS NECESSARY? WHY? IS THERE A BETTER WAY TO GO ABOUT IT THAN MY 'catchup times'?.
Thus, the 7th plate appears at t=75s, the 13th at t=150s and the 19th at t=225s. The total run time of 5minutes is therefore the same as if all plates timed out (10x24 + 2.5x24 = 300).
The PAR files look like this:
Init_time |
condition_nb |
duration |
condition_name |
0 |
0 |
2.5178 |
baseline |
2.5178 |
2 |
2.3427 |
perceptual |
4.8605 |
0 |
3.2763 |
baseline |
8.1368 |
3 |
2.1638 |
verbal |
10.3006 |
0 |
2.5216 |
baseline |
12.8222 |
2 |
2.5746 |
perceptual |
15.3968 |
0 |
2.0273 |
baseline |
Individual Analysis
Unpacking
nmrenv
setenv SUBJECTS_DIR /space/tango/5/users/cherif/reasoning
findsession <subjID>
unpacksdcmdir src <> -targ <> -scanonly file
unpacksdcmdir src <> -targ <subjdir> -fsfast -run <#> bold bshort f -run
(for all 6 runs)
unpacksdcmdir src <> -targ <subjdir> -run <#> 3danat cor blah (for the structural)
Structural Processing
nmrenv
setenv SUBJECTS_DIR /space/tango/3/users/recon_modygp/cherif
recon-all subjid <subjid> autorecon1 autorecon2
#perform manual edits
recon-all subjid <subjid> -autorecon3
Functional Analysis Stream
cd /space/tango/5/users/cherif/reasoning/
ln s /space/tango/3/users/recon_modygp/cherif/<subjID> <subjID>
cd fMRI_analysis/subjects/<subjID>
cat > fMRI_analysis/subjects/<subjID>/subjectname
<subjID>
<ctrl+d>
cp <subjid>_run<#>_par.txt bold/<correspondingrun#>/<subjid>_par.par
cp <subjid>_par.par reason_par.par
Pre-processing
cd ../
preproc-sess s <subjid> smout <smfmc#> -fwhm <fwhm>
**DO YOU STILL WANT TO APPLY SMOOTHING HERE IF YOU'RE GONNA SMOOTH ON THE SURFACE? SHOULD THERE BE A QUANTITATIVE LINK BETWEEN THE TWO FWHM?
Registration to high res scan
spmregister-sess s <subjid>
tkregister-sess s <subjid>
Define the Analysis
mkanalysis-sess.new -analysis reasoning-analysis TR 2 paradigm reason_par.par -designtype event-related funcstem fmcsm5 nconditions 3 -gammafit 2.25 1.25 inorm mcextreg
**WHAT ARE THE EFFECTS OF CHANGING TAUMAX, TIMEWINDOW, POLYFIT? RULES OF THUMB? HOW TO USE TER?
IF YOU USE FIR ANALYSIS INSTEAD OF GAMMAFIT, THEN NEED TO CHOOSE TIMEWINDOW AND PRESTIM PARAMETERS. RULE OF THUMB IS TIMEWINDOW=16S+LONGEST EVENT+PRESTIM, AND PRESTIM=2TRS
Run the Analysis
selxavg-sess s <subjid> -analysis reasoning-analysis
Define Contrasts
OMNIBUS:
mkcontrast-sess analysis <analysis> -contrast omnibus a 1 a 2 a 3 -c 0 -nosumconds
More interesting contrasts:
mkcontrast-sess analysis reasoning-analysis contrast toni-v-fix a 1 -c 0
mkcontrast-sess analysis reasoning-analysis contrast perc-v-fix a 2 -c 0
mkcontrast-sess analysis reasoning-analysis contrast verb-v-fix a 3 -c 0
mkcontrast-sess analysis reasoning-analysis contrast toni-v-verb a 1 c 3
mkcontrast-sess analysis reasoning-analysis contrast toni-v-perc a 1 c 2
mkcontrast-sess analysis reasoning-analysis contrast perc-v-verb a 2 -c 3
Compute stats (GLM)
stxgrinder-sess analysis reasoning-analysis - s <subjid> contrast <contrastname>
or
stxgrinder-sess analysis reasoning-analysis s <subjid> -all
Viewing results with sliceview
sliceview-sess analysis <analysis> -slice <#> -contrast <contrastname> -map <mapname> -s <subjid>
Viewing results on anatomical
paint-sess analysis <analysis> -s <subjid> c <contrastname> -map <mapname>
surf-sess s <subjid> a <analysis> -c <contrastname> -map <mapname>
tkmedit-sess analysis <analysis> -s <subjid> contrast <contrastname> -map <mapname>
Making webpages of overlay contrasts for visualization
# The scripts used here are adapted from scripts written by Thomas Witzel. No support is provided for them, if you want to use them, you are on your own!
cp gf <subjid>/bold/reasoning-analysis/
cp run-FSFAST.csh <subjid>/bold/reasoning-analysis/
cp vol2surf_FSFAST <subjid>/bold/reasoning-analysis/
cp snapshots* <subjid>/bold/reasoning-analysis/
cd <subjid>/bold/reasoning-analysis
./vol2surf_FSFAST
this script paints the activation on the inflated surface for all conditions
# Contrast toni-v-fix
mri_vol2surf --src toni-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./toni-v-fix-lh.w --out_type paint
mri_vol2surf --src toni-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./toni-v-fix-rh.w --out_type paint
# Contrast perc-v-fix
mri_vol2surf --src perc-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./perc-v-fix-lh.w --out_type paint
mri_vol2surf --src perc-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./perc-v-fix-rh.w --out_type paint
# Contrast verb-v-fix
mri_vol2surf --src verb-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./verb-v-fix-lh.w --out_type paint
mri_vol2surf --src verb-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./verb-v-fix-rh.w --out_type paint
# Contrast toni-v-perc
mri_vol2surf --src toni-v-perc/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./toni-v-perc-lh.w --out_type paint
mri_vol2surf --src toni-v-perc/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./toni-v-perc-rh.w --out_type paint
# Contrast toni-v-verb
mri_vol2surf --src toni-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./toni-v-verb-lh.w --out_type paint
mri_vol2surf --src toni-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./toni-v-verb-rh.w --out_type paint
# Contrast perc-v-verb
mri_vol2surf --src perc-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./perc-v-verb-lh.w --out_type paint
mri_vol2surf --src perc-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./perc-v-verb-rh.w --out_type paint
mkdir rgb (this is where run-FSFAST.csh will write its outputs)
EDIT run-FSFAST.csh: change the threshold, cluster size, and subject name
This creates rgb files for all conditions, thresholded and clustered NOTE: do not let the screensaver come up!!
# Set threshold values for contrast categories
setenv fthresh 1.5
setenv fmid 2.5
setenv fslope 2.0
# List contrast names in quotes
# Here subjectname is mody068
foreach name ("toni-v-fix" "perc-v-fix" "verb-v-fix" "toni-v-perc" "toni-v-verb" "perc-v-verb")
setenv statsname ${name}-rh.w
mri_surfcluster --hemi rh --srcsubj mody068 --src ${name}-rh.w --minarea 30 --thmin 2.0** --o ./${name}-rh-th2.0-clust30.w
setenv statsname ${name}-rh-th2.0-clust30.w
tksurfer mody068 rh inflated -colscalebarflag 1 -scalebarflag 1 -invphaseflag 1 -tcl snapshots-rh.tcl
setenv statsname ${name}-lh.w
mri_surfcluster --hemi lh --srcsubj mody068 --src ${name}-lh.w --minarea 30 --thmin 2.0 --o ./${name}-lh-th2.0-clust30.w
setenv statsname ${name}-lh-th2.0-clust30.w
tksurfer mody068 lh inflated -colscalebarflag 1 -scalebarflag 1 -invphaseflag 1 -tcl snapshots-lh.tcl
end
#make copies of output files from mri_surfcluster with pos and neg extensions to use in snapshots
rename clust30.w clust30-pos.w *clust30.w
# Now to view positive stats only
foreach name ( "toni-v-fix" "perc-v-fix" "verb-v-fix" "toni-v-perc" "toni-v-verb" "perc-v-verb")
setenv statsname ${name}-rh-th2.0-clust30-pos.w
tksurfer mody068 rh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -tcl snapshots-rh.tcl
setenv statsname ${name}-lh-th2.0-clust30-pos.w
tksurfer mody068 lh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -tcl snapshots-lh.tcl
end
rename clust30-pos.w clust30-neg.w *clust30-pos.w
foreach name ( "toni-v-fix" "perc-v-fix" "verb-v-fix" "toni-v-perc" "toni-v-verb" "perc-v-verb")
setenv statsname ${name}-rh-th2.0-clust30-neg.w
tksurfer mody068 rh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -invphaseflag 1 -tcl snapshots-rh.tcl
setenv statsname ${name}-lh-th2.0-clust30-neg.w
tksurfer mody068 lh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -invphaseflag 1 -tcl snapshots-lh.tcl
end
run-FSFAST.csh calls snapshots-lh.tcl and snapshots-rh.tcl, which are equivalent snapshots-lh shown below
set val $env(statsname)
sclv_read_binary_values 0
sclv_smooth 2 val
set fthresh $env(fthresh)
set fmid $env(fmid)
set offset 0.4
set fslope $env(fslope)
set curv lh.curv
read_binary_curv
set curvflag 1
open_window
sclv_set_current_field 0
make_lateral_view
redraw
save_rgb
file copy -force rgb/tksurfer.rgb rgb/$val-lat.rgb
rotate_brain_y 90
redraw
save_rgb
file copy -force rgb/tksurfer.rgb rgb/$val-post.rgb
rotate_brain_y 90
redraw
save_rgb
file copy -force rgb/tksurfer.rgb rgb/$val-med.rgb
rotate_brain_y -90
rotate_brain_x 90
redraw
save_rgb
file copy -force rgb/tksurfer.rgb rgb/$val-inf.rgb
exit
mv *-clust* rgb/
mv rgb rgb_th<fthresh>_clust<minarea>_<subjid>
cd rgb_th<fthresh>_clust<minarea>_<subjid>
mkdir pos
mkdir neg #will contain images with truncphaseflag for all subtractions
mv *<clust>-pos* pos/
mv *<clust>-neg* neg/
cp ../gf .
cp gf pos
cp gf neg
foreach image (*.rgb)
convert $image $image.png
end
rm tksurfer.rgb*
rename .rgb.png .png *.rgb.png
rename h-th<fthresh>-clust<minarea>.w h.w * h-th<fthresh>-clust<minarea>.w*
./gf toni-v-fix perc-v-fix verb-v-fix toni-v-perc toni-v-verb perc-v-verb <subjid>_th<fthresh>_clust<minarea>.html
#this creates a webpage showing maps for all conditions, using the .png images
#now for pos and neg maps:
cd pos
foreach image (*.rgb)
convert $image $image.png
end
rename .rgb.png .png *.rgb.png
rename h-th<fthresh>-clust<minarea>-pos.w h.w * h-th<fthresh>-clust<minarea>-pos.w*
./gf toni-v-fix perc-v-fix verb-v-fix toni-v-perc toni-v-verb perc-v-verb <subjid>_th<fthresh>_clust<minarea>-pos.html
cd ../neg
foreach image (*.rgb)
convert $image $image.png
end
rename .rgb.png .png *.rgb.png
rename h-th<fthresh>-clust<minarea>-neg.w h.w * h-th<fthresh>-clust<minarea>-neg.w*
./gf toni-v-fix perc-v-fix verb-v-fix toni-v-perc toni-v-verb perc-v-verb <subjid>_th<fthresh>_clust<minarea>-neg.html
GROUP stats
Func2sph-sess analysis reasoning-analysis projfrac .3 s <subjid>
**I UNDERSTAND A PROJECTION FRACTION OF 0.3 IS STANDARD, WOULD YOU EVER CHANGE IT?
Func2tal-sess res 4 analysis reasoning-analysis s <subjid>
**AGAIN, 4 SEEMS TO BE DEFAULT FOR THE RESOLUTION, IS THIS WHAT YOU ALWAYS WANT TO USE?
Sphsmooth-sess analysis reasoning-analysis smoothsteps 20 outsphdir sphsm01 s <subjid>
**WHAT IS THE RULE OF THUMBS FOR SMOOTHSTEPS? I SAW THE TIP ON THE WIKI THAT YOU WANT YOUR SMOOTHING TO BE THE SIZE OF YOUR ACTIVATION, BUT HOW IS THAT A PRACTICAL THING TO IMPLEMENT?
DO I STILL WANT TO SMOOTH IN PREPROC IF GONNA SMOOTH HERE? LINK BETWEEN THIS FWHM AND INDIVIDUAL ANALYSIS?
Isxavg-fe-sess analysis reasoning-analysis group m14-68-86 space sph spacedir sphsm01 s <subjid1> -s <subjid2>
Isxavg-fe-sess analysis reasoning-analysis group m14-68-86 space tal spacedir tal s <subjid1> -s <subjid2>
Stxgrinder-sess analysis reasoning-analysis s m14-68-86 space sph spacedir sphsm01 all
Stxgrinder-sess analysis reasoning-analysis s m14-68-86 space tal spacedir tal all
Paint-sess analysis reasoning-analysis all s m14-68-86 subject mody014 space sph spacedir sphsm01 isxavg fixed
**IS SUBJECT SPECIFYING WHICH ANATOMICAL TO RENDER THE GROUP AVERAGE ON? IF SO THEN AFTERWARDS WHEN YOU DISPLAY YOUR STATS ON A SURFACE, YOU WOULD HAVE TO ALWAYS USE THAT ONE, RIGHT?
IS FSAVERAGE WHAT YOU WOULD USE NOW INSTEAD?
tksurfer <subject i used for paint-sess above, mody014> lh inflated -overlay <group>/bold/<analysis>/<spacedir>-ffx/<contrast>/sig-0-mody014-lh.w