User Tools

Site Tools


biac:cluster:examples:featlevel1

FEAT Level 1 Example Cluster Scripts

These example scripts will allow you to run all of the FEAT level one analyses (intra-subject run-by-run) in parallel on the cluster. The script “qsub_feat_level1” calls a cluster-friendly script called “qsub_feat_level1_onerun” for each of the runs in a session. By running this way, all runs are submitted at the same time, which will decrease the amount of processing time it takes to get the first level results.

As with previous FSL scripts, the 1st level template fsf file must first be created using the FEAT GUI and saved with keywords replacing any fields that are subject dependent.

qsub_feat_level1

Example usage:

[user@head ~]$ ./qsub_feat_level1 99999

Or, if the file has been set (using the "chmod" command) to have execute properties:
[user@head ~]$ qsub_feat_level1 99999

Copy and edit code below:

#!/bin/bash
# First input is exam number
 
SUBJ=$1
 
# Loop through the runs submitting a job to grid engine for each run
for i in 01 02 03 04 05 06 07 08
do
 
# Call qsub_feat_level1_onerun
# Creates an fsf file and runs feat on that fsf file for one run
# Two input arguments:  Subject ID and run name
qsub -v EXPERIMENT=Dummy.01 qsub_feat_level1_onerun $SUBJ run${i}
 
done

qsub_feat_level1_onerun

Example usage:

[user@head ~]$ qsub -v EXPERIMENT=Dummy.01 qsub_feat_level1_onerun 99999 run01

Copy and edit code below:

#!/bin/sh
 
# This is a BIAC template script for jobs on the cluster
# You have to provide the Experiment on command line  
# when you submit the job the cluster.
#
# >  qsub -v EXPERIMENT=Dummy.01  script.sh args
#
# There are 2 USER sections 
#  1. USER DIRECTIVE: If you want mail notifications when
#     your job is completed or fails you need to set the 
#     correct email address.
#		   
#  2. USER SCRIPT: Add the user script in this section.
#     Within this section you can access your experiment 
#     folder using $EXPERIMENT. All paths are relative to this variable
#     eg: $EXPERIMENT/Data $EXPERIMENT/Analysis	
#     By default all terminal output is routed to the " Analysis "
#     folder under the Experiment directory i.e. $EXPERIMENT/Analysis
#     To change this path, set the OUTDIR variable in this section
#     to another location under your experiment folder
#     eg: OUTDIR=$EXPERIMENT/Analysis/GridOut 	
#     By default on successful completion the job will return 0
#     If you need to set another return code, set the RETURNCODE
#     variable in this section. To avoid conflict with system return 
#     codes, set a RETURNCODE higher than 100.
#     eg: RETURNCODE=110
#     Arguments to the USER SCRIPT are accessible in the usual fashion
#     eg:  $1 $2 $3
# The remaining sections are setup related and don't require
# modifications for most scripts. They are critical for access
# to your data  	 
 
# --- BEGIN GLOBAL DIRECTIVE -- 
#$ -S /bin/sh
#$ -o $HOME/$JOB_NAME.$JOB_ID.out
#$ -e $HOME/$JOB_NAME.$JOB_ID.out
#$ -m ea
# -- END GLOBAL DIRECTIVE -- 
 
# -- BEGIN PRE-USER --
#Name of experiment whose data you want to access 
EXPERIMENT=${EXPERIMENT:?"Experiment not provided"}
 
EXPERIMENT=`findexp $EXPERIMENT`
EXPERIMENT=${EXPERIMENT:?"Returned NULL Experiment"}
 
if [ $EXPERIMENT = "ERROR" ]
then
	exit 32
else 
#Timestamp
echo "----JOB [$JOB_NAME.$JOB_ID] START [`date`] on HOST [$HOSTNAME]----" 
# -- END PRE-USER --
# **********************************************************
 
# -- BEGIN USER DIRECTIVE --
# Send notifications to the following address
#$ -M user@somewhere.edu
 
# -- END USER DIRECTIVE --
 
# -- BEGIN USER SCRIPT --
# User script goes here
 
#Need to input EXPERIMENT, SUBJ and RUN NAME
#Example qsub -v EXPERIMENT=Dummy.01 qsub_feat_level1_onerun 99999 run01
SUBJ=$1
RUN=$2
 
#Set the directories
FUNCDIR=$EXPERIMENT/Data/FSLFunc/$SUBJ
BEHAVDIR=$EXPERIMENT/Data/Behav/$SUBJ/FSL/$RUN
ANAT=$EXPERIMENT/Data/$SUBJ/anat_brain.nii.gz
TEMPLATEDIR=$EXPERIMENT/Scripts/FSL
OUTDIR=$EXPERIMENT/Analysis/FSL/$SUBJ
 
#Set some variables
OUTPUT=$OUTDIR/$RUN
DATA=$FUNCDIR/$RUN/${RUN}.hdr
ORIENT=$FUNCDIR/ORIENT.mat
 
TARG=$BEHAVDIR/Targ.stf
NEUT=$BEHAVDIR/NeutCorr.stf
SCARY=$BEHAVDIR/ScaryCorr.stf
 
mkdir -p $OUTDIR
cd $TEMPLATEDIR
 
#Makes the fsf file using the template
for i in 'template.fsf'; do
sed -e 's@OUTPUT@'$OUTPUT'@g' \
-e 's@ANAT@'$ANAT'@g' \
-e 's@ORIENT@'$ORIENT'@g' \
-e 's@TARG@'$TARG'@g' \
-e 's@NEUT@'$NEUT'@g' \
-e 's@SCARY@'$SCARY'@g' \
-e 's@FSLDIR@'$FSLDIR'@g' \
-e 's@DATA@'$DATA'@g' <$i> ${OUTDIR}/FEAT_${RUN}.fsf
done
 
#Run feat analysis
feat ${OUTDIR}/FEAT_${RUN}.fsf
 
 
 
# -- END USER SCRIPT -- #
 
# **********************************************************
# -- BEGIN POST-USER -- 
echo "----JOB [$JOB_NAME.$JOB_ID] STOP [`date`]----" 
OUTDIR=${OUTDIR:-$EXPERIMENT/Analysis}
mv $HOME/$JOB_NAME.$JOB_ID.out $OUTDIR/$JOB_NAME.$JOB_ID.out	 
RETURNCODE=${RETURNCODE:-0}
exit $RETURNCODE
fi
# -- END POST USER--
biac/cluster/examples/featlevel1.txt · Last modified: 2023/02/23 18:43 (external edit)