====== QA Cluster Example Script ====== The script below is an example script that will run Syam's fMRI QA program, which performs a variety of metrics to assess data quality (SNR, SFNR, center of mass, standard deviations, etc). Naturally, this syntax is courtesy of Syam. ===== my_qsub_qa_script ===== Example usage: [user@head ~]$ qsub -v EXPERIMENT=MyExperiment.01 my_qsub_qa_script SUBJNUM 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 # For fmriqa_generate.pl to run you need to either navigate to your subject's directory or # list the file location in the command line below # Note that this example lists all required variables in the text below (other than the standard # EXPERIMENT=MyExperiment.01), but these could easily be incorporated as arguments # # Example: # qsub -v EXPERIMENT=MyExperiment.01 my_qsub_qa_script # # MyExperiment.01 is your experiment (e.g., TestSuite.01) # my_qsub_qa_script is your script's full name. #Perform QA SUBJECT=$1 #SUBJECT="20080505_12345" MAINFUNCDIR=${EXPERIMENT}/Data/Func cd ${MAINFUNCDIR}/${SUBJECT} fmriqa_generate.pl run*/run*.bxh QA # run*/run*.bxh is the input (this looks for all folders beginning with run, and all the files that match run*.bxh # within those folders) # QA is the output directory (this will create a QA folder in ${EXPERIMENT}/Data/Func) # -- 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--