# HG changeset patch
# User peterjc
# Date 1414429015 14400
# Node ID b0551f2a59869f6fe78602df63cffe959fba64d2
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
diff -r 000000000000 -r b0551f2a5986 tools/mummer/README.rst
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/mummer/README.rst Mon Oct 27 12:56:55 2014 -0400
@@ -0,0 +1,106 @@
+Galaxy wrapper for EffectiveT3 v1.0.1
+=====================================
+
+This wrapper is copyright 2014 by Peter Cock, The James Hutton Institute
+(formerly SCRI, Scottish Crop Research Institute), UK. All rights reserved.
+See the licence text below.
+
+This is a wrapper for the command suite MUMmer v3.
+
+S. Kurtz et al. (2004).
+Versatile and open software for comparing large genomes.
+Genome Biology (2004), 5:R12.
+http://dx.doi.org/10.1186/gb-2004-5-2-r12
+
+This wrapper is available to install into other Galaxy Instances via the Galaxy
+Tool Shed at http://toolshed.g2.bx.psu.edu/view/peterjc/mummer
+
+Automated Installation
+======================
+
+This should be straightforward, Galaxy should automatically download and install
+the MUMmer files.
+
+It also needs gnuplot, and ps2pdf.
+
+
+Manual Installation
+===================
+
+This expects MUMmer binaries (at least ``mummer``, ``nucmer``, ``promer``, and
+``mummerplot``) and the tools ``gnuplot`` and ``ps2pdf`` to be on the system
+``$PATH``.
+
+To install the wrapper copy or move the following files under the Galaxy tools
+folder, e.g. in a ``tools/mummer`` folder:
+
+* ``mummer.xml`` (the Galaxy tool definition)
+* ``mummer.py`` (the Python wrapper script)
+* ``README.rst`` (this file)
+
+You will also need to modify the ``tools_conf.xml`` file to tell Galaxy to offer the
+tool. Just add the line::
+
+
+
+If you wish to run the unit tests, also add this to ``tools_conf.xml.sample``
+and move/copy the ``test-data`` files under Galaxy's ``test-data`` folder. Then::
+
+ $ ./run_functional_tests.sh -id mummer_wrapper
+
+That's it.
+
+
+History
+=======
+
+======= ======================================================================
+Version Changes
+------- ----------------------------------------------------------------------
+v0.0.1 - Initial public release
+======= ======================================================================
+
+
+Developers
+==========
+
+Development is on GitHub at:
+https://github.com/peterjc/pico_galaxy/tree/master/tools/mummer
+
+For making the "Galaxy Tool Shed" http://toolshed.g2.bx.psu.edu/ tarball use
+the following command from the Galaxy root folder::
+
+ $ tar -czf mummer.tar.gz tools/mummer/README.rst tools/mummer/mummer.xml tools/mummer/mummer.py tools/mummer/tool_dependencies.xml
+
+Check this worked::
+
+ $ tar -tzf mummer.tar.gz
+ tools/mummer/README.rst
+ tools/mummer/mummer.xml
+ tools/mummer/mummer.py
+ tools/mummer/tool_dependencies.xml
+
+
+Licence (MIT)
+=============
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+NOTE: This is the licence for the Galaxy Wrapper only.
+MUMmer is available and licenced separately.
diff -r 000000000000 -r b0551f2a5986 tools/mummer/mummer.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/mummer/mummer.py Mon Oct 27 12:56:55 2014 -0400
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+"""MUMmer wrapper calling nucmer/promer/mummerplot etc,
+
+Takes the following command line options,
+1. FASTA filename of species A
+2. FASTA filename of species B
+3. Algorithm, nucmer or promer
+4. PNG output filename
+5. PDF output filename
+"""
+
+import os
+import sys
+import tempfile
+import shutil
+
+def stop_err( msg ):
+ sys.stderr.write("%s\n" % msg)
+ sys.exit(1)
+
+def run(cmd):
+ print(cmd)
+ return_code = os.system(cmd)
+ if return_code:
+ stop_err("Error %i from: %s" % (return_code, cmd))
+
+if "-v" in sys.argv [1:]or "--version" in sys.argv[1:]:
+ print("MUMmer wrapper v0.0.1\n")
+ os.system("nucmer --version")
+ os.system("promer --version")
+ os.system("mummerplot --version")
+ sys.exit(0)
+
+#Parse Command Line
+#TODO - optparse
+try:
+ fasta_a, fasta_b, algorithm, png_out, pdf_out = sys.argv[1:]
+except:
+ stop_err("Expect 5 arguments, got %i" % (len(sys.argv) - 1))
+
+
+valid_algo = ["mummer", "nucmer", "promer"]
+if algorithm not in valid_algo:
+ stop_err("Invalid algorithm argument %r, should be: %s" % (algorithm, ", ".join(valid_algo)))
+
+base_path = tempfile.mkdtemp()
+prefix = os.path.join(base_path, "ref_qry")
+coords = prefix + ".mums"
+#gnuplot = prefix + ".gp"
+ps_image = prefix + ".ps"
+png_image = prefix + ".png"
+
+if algorithm == "mummer":
+ #Add -mum as per example to find maximal unique matches between ref and query.
+ #Add the -b -c options to search both strands and report relative to forward strand
+ #which then matches the default dual-strand approach in nucmer and promer
+ cmd = '%s -mum -b -c "%s" "%s" > %s' % (algorithm, fasta_a, fasta_b, coords)
+else:
+ coords = "out.delta"
+ cmd = '%s "%s" "%s"' % (algorithm, fasta_a, fasta_b)
+run(cmd)
+
+# PNG
+# ===
+cmd = 'mummerplot -R "%s" -Q "%s" --png --large --prefix=%s %s' % (fasta_a, fasta_b, prefix, coords)
+run(cmd)
+shutil.move(png_image, png_out)
+
+# PS --> PDF
+# ==========
+# Using --large, puts "set size 3,3" in the gnuplot - which seems to mess up.
+# Problem here is the default bbox (BoundingBox) in the PS output is letter page size,
+# and even if we override that, at least when view the PS output in Adobe Illustrator
+# things don't seem to be lined up properly :(
+#
+# Using "set size 1,1" works better - which is what --small gives:
+cmd = 'mummerplot -R "%s" -Q "%s" --postscript --small --prefix=%s %s' % (fasta_a, fasta_b, prefix, coords)
+run(cmd)
+cmd = 'ps2pdf -dEPSCrop "%s" "%s"' % (ps_image, pdf_out)
+run(cmd)
+
+#Remove temp files...
+os.remove(coords) # Might not be under the temp directory...
+shutil.rmtree(base_path)
diff -r 000000000000 -r b0551f2a5986 tools/mummer/mummer.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/mummer/mummer.xml Mon Oct 27 12:56:55 2014 -0400
@@ -0,0 +1,68 @@
+
+ Draw dotplot with mummer/nucmer/promer/mummerplot
+
+ ps2pdf
+ nucmer
+ mummerplot
+ mummer
+
+
+mummer.py --version
+
+
+mummer.py "$fasta_a" "$fasta_b" $algorithm "$png_output" "$pdf_output"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+**What it does**
+
+Takes two FASTA files (*species A* and *species B*), compairs them using one
+of the MUMmer 3 tools (``mummer``, ``nucmer``, or ``promer``), comparing both
+strands, and then draws a dotplot using ``mummerplot``.
+
+The full MUMmer suite is more flexible and capable than this limited wrapper.
+
+**References**
+
+MUMmer manual: v3.22 http://mummer.sourceforge.net/manual/
+
+MUMmer tutorials: http://mummer.sourceforge.net/examples/
+
+If you use MUMmer 3, please cite:
+
+S. Kurtz et al. (2004).
+Versatile and open software for comparing large genomes.
+Genome Biology (2004), 5:R12.
+http://dx.doi.org/10.1186/gb-2004-5-2-r12
+
+This wrapper is available to install into other Galaxy Instances via the Galaxy
+Tool Shed at http://toolshed.g2.bx.psu.edu/view/peterjc/mummer
+
+
diff -r 000000000000 -r b0551f2a5986 tools/mummer/tool_dependencies.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/mummer/tool_dependencies.xml Mon Oct 27 12:56:55 2014 -0400
@@ -0,0 +1,6 @@
+
+
+
+
+
+