Mercurial > repos > kuyt002 > mummer_toolsuite
diff MUMmer/mummer_tool.sh @ 0:61f30d177448 default tip
initial commit on Mummer toolsuite on toolshed
author | eric |
---|---|
date | Tue, 31 Mar 2015 14:19:49 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MUMmer/mummer_tool.sh Tue Mar 31 14:19:49 2015 +0200 @@ -0,0 +1,128 @@ +#!/bin/bash +## use #!/bin/bash -x for debugging + +## Galaxy wrapper for MUMmer (nucmer/promer) +## Alex Bossers, CVI of Wageningen UR, NL +## alex_dot_bossers_at_wur_dot_nl +## +## Sep 2010 +## +## Wrapper runs MUMmer nucmer/promer and additional args +## Calculates the comparison scores (delta and optional coords file) +## Generates the optional STATIC comparison mummerplot to png (from delta file) +## +## finally the script renames (optional) output files to outfiles expected by Galaxy +## +## +## INPUT args: +## nucmer_tool.sh $input_ref $input_query $out_delta $out_coords $out_png $logfile +## @0 @1 @2 @3 @4 @5 +## $algorithm $keep_delta $make_coords $keep_log $make_image $cmd_extra +## @6 @7 @8 @9 @10 @11 +## + +# Function to send error messages. +log_err() { echo "$@" 1>&2; } +# path to where mummer suite is installed +# adjust this for your machine +# If mummer is available in system path, leave empty +# when using different path make sure the trailing slash is added. +# mum_path = /opt/Mummer23/Mummer/ +mum_path="" +tmp_path="/tmp/mummertmp/" + +if [ $num_path"$(which mummer)" == "" ] && [ "$num_path" == "" ]; then + log_err "mummer is not available in system path and not declarated in mum_path. Please install mummer." + exit 127 +fi + +# since we have more than 9 arguments we need to shift the sections or use own array +args=("$@") +# to keep things readible assign vars +input_ref="${args[0]}" +input_query="${args[1]}" +out_delta="${args[2]}" +out_coords="${args[3]}" +out_png="${args[4]}" +logfile="${args[5]}" +algorithm="${args[6]}" +keep_delta="${args[7]}" +make_coords="${args[8]}" +keep_log="${args[9]}" +make_image="${args[10]}" +cmd_extra="${args[11]}" + +[ -d $tmp_path ] || mkdir $tmp_path +cd $tmp_path + +# enable/disable the STDOUT log file +if [ "$keep_log" == "yes" ]; then + logfile_c="2>$logfile" + logfile_a="2>>$logfile" +else + #dump to dev/null + logfile_c="2>&-" + logfile_a="2>&-" +fi + +# extra mummer cmd line options + +## generate coords file on the fly? +if [ "$make_coords" == "yes" ]; then + options=" --coords" +fi +## extra cmd line args to be concatenated in options? We need to prevent extra spaces! +if [ "$cmd_extra" != "" ]; then + if [ "$options" == "" ]; then + options=" $cmd_extra" + else + options="$options $cmd_extra" + fi +fi + +# run nucmer/promer +# May only run Promer and Nucmer +echo $algorithm +if [[ $algorithm =~ ...mer$ ]]; then + eval "$mum_path$algorithm$options $input_ref $input_query $logfile_c" +else + log_err 'ERROR, algorithm does not conform to ...mer' + exit 1 +fi + + +## generate large png if option make_image = yes +## suppress error from mummerplot since some is deprecated but not a real error +## error can be easily avoided by modifying the source of mummerplot... just in case +## however we need to check if a valid png was generated. This is not the case is alignment is none +## 1 is stderr and 2 stdout. redirect to dev/null +if [ "${make_image}" == "yes" ]; then + eval "$mum_path mummerplot --large --png out.delta 1>&- $logfile_a" + if [ -f "out.png" ]; then + mv out.png $out_png + #cleanup temp gnuplot file + rm out.gp + else + log_err "not exist the req png file!" + exit 1 + fi + + ## clean up remaining files + rm out.fplot + rm out.rplot + +fi + +# keep/rename or delete delta file +if [ "$keep_delta" == "yes" ]; then + mv out.delta "$out_delta" +else + rm out.delta +fi + +# keep/rename coords file if it was created +if [ "$make_coords" == "yes" ]; then + mv out.coords "$out_coords" +fi +# end script +exit 0 \ No newline at end of file