Mercurial > repos > pjbriggs > pal_finder
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