From 88ea57ec55acb1e858aeec1621be0d46be6e40cf Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Fri, 17 Sep 2021 12:11:25 +0100 Subject: [PATCH] RF: Move feat1 design.fsf to git rather than external data set, add F test to FEAT analysis --- fsl_course/feat1/design.fsf | 662 ++++++++++++++++++++++++++++++++++ fsl_course/feat1/feedsRun1.py | 4 +- 2 files changed, 664 insertions(+), 2 deletions(-) create mode 100755 fsl_course/feat1/design.fsf diff --git a/fsl_course/feat1/design.fsf b/fsl_course/feat1/design.fsf new file mode 100755 index 0000000..b6ed453 --- /dev/null +++ b/fsl_course/feat1/design.fsf @@ -0,0 +1,662 @@ + +# FEAT version number +set fmri(version) 6.00 + +# Are we in MELODIC? +set fmri(inmelodic) 0 + +# Analysis level +# 1 : First-level analysis +# 2 : Higher-level analysis +set fmri(level) 1 + +# Which stages to run +# 0 : No first-level analysis (registration and/or group stats only) +# 7 : Full first-level analysis +# 1 : Pre-processing +# 2 : Statistics +set fmri(analysis) 7 + +# Use relative filenames +set fmri(relative_yn) 0 + +# Balloon help +set fmri(help_yn) 1 + +# Run Featwatcher +set fmri(featwatcher_yn) 0 + +# Cleanup first-level standard-space images +set fmri(sscleanup_yn) 0 + +# Output directory +set fmri(outputdir) "/vols/Data/fsldev/dataSets/fsl_course_data/fmri/fmri_fluency/fmri.feat" + +# TR(s) +set fmri(tr) 4.200000 + +# Total volumes +set fmri(npts) 106 + +# Delete volumes +set fmri(ndelete) 0 + +# Perfusion tag/control order +set fmri(tagfirst) 1 + +# Number of first-level analyses +set fmri(multiple) 1 + +# Higher-level input type +# 1 : Inputs are lower-level FEAT directories +# 2 : Inputs are cope images from FEAT directories +set fmri(inputtype) 2 + +# Carry out pre-stats processing? +set fmri(filtering_yn) 1 + +# Brain/background threshold, % +set fmri(brain_thresh) 10 + +# Critical z for design efficiency calculation +set fmri(critical_z) 5.3 + +# Noise level +set fmri(noise) 0.66 + +# Noise AR(1) +set fmri(noisear) 0.34 + +# Motion correction +# 0 : None +# 1 : MCFLIRT +set fmri(mc) 1 + +# Spin-history (currently obsolete) +set fmri(sh_yn) 0 + +# B0 fieldmap unwarping? +set fmri(regunwarp_yn) 0 + +# EPI dwell time (ms) +set fmri(dwell) 0.7 + +# EPI TE (ms) +set fmri(te) 35 + +# % Signal loss threshold +set fmri(signallossthresh) 10 + +# Unwarp direction +set fmri(unwarp_dir) y- + +# Slice timing correction +# 0 : None +# 1 : Regular up (0, 1, 2, 3, ...) +# 2 : Regular down +# 3 : Use slice order file +# 4 : Use slice timings file +# 5 : Interleaved (0, 2, 4 ... 1, 3, 5 ... ) +set fmri(st) 0 + +# Slice timings file +set fmri(st_file) "" + +# BET brain extraction +set fmri(bet_yn) 1 + +# Spatial smoothing FWHM (mm) +set fmri(smooth) 7.0 + +# Intensity normalization +set fmri(norm_yn) 0 + +# Perfusion subtraction +set fmri(perfsub_yn) 0 + +# Highpass temporal filtering +set fmri(temphp_yn) 1 + +# Lowpass temporal filtering +set fmri(templp_yn) 0 + +# MELODIC ICA data exploration +set fmri(melodic_yn) 0 + +# Carry out main stats? +set fmri(stats_yn) 1 + +# Carry out prewhitening? +set fmri(prewhiten_yn) 1 + +# Add motion parameters to model +# 0 : No +# 1 : Yes +set fmri(motionevs) 0 +set fmri(motionevsbeta) "" +set fmri(scriptevsbeta) "" + +# Robust outlier detection in FLAME? +set fmri(robust_yn) 0 + +# Higher-level modelling +# 3 : Fixed effects +# 0 : Mixed Effects: Simple OLS +# 2 : Mixed Effects: FLAME 1 +# 1 : Mixed Effects: FLAME 1+2 +set fmri(mixed_yn) 2 + +# Number of EVs +set fmri(evs_orig) 2 +set fmri(evs_real) 4 +set fmri(evs_vox) 0 + +# Number of contrasts +set fmri(ncon_orig) 5 +set fmri(ncon_real) 5 + +# Number of F-tests +set fmri(nftests_orig) 1 +set fmri(nftests_real) 1 + +# Add constant column to design matrix? (obsolete) +set fmri(constcol) 0 + +# Carry out post-stats steps? +set fmri(poststats_yn) 1 + +# Pre-threshold masking? +set fmri(threshmask) "" + +# Thresholding +# 0 : None +# 1 : Uncorrected +# 2 : Voxel +# 3 : Cluster +set fmri(thresh) 3 + +# P threshold +set fmri(prob_thresh) 0.05 + +# Z threshold +set fmri(z_thresh) 2.3 + +# Z min/max for colour rendering +# 0 : Use actual Z min/max +# 1 : Use preset Z min/max +set fmri(zdisplay) 0 + +# Z min in colour rendering +set fmri(zmin) 2 + +# Z max in colour rendering +set fmri(zmax) 8 + +# Colour rendering type +# 0 : Solid blobs +# 1 : Transparent blobs +set fmri(rendertype) 1 + +# Background image for higher-level stats overlays +# 1 : Mean highres +# 2 : First highres +# 3 : Mean functional +# 4 : First functional +# 5 : Standard space template +set fmri(bgimage) 1 + +# Create time series plots +set fmri(tsplot_yn) 1 + +# Registration to initial structural +set fmri(reginitial_highres_yn) 0 + +# Search space for registration to initial structural +# 0 : No search +# 90 : Normal search +# 180 : Full search +set fmri(reginitial_highres_search) 90 + +# Degrees of Freedom for registration to initial structural +set fmri(reginitial_highres_dof) 3 + +# Registration to main structural +set fmri(reghighres_yn) 1 + +# Search space for registration to main structural +# 0 : No search +# 90 : Normal search +# 180 : Full search +set fmri(reghighres_search) 90 + +# Degrees of Freedom for registration to main structural +set fmri(reghighres_dof) 7 + +# Registration to standard image? +set fmri(regstandard_yn) 1 + +# Use alternate reference images? +set fmri(alternateReference_yn) 0 + +# Standard image +set fmri(regstandard) "/opt/fmrib/fsl-alpha/data/standard/MNI152_T1_2mm_brain" + +# Search space for registration to standard space +# 0 : No search +# 90 : Normal search +# 180 : Full search +set fmri(regstandard_search) 90 + +# Degrees of Freedom for registration to standard space +set fmri(regstandard_dof) 12 + +# Do nonlinear registration from structural to standard space? +set fmri(regstandard_nonlinear_yn) 0 + +# Control nonlinear warp field resolution +set fmri(regstandard_nonlinear_warpres) 10 + +# High pass filter cutoff +set fmri(paradigm_hp) 90 + +# Total voxels +set fmri(totalVoxels) 18235392 + + +# Number of lower-level copes feeding into higher-level analysis +set fmri(ncopeinputs) 0 + +# 4D AVW data or FEAT directory (1) +set feat_files(1) "/vols/Data/fsldev/dataSets/fsl_course_data/fmri/fmri_fluency/fmri" + +# Add confound EVs text file +set fmri(confoundevs) 0 + +# Subject's structural image for analysis 1 +set highres_files(1) "/vols/Data/fsldev/dataSets/fsl_course_data/fmri/fmri_fluency/structural_brain" + +# EV 1 title +set fmri(evtitle1) "Gen" + +# Basic waveform shape (EV 1) +# 0 : Square +# 1 : Sinusoid +# 2 : Custom (1 entry per volume) +# 3 : Custom (3 column format) +# 4 : Interaction +# 10 : Empty (all zeros) +set fmri(shape1) 3 + +# Convolution (EV 1) +# 0 : None +# 1 : Gaussian +# 2 : Gamma +# 3 : Double-Gamma HRF +# 4 : Gamma basis functions +# 5 : Sine basis functions +# 6 : FIR basis functions +set fmri(convolve1) 3 + +# Convolve phase (EV 1) +set fmri(convolve_phase1) 0 + +# Apply temporal filtering (EV 1) +set fmri(tempfilt_yn1) 1 + +# Add temporal derivative (EV 1) +set fmri(deriv_yn1) 1 + +# Custom EV file (EV 1) +set fmri(custom1) "/vols/Data/fsldev/dataSets/fsl_course_data/fmri/fmri_fluency/word_generation.txt" + +# Orthogonalise EV 1 wrt EV 0 +set fmri(ortho1.0) 0 + +# Orthogonalise EV 1 wrt EV 1 +set fmri(ortho1.1) 0 + +# Orthogonalise EV 1 wrt EV 2 +set fmri(ortho1.2) 0 + +# EV 2 title +set fmri(evtitle2) "Shad" + +# Basic waveform shape (EV 2) +# 0 : Square +# 1 : Sinusoid +# 2 : Custom (1 entry per volume) +# 3 : Custom (3 column format) +# 4 : Interaction +# 10 : Empty (all zeros) +set fmri(shape2) 3 + +# Convolution (EV 2) +# 0 : None +# 1 : Gaussian +# 2 : Gamma +# 3 : Double-Gamma HRF +# 4 : Gamma basis functions +# 5 : Sine basis functions +# 6 : FIR basis functions +set fmri(convolve2) 3 + +# Convolve phase (EV 2) +set fmri(convolve_phase2) 0 + +# Apply temporal filtering (EV 2) +set fmri(tempfilt_yn2) 1 + +# Add temporal derivative (EV 2) +set fmri(deriv_yn2) 1 + +# Custom EV file (EV 2) +set fmri(custom2) "/vols/Data/fsldev/dataSets/fsl_course_data/fmri/fmri_fluency/word_shadowing.txt" + +# Orthogonalise EV 2 wrt EV 0 +set fmri(ortho2.0) 0 + +# Orthogonalise EV 2 wrt EV 1 +set fmri(ortho2.1) 0 + +# Orthogonalise EV 2 wrt EV 2 +set fmri(ortho2.2) 0 + +# Contrast & F-tests mode +# real : control real EVs +# orig : control original EVs +set fmri(con_mode_old) orig +set fmri(con_mode) orig + +# Display images for contrast_real 1 +set fmri(conpic_real.1) 1 + +# Title for contrast_real 1 +set fmri(conname_real.1) "Generation" + +# Real contrast_real vector 1 element 1 +set fmri(con_real1.1) 1 + +# Real contrast_real vector 1 element 2 +set fmri(con_real1.2) 0 + +# Real contrast_real vector 1 element 3 +set fmri(con_real1.3) 0 + +# Real contrast_real vector 1 element 4 +set fmri(con_real1.4) 0 + +# F-test 1 element 1 +set fmri(ftest_real1.1) 1 + +# Display images for contrast_real 2 +set fmri(conpic_real.2) 1 + +# Title for contrast_real 2 +set fmri(conname_real.2) "Shadow" + +# Real contrast_real vector 2 element 1 +set fmri(con_real2.1) 0 + +# Real contrast_real vector 2 element 2 +set fmri(con_real2.2) 0 + +# Real contrast_real vector 2 element 3 +set fmri(con_real2.3) 1.0 + +# Real contrast_real vector 2 element 4 +set fmri(con_real2.4) 0 + +# F-test 1 element 2 +set fmri(ftest_real1.2) 1 + +# Display images for contrast_real 3 +set fmri(conpic_real.3) 1 + +# Title for contrast_real 3 +set fmri(conname_real.3) "Mean" + +# Real contrast_real vector 3 element 1 +set fmri(con_real3.1) 1.0 + +# Real contrast_real vector 3 element 2 +set fmri(con_real3.2) 0 + +# Real contrast_real vector 3 element 3 +set fmri(con_real3.3) 1.0 + +# Real contrast_real vector 3 element 4 +set fmri(con_real3.4) 0 + +# F-test 1 element 3 +set fmri(ftest_real1.3) 0 + +# Display images for contrast_real 4 +set fmri(conpic_real.4) 1 + +# Title for contrast_real 4 +set fmri(conname_real.4) "Shad > Gen" + +# Real contrast_real vector 4 element 1 +set fmri(con_real4.1) -1 + +# Real contrast_real vector 4 element 2 +set fmri(con_real4.2) 0 + +# Real contrast_real vector 4 element 3 +set fmri(con_real4.3) 1 + +# Real contrast_real vector 4 element 4 +set fmri(con_real4.4) 0 + +# F-test 1 element 4 +set fmri(ftest_real1.4) 0 + +# Display images for contrast_real 5 +set fmri(conpic_real.5) 1 + +# Title for contrast_real 5 +set fmri(conname_real.5) "Gen > Shad" + +# Real contrast_real vector 5 element 1 +set fmri(con_real5.1) 1 + +# Real contrast_real vector 5 element 2 +set fmri(con_real5.2) 0 + +# Real contrast_real vector 5 element 3 +set fmri(con_real5.3) -1 + +# Real contrast_real vector 5 element 4 +set fmri(con_real5.4) 0 + +# F-test 1 element 5 +set fmri(ftest_real1.5) 0 + +# Display images for contrast_orig 1 +set fmri(conpic_orig.1) 1 + +# Title for contrast_orig 1 +set fmri(conname_orig.1) "Generation" + +# Real contrast_orig vector 1 element 1 +set fmri(con_orig1.1) 1 + +# Real contrast_orig vector 1 element 2 +set fmri(con_orig1.2) 0 + +# F-test 1 element 1 +set fmri(ftest_orig1.1) 1 + +# Display images for contrast_orig 2 +set fmri(conpic_orig.2) 1 + +# Title for contrast_orig 2 +set fmri(conname_orig.2) "Shadow" + +# Real contrast_orig vector 2 element 1 +set fmri(con_orig2.1) 0 + +# Real contrast_orig vector 2 element 2 +set fmri(con_orig2.2) 1.0 + +# F-test 1 element 2 +set fmri(ftest_orig1.2) 1 + +# Display images for contrast_orig 3 +set fmri(conpic_orig.3) 1 + +# Title for contrast_orig 3 +set fmri(conname_orig.3) "Mean" + +# Real contrast_orig vector 3 element 1 +set fmri(con_orig3.1) 1.0 + +# Real contrast_orig vector 3 element 2 +set fmri(con_orig3.2) 1.0 + +# F-test 1 element 3 +set fmri(ftest_orig1.3) 0 + +# Display images for contrast_orig 4 +set fmri(conpic_orig.4) 1 + +# Title for contrast_orig 4 +set fmri(conname_orig.4) "Shad > Gen" + +# Real contrast_orig vector 4 element 1 +set fmri(con_orig4.1) -1 + +# Real contrast_orig vector 4 element 2 +set fmri(con_orig4.2) 1 + +# F-test 1 element 4 +set fmri(ftest_orig1.4) 0 + +# Display images for contrast_orig 5 +set fmri(conpic_orig.5) 1 + +# Title for contrast_orig 5 +set fmri(conname_orig.5) "Gen > Shad" + +# Real contrast_orig vector 5 element 1 +set fmri(con_orig5.1) 1 + +# Real contrast_orig vector 5 element 2 +set fmri(con_orig5.2) -1 + +# F-test 1 element 5 +set fmri(ftest_orig1.5) 0 + +# Contrast masking - use >0 instead of thresholding? +set fmri(conmask_zerothresh_yn) 0 + +# Mask real contrast/F-test 1 with real contrast/F-test 2? +set fmri(conmask1_2) 0 + +# Mask real contrast/F-test 1 with real contrast/F-test 3? +set fmri(conmask1_3) 0 + +# Mask real contrast/F-test 1 with real contrast/F-test 4? +set fmri(conmask1_4) 0 + +# Mask real contrast/F-test 1 with real contrast/F-test 5? +set fmri(conmask1_5) 0 + +# Mask real contrast/F-test 1 with real contrast/F-test 6? +set fmri(conmask1_6) 0 + +# Mask real contrast/F-test 2 with real contrast/F-test 1? +set fmri(conmask2_1) 0 + +# Mask real contrast/F-test 2 with real contrast/F-test 3? +set fmri(conmask2_3) 0 + +# Mask real contrast/F-test 2 with real contrast/F-test 4? +set fmri(conmask2_4) 0 + +# Mask real contrast/F-test 2 with real contrast/F-test 5? +set fmri(conmask2_5) 0 + +# Mask real contrast/F-test 2 with real contrast/F-test 6? +set fmri(conmask2_6) 0 + +# Mask real contrast/F-test 3 with real contrast/F-test 1? +set fmri(conmask3_1) 0 + +# Mask real contrast/F-test 3 with real contrast/F-test 2? +set fmri(conmask3_2) 0 + +# Mask real contrast/F-test 3 with real contrast/F-test 4? +set fmri(conmask3_4) 0 + +# Mask real contrast/F-test 3 with real contrast/F-test 5? +set fmri(conmask3_5) 0 + +# Mask real contrast/F-test 3 with real contrast/F-test 6? +set fmri(conmask3_6) 0 + +# Mask real contrast/F-test 4 with real contrast/F-test 1? +set fmri(conmask4_1) 0 + +# Mask real contrast/F-test 4 with real contrast/F-test 2? +set fmri(conmask4_2) 0 + +# Mask real contrast/F-test 4 with real contrast/F-test 3? +set fmri(conmask4_3) 0 + +# Mask real contrast/F-test 4 with real contrast/F-test 5? +set fmri(conmask4_5) 0 + +# Mask real contrast/F-test 4 with real contrast/F-test 6? +set fmri(conmask4_6) 0 + +# Mask real contrast/F-test 5 with real contrast/F-test 1? +set fmri(conmask5_1) 0 + +# Mask real contrast/F-test 5 with real contrast/F-test 2? +set fmri(conmask5_2) 0 + +# Mask real contrast/F-test 5 with real contrast/F-test 3? +set fmri(conmask5_3) 0 + +# Mask real contrast/F-test 5 with real contrast/F-test 4? +set fmri(conmask5_4) 0 + +# Mask real contrast/F-test 5 with real contrast/F-test 6? +set fmri(conmask5_6) 0 + +# Mask real contrast/F-test 6 with real contrast/F-test 1? +set fmri(conmask6_1) 0 + +# Mask real contrast/F-test 6 with real contrast/F-test 2? +set fmri(conmask6_2) 0 + +# Mask real contrast/F-test 6 with real contrast/F-test 3? +set fmri(conmask6_3) 0 + +# Mask real contrast/F-test 6 with real contrast/F-test 4? +set fmri(conmask6_4) 0 + +# Mask real contrast/F-test 6 with real contrast/F-test 5? +set fmri(conmask6_5) 0 + +# Do contrast masking at all? +set fmri(conmask1_1) 0 + +########################################################## +# Now options that don't appear in the GUI + +# Alternative (to BETting) mask image +set fmri(alternative_mask) "" + +# Initial structural space registration initialisation transform +set fmri(init_initial_highres) "" + +# Structural space registration initialisation transform +set fmri(init_highres) "" + +# Standard space registration initialisation transform +set fmri(init_standard) "" + +# For full FEAT analysis: overwrite existing .feat output dir? +set fmri(overwrite_yn) 0 diff --git a/fsl_course/feat1/feedsRun1.py b/fsl_course/feat1/feedsRun1.py index 156a975..b0903d2 100755 --- a/fsl_course/feat1/feedsRun1.py +++ b/fsl_course/feat1/feedsRun1.py @@ -19,7 +19,7 @@ fslDir = os.environ['FSLDIR'] # copy FSF to test location and update paths origFeatDir = op.join(dataDir, "fsl_course_data/fmri/fmri_fluency") -origFSF = op.join(origFeatDir, "design.fsf") +origFSF = op.join(os.getcwd(), "design.fsf") origFSLDir = "/opt/fmrib/fsl-alpha" origDataDir = "/vols/Data/fsldev/dataSets" @@ -32,6 +32,6 @@ util.run(cmd) # run FEAT with new FSF -util.run("unset SGE_ROOT; feat {0}".format(op.join(outDir, "design.fsf"))) +util.run("unset SGE_ROOT; feat {0}".format(newFSF)) sys.exit(0) -- GitLab