diff ceas_wrapper.sh @ 0:f411ce97a351 draft

Uploaded initial version 1.0.2-2
author pjbriggs
date Tue, 30 Jun 2015 07:08:05 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ceas_wrapper.sh	Tue Jun 30 07:08:05 2015 -0400
@@ -0,0 +1,113 @@
+#!/bin/sh -e
+#
+# Wrapper script to run CEAS as a Galaxy tool
+#
+# This runs the Cistrome versions of CEAS, which provides two executables:
+# - ceas (same as the "official" version)
+# - ceasBW (modified version that accepts a bigwig file as input)
+#
+# Usage: ceas_wrapper.sh $BED_IN $GDB_IN $LOG_OUT $PDF_OUT $XLS_OUT [OPTIONS]
+#
+# Initialise
+CEAS=ceas
+#
+# Process command line
+echo $*
+BED_IN=$1
+GDB_IN=$2
+LOG_OUT=$3
+PDF_OUT=$4
+XLS_OUT=$5
+#
+# Initialise other variables
+EXTRA_BED_IN=
+#
+# Collect remaining args
+OPTIONS=
+while [ ! -z "$6" ] ; do
+    if [ "$6" == "--bigwig" ] ; then
+	# Bigwig input, need to use 'ceasBW'
+	CEAS=ceasBW
+	OPTIONS="$OPTIONS --bigwig"
+    elif [ "$6" == "--length" ] ; then
+	# Need a chrom sizes file
+	chrom_sizes=$7
+	if [ ! -f "$chrom_sizes" ] ; then
+	    # If chrom sizes file doesn't already exist then attempt to
+	    # download the data from UCSC
+	    echo "WARNING no file $chrom_sizes"
+	    dbkey=$(echo $(basename $chrom_sizes) | cut -d'.' -f1)
+	    if [ $dbkey == '?' ] ; then
+		# DBkey not set, this is fatal
+		echo "ERROR genome build not set, cannot get sizes for '?'" >&2
+		echo "Assign a genome build to your input dataset and rerun" >&2
+		exit 1
+	    fi
+	    # Fetch the sizes using fetchChromSizes
+	    echo -n "Attempting to download chromosome sizes for $dbkey..."
+	    chrom_sizes=$(basename $chrom_sizes)
+	    fetchChromSizes $dbkey >$chrom_sizes 2>/dev/null
+	    if [ $? -ne 0 ] ; then
+		echo "failed"
+		echo "ERROR unable to fetch data for ${dbkey}" >&2
+		echo "Please check the genome build associated with your input dataset" >&2
+		echo "or update your Galaxy instance to include an appropriate .len file" >&2
+		exit 1
+	    else
+		echo "ok"
+	    fi
+	fi
+	OPTIONS="$OPTIONS --length $chrom_sizes"
+	shift
+    else
+	OPTIONS="$OPTIONS $6"
+    fi
+    shift
+done
+#
+# Convenience variables for local files
+base_name="ceas"
+log_file=${base_name}.log
+pdf_report=${base_name}.pdf
+xls_file=${base_name}.xls
+#
+# Get CEAS version
+echo Running $CEAS
+$CEAS --version >$log_file 2>/dev/null
+#
+# Construct and run CEAS command line
+ceas_cmd="$CEAS --name $base_name $OPTIONS -g $GDB_IN -b $BED_IN"
+echo "Running $ceas_cmd"
+$ceas_cmd >>$log_file 2>&1
+status=$?
+if [ $status -ne 0 ] ; then
+    echo "Error: log file tail:"
+    tail $log_file
+    echo "ERROR $CEAS exited with non-zero code: $status" >&2
+    exit $status
+fi
+#
+# Move outputs to final destination
+if [ -e $log_file ] ; then
+    echo "Moving $log_file to $LOG_OUT"
+    /bin/mv $log_file $LOG_OUT
+else
+    echo ERROR failed to make log file >&2
+    exit 1
+fi
+if [ -e $xls_file ] ; then
+    echo "Moving $xls_file to $XLS_OUT"
+    /bin/mv $xls_file $XLS_OUT
+else
+    echo ERROR failed to generate XLS file >&2
+    exit 1
+fi
+if [ -e $pdf_report ] ; then
+    echo "Moving $pdf_report to $PDF_OUT"
+    /bin/mv $pdf_report $PDF_OUT
+else
+    echo ERROR failed to generate PDF report >&2
+    exit 1
+fi
+#
+# Done