User Tools

Site Tools


biac:cluster:examples:featlevel1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

biac:cluster:examples:featlevel1 [2014/08/04 16:03]
127.0.0.1 external edit
biac:cluster:examples:featlevel1 [2023/02/23 18:43]
Line 1: Line 1:
-====== 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: 
-<code> 
-[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 
-</code> 
- 
-Copy and edit code below: 
-<code bash> 
-#!/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 
-</code> 
- 
-===== qsub_feat_level1_onerun ===== 
-Example usage: 
-<code>[user@head ~]$ qsub -v EXPERIMENT=Dummy.01 qsub_feat_level1_onerun 99999 run01</code> 
- 
-Copy and edit code below: 
-<code bash> 
-#!/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"} 
- 
-source /etc/biac_sge.sh 
- 
-EXPERIMENT=`biacmount $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--  
- 
-</code> 
biac/cluster/examples/featlevel1.txt · Last modified: 2023/02/23 18:43 (external edit)