diff pal_finder_wrapper.sh @ 12:d26fb5260c67 draft

0.02.04.6: update to use conda to resolve dependencies.
author pjbriggs
date Thu, 15 Mar 2018 09:49:05 -0400
parents 84613d5f1713
children 3f8bf1a0403b
line wrap: on
line diff
--- a/pal_finder_wrapper.sh	Mon Jul 24 11:04:27 2017 -0400
+++ b/pal_finder_wrapper.sh	Thu Mar 15 09:49:05 2018 -0400
@@ -53,9 +53,6 @@
 # Maximum size reporting log file contents
 MAX_LINES=500
 #
-# Get helper functions
-. $(dirname $0)/pal_finder_wrapper_utils.sh
-#
 # Initialise locations of scripts, data and executables
 #
 # Set these in the environment to overide at execution time
@@ -66,18 +63,31 @@
 # Filter script is in the same directory as this script
 PALFINDER_FILTER=$(dirname $0)/pal_filter.py
 if [ ! -f $PALFINDER_FILTER ] ; then
-    fatal No $PALFINDER_FILTER script
+    echo No $PALFINDER_FILTER script >&2
+    exit 1
 fi
 #
 # Check that we have all the components
+function have_program() {
+    local program=$1
+    local got_program=$(which $program 2>&1 | grep "no $(basename $program) in")
+    if [ -z "$got_program" ] ; then
+	echo yes
+    else
+	echo no
+    fi	
+}
 if [ "$(have_program $PRIMER3_CORE_EXE)" == "no" ] ; then
-    fatal "primer3_core missing: ${PRIMER3_CORE_EXE} not found"
+    echo "ERROR primer3_core missing: ${PRIMER3_CORE_EXE} not found" >&2
+    exit 1
 fi
 if [ ! -f "${PALFINDER_DATA_DIR}/config.txt" ] ; then
-    fatal "pal_finder config.txt not found in ${PALFINDER_DATA_DIR}"
+    echo "ERROR pal_finder config.txt not found in ${PALFINDER_DATA_DIR}" >&2
+    exit 1
 fi
 if [ ! -f "${PALFINDER_SCRIPT_DIR}/pal_finder_v0.02.04.pl" ] ; then
-    fatal "pal_finder_v0.02.04.pl not found in ${PALFINDER_SCRIPT_DIR}"
+    echo "ERROR pal_finder_v0.02.04.pl not found in ${PALFINDER_SCRIPT_DIR}" >&2
+    exit 1
 fi
 #
 # Initialise parameters used in the config.txt file
@@ -108,7 +118,7 @@
 if [ $# -lt 2 ] ; then
   echo "Usage: $0 FASTQ_R1 FASTQ_R2 MICROSAT_SUMMARY PAL_SUMMARY [OPTIONS]"
   echo "       $0 --454    FASTA    MICROSAT_SUMMARY PAL_SUMMARY [OPTIONS]"
-  fatal "Bad command line"
+  exits
 fi
 if [ "$1" == "--454" ] ; then
     PLATFORM="454"
@@ -225,14 +235,16 @@
 # Check that primer3_core is available
 got_primer3=`which $PRIMER3_CORE_EXE 2>&1 | grep -v "no primer3_core in"`
 if [ -z "$got_primer3" ] ; then
-  fatal "primer3_core not found"
+  echo ERROR primer3_core not found >&2
+  exit 1
 fi
 #
 # Set up the working dir
 if [ "$PLATFORM" == "Illumina" ] ; then
     # Paired end Illumina data as input
     if [ $FASTQ_R1 == $FASTQ_R2 ] ; then
-	fatal ERROR R1 and R2 fastqs are the same file
+	echo ERROR R1 and R2 fastqs are the same file >&2
+	exit 1
     fi
     ln -s $FASTQ_R1
     ln -s $FASTQ_R2
@@ -252,6 +264,17 @@
 /bin/cp $PALFINDER_DATA_DIR/config.txt .
 #
 # Update the config.txt file with new values
+function set_config_value() {
+    local key=$1
+    local value=$2
+    local config_txt=$3
+    if [ -z "$value" ] ; then
+	echo "No value for $key, left as default"
+    else
+	echo Setting "$key" to "$value"
+	sed -i 's,^'"$key"' .*,'"$key"'  '"$value"',' $config_txt
+    fi
+}
 # Input files
 set_config_value platform $PLATFORM config.txt
 if [ "$PLATFORM" == "Illumina" ] ; then
@@ -276,7 +299,6 @@
 # Primer3 settings
 set_config_value primer3input Output/pr3in.txt config.txt
 set_config_value primer3output Output/pr3out.txt config.txt
-set_config_value keepPrimer3files 1 config.txt
 set_config_value primer3executable $PRIMER3_CORE_EXE config.txt
 set_config_value prNamePrefix ${PRIMER_PREFIX}_ config.txt
 set_config_value PRIMER_MISPRIMING_LIBRARY "$PRIMER_MISPRIMING_LIBRARY" config.txt
@@ -307,32 +329,20 @@
 #
 # Check that log ends with "Done!!" message
 if [ -z "$(tail -n 1 pal_finder.log | grep Done!!)" ] ; then
-    fatal ERROR pal_finder failed to complete successfully
-fi
-echo "### pal_finder finished ###"
-#
-# Check for errors in pal_finder output
-echo "### Checking for errors ###"
-if [ ! -z "$(grep 'primer3_core: Illegal element in PRIMER_PRODUCT_SIZE_RANGE' pal_finder.log)" ] ; then
-    echo ERROR primer3 terminated prematurely due to bad product size ranges
-    cat >&2 <<EOF
-ERROR primer3 terminated prematurely due to bad product size ranges
-
-Pal_finder generated bad ranges for the following read IDs:
-EOF
-    echo $(find_bad_primer_ranges Output/pr3in.txt) >&2
-    cat >&2 <<EOF
-
-This error can occur when input data contains short R1 reads and has
-has not been properly trimmed and filtered.
-
-EOF
-    fatal pal_finder failed to complete successfully
-EOF
+    echo ERROR pal_finder failed to complete successfully >&2
+    exit 1
 fi
 #
-# Sort outputs into a consistent order regardless of Perl version
-echo "### Sorting outputs ###"
+# Sort microsat_summary output
+echo "### Sorting microsat summary output ###"
+head -n 7 Output/microsat_summary.txt | sort >microsat_summary.sorted
+grep "^$" Output/microsat_summary.txt>>microsat_summary.sorted
+grep "^Microsat Type" Output/microsat_summary.txt >>microsat_summary.sorted
+tail -n +11 Output/microsat_summary.txt >>microsat_summary.sorted
+mv microsat_summary.sorted Output/microsat_summary.txt
+#
+# Sort PAL_summary output
+echo "### Sorting PAL summary output ###"
 head -1 Output/PAL_summary.txt > Output/PAL_summary.sorted.txt
 if [ "$PLATFORM" == "Illumina" ] ; then
     grep -v "^readPairID" Output/PAL_summary.txt | sort -k 1 >> Output/PAL_summary.sorted.txt
@@ -352,9 +362,11 @@
     fi
     tail -$MAX_LINES pal_filter.log
     if [ $? -ne 0 ] ; then
-	fatal $PALFINDER_FILTER exited with non-zero status
+	echo ERROR $PALFINDER_FILTER exited with non-zero status >&2
+	exit 1
     elif [ ! -f PAL_summary.filtered ] ; then
-	fatal no output from $PALFINDER_FILTER
+	echo ERROR no output from $PALFINDER_FILTER >&2
+	exit 1
     fi
 fi
 #
@@ -374,7 +386,8 @@
     if [ -f "$assembly" ] ; then
 	/bin/mv $assembly "$OUTPUT_ASSEMBLY"
     else
-	fatal no assembly output found
+	echo ERROR no assembly output found >&2
+	exit 1
     fi
 fi
 if [ ! -z "$OUTPUT_CONFIG_FILE" ] && [ -f config.txt ] ; then