= '''THIS IS A WORK IN PROGRESS AND LIKELY CONTAINS MISTAKES. PLEASE IGNORE FOR NOW''' =

<<BR>>
== 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.<<BR>>
The task consists in solving visually presented problems in each of these conditions. Subjects respond using a button box.<<BR>>
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 <<BR>>
'''''**WHAT ARE THE EFFECTS ON POWER OF SHOWING ONLY A SUBSET OF THE CONDITIONS IN EACH RUN??'''''. <<BR>>
The runs consist of <<BR>>
Run 1: T-P <<BR>>
Run 2: T-V <<BR>>
Run 3: P-V <<BR>>
Run 4: T-P <<BR>>
Run 5: T-V <<BR>>
Run 6: P-V <<BR>>
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. <<BR>>
'''''**IS THIS NECESSARY? WHY? IS THERE A BETTER WAY TO GO ABOUT IT THAN MY 'catchup times'?'''''. <<BR>>
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). <<BR>>
The PAR files look like this: <<BR>>
||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 <<BR>>
setenv SUBJECTS_DIR /space/tango/5/users/cherif/reasoning <<BR>>
findsession <subjID> <<BR>>

unpacksdcmdir –src <> -targ <> -scanonly file <<BR>>
unpacksdcmdir –src <> -targ <subjdir> -fsfast -run <#> bold bshort f -run 
 (for all 6 runs) <<BR>>
unpacksdcmdir –src <> -targ <subjdir> -run <#> 3danat cor blah (for the structural) <<BR>>

=== Structural Processing ===
nmrenv<<BR>>
setenv SUBJECTS_DIR /space/tango/3/users/recon_modygp/cherif <<BR>>
recon-all –subjid <subjid> –autorecon1 –autorecon2 <<BR>>
#perform manual edits <<BR>>
recon-all –subjid <subjid> -autorecon3 <<BR>>

=== Functional Analysis Stream ===
cd /space/tango/5/users/cherif/reasoning/ <<BR>>
ln –s /space/tango/3/users/recon_modygp/cherif/<subjID> <subjID> <<BR>>

cd fMRI_analysis/subjects/<subjID> <<BR>>
cat > fMRI_analysis/subjects/<subjID>/subjectname <<BR>>
<subjID> <<BR>>
<ctrl+d> <<BR>>

cp <subjid>_run<#>_par.txt bold/<correspondingrun#>/<subjid>_par.par <<BR>>
cp <subjid>_par.par reason_par.par <<BR>>

 __Pre-processing__ 
cd ../ <<BR>>
preproc-sess –s <subjid> –smout <smfmc#> -fwhm <fwhm> <<BR>>
'''''**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?''''' <<BR>>

 __Registration to high res scan__ 
spmregister-sess –s <subjid> <<BR>>
tkregister-sess –s <subjid> <<BR>>

 __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 <<BR>>
'''''**WHAT ARE THE EFFECTS OF CHANGING TAUMAX, TIMEWINDOW, POLYFIT? RULES OF THUMB? HOW TO USE TER?''''' <<BR>>
'''''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''''' <<BR>>

 __Run the Analysis__
selxavg-sess –s <subjid> -analysis reasoning-analysis<<BR>>

 __Define Contrasts__
OMNIBUS: <<BR>> 
mkcontrast-sess –analysis <analysis> -contrast omnibus –a 1 –a 2 –a 3 -c 0 -nosumconds <<BR>>

More interesting contrasts: <<BR>>
mkcontrast-sess –analysis reasoning-analysis –contrast toni-v-fix –a 1 -c 0 <<BR>>
mkcontrast-sess –analysis reasoning-analysis –contrast perc-v-fix  –a 2  -c 0 <<BR>>
mkcontrast-sess –analysis reasoning-analysis –contrast verb-v-fix –a 3 -c 0 <<BR>>
mkcontrast-sess –analysis reasoning-analysis –contrast toni-v-verb –a 1 –c 3 <<BR>>
mkcontrast-sess –analysis reasoning-analysis –contrast toni-v-perc –a 1 –c 2 <<BR>>
mkcontrast-sess –analysis reasoning-analysis –contrast perc-v-verb –a 2 -c 3 <<BR>>

 __Compute stats (GLM)__
stxgrinder-sess –analysis reasoning-analysis - s <subjid> –contrast <contrastname> <<BR>>
or <<BR>>
stxgrinder-sess –analysis reasoning-analysis –s <subjid> -all <<BR>>

 __Viewing results with sliceview__ <<BR>>
sliceview-sess –analysis <analysis> -slice <#> -contrast <contrastname> -map <mapname> -s <subjid> <<BR>>

 __Viewing results on anatomical__ <<BR>>
paint-sess –analysis <analysis> -s <subjid>  –c <contrastname> -map <mapname> <<BR>>

surf-sess –s <subjid> –a <analysis> -c <contrastname> -map <mapname> <<BR>>

tkmedit-sess –analysis <analysis> -s <subjid> –contrast <contrastname> -map <mapname> <<BR>>

=== 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! <<BR>>

cp gf <subjid>/bold/reasoning-analysis/ <<BR>>
cp run-FSFAST.csh <subjid>/bold/reasoning-analysis/ <<BR>>
cp vol2surf_FSFAST <subjid>/bold/reasoning-analysis/ <<BR>>
cp snapshots* <subjid>/bold/reasoning-analysis/ <<BR>>

cd <subjid>/bold/reasoning-analysis <<BR>>

./vol2surf_FSFAST <<BR>>
	this script paints the activation on the inflated surface for all conditions <<BR>>
  # Contrast toni-v-fix <<BR>>
  mri_vol2surf --src toni-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./toni-v-fix-lh.w --out_type paint <<BR>>
  mri_vol2surf --src toni-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./toni-v-fix-rh.w --out_type paint <<BR>>
  # Contrast perc-v-fix <<BR>>
  mri_vol2surf --src perc-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./perc-v-fix-lh.w --out_type paint <<BR>>
  mri_vol2surf --src perc-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./perc-v-fix-rh.w --out_type paint <<BR>>
  # Contrast verb-v-fix <<BR>>
  mri_vol2surf --src verb-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./verb-v-fix-lh.w --out_type paint <<BR>>
  mri_vol2surf --src verb-v-fix/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./verb-v-fix-rh.w --out_type paint <<BR>>
  # Contrast toni-v-perc <<BR>>
  mri_vol2surf --src toni-v-perc/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./toni-v-perc-lh.w --out_type paint <<BR>>
  mri_vol2surf --src toni-v-perc/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./toni-v-perc-rh.w --out_type paint <<BR>>
  # Contrast toni-v-verb <<BR>>
  mri_vol2surf --src toni-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./toni-v-verb-lh.w --out_type paint <<BR>>
  mri_vol2surf --src toni-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./toni-v-verb-rh.w --out_type paint <<BR>>
  # Contrast perc-v-verb <<BR>>
  mri_vol2surf --src perc-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi lh --o ./perc-v-verb-lh.w --out_type paint <<BR>>
  mri_vol2surf --src perc-v-verb/sig --src_type bfloat --srcreg ../register.dat --hemi rh --o ./perc-v-verb-rh.w --out_type paint <<BR>>

mkdir rgb (this is where run-FSFAST.csh will write its outputs) <<BR>>
EDIT run-FSFAST.csh: change the threshold, cluster size, and subject name <<BR>>
  This creates rgb files for all conditions, thresholded and clustered NOTE: do not let the screensaver come up!! <<BR>>
  # Set threshold values for contrast categories <<BR>>
  setenv fthresh 1.5 <<BR>>
  setenv fmid 2.5 <<BR>>
  setenv fslope 2.0 <<BR>>

  # List contrast names in quotes <<BR>>
  # Here subjectname is mody068 <<BR>>
  foreach name ("toni-v-fix" "perc-v-fix" "verb-v-fix" "toni-v-perc" "toni-v-verb" "perc-v-verb") <<BR>>
    setenv statsname ${name}-rh.w <<BR>>
    mri_surfcluster --hemi rh --srcsubj mody068 --src ${name}-rh.w --minarea 30 --thmin 2.0** --o ./${name}-rh-th2.0-clust30.w <<BR>>
    setenv statsname ${name}-rh-th2.0-clust30.w <<BR>>
    tksurfer mody068 rh inflated -colscalebarflag 1 -scalebarflag 1 -invphaseflag 1 -tcl snapshots-rh.tcl <<BR>>
    setenv statsname ${name}-lh.w <<BR>>
    mri_surfcluster --hemi lh --srcsubj mody068 --src ${name}-lh.w --minarea 30 --thmin 2.0 --o ./${name}-lh-th2.0-clust30.w <<BR>>
    setenv statsname ${name}-lh-th2.0-clust30.w <<BR>>
    tksurfer mody068 lh inflated -colscalebarflag 1 -scalebarflag 1 -invphaseflag 1 -tcl snapshots-lh.tcl <<BR>>
  end  <<BR>>

  #make copies of output files from mri_surfcluster with pos and neg extensions to use in snapshots <<BR>>
  rename clust30.w clust30-pos.w *clust30.w <<BR>>

  # Now to view positive stats only <<BR>>
  foreach name ( "toni-v-fix" "perc-v-fix" "verb-v-fix" "toni-v-perc" "toni-v-verb" "perc-v-verb") <<BR>>
    setenv statsname ${name}-rh-th2.0-clust30-pos.w <<BR>>
    tksurfer mody068 rh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -tcl snapshots-rh.tcl <<BR>>
    setenv statsname ${name}-lh-th2.0-clust30-pos.w <<BR>>
    tksurfer mody068 lh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -tcl snapshots-lh.tcl <<BR>>
  end <<BR>>

  rename clust30-pos.w clust30-neg.w *clust30-pos.w <<BR>>
  foreach name ( "toni-v-fix" "perc-v-fix" "verb-v-fix" "toni-v-perc" "toni-v-verb" "perc-v-verb")<<BR>> 
    setenv statsname ${name}-rh-th2.0-clust30-neg.w <<BR>>
    tksurfer mody068 rh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -invphaseflag 1 -tcl snapshots-rh.tcl <<BR>>
    setenv statsname ${name}-lh-th2.0-clust30-neg.w <<BR>>
    tksurfer mody068 lh inflated -colscalebarflag 1 -scalebarflag 1 -truncphaseflag 1 -invphaseflag 1 -tcl snapshots-lh.tcl <<BR>>
  end <<BR>>

  run-FSFAST.csh calls snapshots-lh.tcl and snapshots-rh.tcl, which are equivalent
 snapshots-lh shown below <<BR>>
  set val $env(statsname) <<BR>>
  sclv_read_binary_values 0 <<BR>>
  sclv_smooth 2 val <<BR>>
  set fthresh $env(fthresh) <<BR>>
  set fmid $env(fmid) <<BR>>
  set offset 0.4 <<BR>>
  set fslope $env(fslope) <<BR>>
  set curv lh.curv <<BR>>
  read_binary_curv <<BR>>
  set curvflag 1 <<BR>>
  open_window <<BR>>
  sclv_set_current_field 0 <<BR>>

  make_lateral_view <<BR>>
  redraw <<BR>>
  save_rgb <<BR>>
  file copy -force rgb/tksurfer.rgb rgb/$val-lat.rgb <<BR>>
  rotate_brain_y 90 <<BR>>
  redraw <<BR>>
  save_rgb <<BR>>
  file copy -force rgb/tksurfer.rgb rgb/$val-post.rgb <<BR>>
  rotate_brain_y 90 <<BR>>
  redraw <<BR>>
  save_rgb <<BR>>
  file copy -force rgb/tksurfer.rgb rgb/$val-med.rgb <<BR>>
  rotate_brain_y -90 <<BR>>
  rotate_brain_x 90 <<BR>>
  redraw <<BR>>
  save_rgb <<BR>>
  file copy -force rgb/tksurfer.rgb rgb/$val-inf.rgb <<BR>>
  exit <<BR>>

mv *-clust* rgb/ <<BR>>
mv rgb rgb_th<fthresh>_clust<minarea>_<subjid> <<BR>>
cd rgb_th<fthresh>_clust<minarea>_<subjid> <<BR>>
mkdir pos <<BR>>
mkdir neg #will contain images with –truncphaseflag for all subtractions <<BR>>
mv *<clust>-pos* pos/ <<BR>>
mv *<clust>-neg* neg/ <<BR>>
cp ../gf . <<BR>>
cp gf pos <<BR>>
cp gf neg <<BR>>

foreach image (*.rgb) <<BR>>
convert $image $image.png <<BR>>
end <<BR>>
rm tksurfer.rgb* <<BR>>
rename .rgb.png .png *.rgb.png <<BR>>
rename h-th<fthresh>-clust<minarea>.w h.w * h-th<fthresh>-clust<minarea>.w* <<BR>>
./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 <<BR>>
#this creates a webpage showing maps for all conditions, using the .png images <<BR>>
#now for pos and neg maps: <<BR>>
cd pos <<BR>>
foreach image (*.rgb) <<BR>>
convert $image $image.png <<BR>>
end <<BR>>
rename .rgb.png .png *.rgb.png <<BR>>
rename h-th<fthresh>-clust<minarea>-pos.w h.w * h-th<fthresh>-clust<minarea>-pos.w* <<BR>>
./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 <<BR>>

cd ../neg <<BR>>
foreach image (*.rgb) <<BR>>
convert $image $image.png <<BR>>
end <<BR>>
rename .rgb.png .png *.rgb.png <<BR>>
rename h-th<fthresh>-clust<minarea>-neg.w h.w * h-th<fthresh>-clust<minarea>-neg.w* <<BR>>
./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 <<BR>>

== GROUP stats ==
Func2sph-sess –analysis reasoning-analysis –projfrac .3 –s <subjid> <<BR>>
'''''**I UNDERSTAND A PROJECTION FRACTION OF 0.3 IS STANDARD, WOULD YOU EVER CHANGE IT?''''' <<BR>>

Func2tal-sess –res 4 –analysis reasoning-analysis –s <subjid> <<BR>>
'''''**AGAIN, 4 SEEMS TO BE DEFAULT FOR THE RESOLUTION, IS THIS WHAT YOU ALWAYS WANT TO USE?''''' <<BR>>

Sphsmooth-sess –analysis reasoning-analysis –smoothsteps 20 –outsphdir sphsm01 –s <subjid> <<BR>>
'''''**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? <<BR>>
DO I STILL WANT TO SMOOTH IN PREPROC IF GONNA SMOOTH HERE? LINK BETWEEN THIS FWHM AND INDIVIDUAL ANALYSIS? <<BR>>'''''

Isxavg-fe-sess –analysis reasoning-analysis –group m14-68-86 –space sph –spacedir sphsm01 –s <subjid1> -s <subjid2> 
 <<BR>>

Isxavg-fe-sess –analysis reasoning-analysis –group m14-68-86 –space tal –spacedir tal –s <subjid1> -s <subjid2> 
 <<BR>>

Stxgrinder-sess –analysis reasoning-analysis –s m14-68-86 –space sph –spacedir sphsm01 –all <<BR>>

Stxgrinder-sess –analysis reasoning-analysis –s m14-68-86 –space tal –spacedir tal –all <<BR>>

Paint-sess –analysis reasoning-analysis –all –s m14-68-86 –subject mody014 –space sph –spacedir sphsm01 –isxavg fixed <<BR>>
'''''**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? <<BR>>
IS FSAVERAGE WHAT YOU WOULD USE NOW INSTEAD?''''' <<BR>> 

tksurfer <subject i used for paint-sess above, mody014> lh inflated -overlay <group>/bold/<analysis>/<spacedir>-ffx/<contrast>/sig-0-mody014-lh.w <<BR>>