Mercurial > repos > peterjc > mummer
annotate tools/mummer/mummer.py @ 4:5f5a358b281f draft
v0.0.5 internal changes
author | peterjc |
---|---|
date | Wed, 05 Aug 2015 11:34:31 -0400 |
parents | 8f93c1b7609e |
children | 683ea5ab0008 |
rev | line source |
---|---|
0
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
1 #!/usr/bin/env python |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
2 """MUMmer wrapper calling nucmer/promer/mummerplot etc, |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
3 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
4 Takes the following command line options, |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
5 1. FASTA filename of species A |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
6 2. FASTA filename of species B |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
7 3. Algorithm, nucmer or promer |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
8 4. PNG output filename |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
9 5. PDF output filename |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
10 """ |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
11 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
12 import os |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
13 import sys |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
14 import tempfile |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
15 import shutil |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
16 |
4 | 17 def sys_exit( msg ): |
0
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
18 sys.stderr.write("%s\n" % msg) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
19 sys.exit(1) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
20 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
21 def run(cmd): |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
22 print(cmd) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
23 return_code = os.system(cmd) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
24 if return_code: |
4 | 25 sys_exit("Error %i from: %s" % (return_code, cmd)) |
0
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
26 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
27 if "-v" in sys.argv [1:]or "--version" in sys.argv[1:]: |
2
8f93c1b7609e
Uploaded v0.0.3, dependency on GhostScript package to automatically install ps2pdf
peterjc
parents:
0
diff
changeset
|
28 print("MUMmer wrapper v0.0.3\n") |
8f93c1b7609e
Uploaded v0.0.3, dependency on GhostScript package to automatically install ps2pdf
peterjc
parents:
0
diff
changeset
|
29 # TODO - How to get a version string from the mummer binary? |
0
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
30 os.system("nucmer --version") |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
31 os.system("promer --version") |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
32 os.system("mummerplot --version") |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
33 sys.exit(0) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
34 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
35 #Parse Command Line |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
36 #TODO - optparse |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
37 try: |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
38 fasta_a, fasta_b, algorithm, png_out, pdf_out = sys.argv[1:] |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
39 except: |
4 | 40 sys_exit("Expect 5 arguments, got %i" % (len(sys.argv) - 1)) |
0
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
41 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
42 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
43 valid_algo = ["mummer", "nucmer", "promer"] |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
44 if algorithm not in valid_algo: |
4 | 45 sys_exit("Invalid algorithm argument %r, should be: %s" % (algorithm, ", ".join(valid_algo))) |
0
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
46 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
47 base_path = tempfile.mkdtemp() |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
48 prefix = os.path.join(base_path, "ref_qry") |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
49 coords = prefix + ".mums" |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
50 #gnuplot = prefix + ".gp" |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
51 ps_image = prefix + ".ps" |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
52 png_image = prefix + ".png" |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
53 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
54 if algorithm == "mummer": |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
55 #Add -mum as per example to find maximal unique matches between ref and query. |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
56 #Add the -b -c options to search both strands and report relative to forward strand |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
57 #which then matches the default dual-strand approach in nucmer and promer |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
58 cmd = '%s -mum -b -c "%s" "%s" > %s' % (algorithm, fasta_a, fasta_b, coords) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
59 else: |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
60 coords = "out.delta" |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
61 cmd = '%s "%s" "%s"' % (algorithm, fasta_a, fasta_b) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
62 run(cmd) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
63 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
64 # PNG |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
65 # === |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
66 cmd = 'mummerplot -R "%s" -Q "%s" --png --large --prefix=%s %s' % (fasta_a, fasta_b, prefix, coords) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
67 run(cmd) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
68 shutil.move(png_image, png_out) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
69 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
70 # PS --> PDF |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
71 # ========== |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
72 # Using --large, puts "set size 3,3" in the gnuplot - which seems to mess up. |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
73 # Problem here is the default bbox (BoundingBox) in the PS output is letter page size, |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
74 # and even if we override that, at least when view the PS output in Adobe Illustrator |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
75 # things don't seem to be lined up properly :( |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
76 # |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
77 # Using "set size 1,1" works better - which is what --small gives: |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
78 cmd = 'mummerplot -R "%s" -Q "%s" --postscript --small --prefix=%s %s' % (fasta_a, fasta_b, prefix, coords) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
79 run(cmd) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
80 cmd = 'ps2pdf -dEPSCrop "%s" "%s"' % (ps_image, pdf_out) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
81 run(cmd) |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
82 |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
83 #Remove temp files... |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
84 os.remove(coords) # Might not be under the temp directory... |
b0551f2a5986
Uploaded v0.0.1, essentially a preview (previously only on the TestToolShed). No tests yet, no gnuplot or ps2pdf dependency yet.
peterjc
parents:
diff
changeset
|
85 shutil.rmtree(base_path) |