====== BET Example Cluster Script ====== The script below will run FSL's BET (brain extraction tool) on any MR image, provided it is in an image format that FSL can read. ===== qsub_fsl_bet ===== Example usage: [user@head ~]$ qsub -v EXPERIMENT=Dummy.01 qsub_fsl_bet EXPERIMENT/Data/Anat/99999/srs500.hdr \ EXPERIMENT/Data/Anat/99999 anat_brain 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 global EXPERIMENT, and inputs INFILE, OUTDIR, and OUTPRE # INFILE is the file path and name of the file to process # OUTDIR is where the output folder will go # OUTPRE is the output prefix of the file # Example: qsub -v EXPERIMENT=Dummy.01 qsub_fsl_bet \ # EXPERIMENT/Data/Anat/99999/srs500.hdr \ # EXPERIMENT/Data/Anat/99999 anat_brain INFILE=$1 OUTDIR=$2 OUTPRE=$3 # In this bash syntax, the preceding string "EXPERIMENT" is removed # from the string $INFILE. # Example: # If INFILE = EXPERIMENT/Data/Anat/99999/srs500.hdr # running ${INFILE#EXPERIMENT}, it becomes: # /Data/Anat/99999/srs500.hdr INFILE=${EXPERIMENT}${INFILE#EXPERIMENT} OUTDIR=${EXPERIMENT}${OUTDIR#EXPERIMENT} BETVALUE=0.05 mkdir -p $OUTDIR echo "bet $INFILE $OUTDIR/$OUTPRE -f $BETVALUE" bet $INFILE $OUTDIR/$OUTPRE -f $BETVALUE # -- 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--