User Tools

Site Tools


biac:cluster:examples:bet

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--
biac/cluster/examples/bet.txt · Last modified: 2023/02/23 18:43 (external edit)