Mercurial > repos > peterjc > mira4_assembler
comparison tools/mira4_0/mira4_convert.py @ 39:bbf14bb9607b draft default tip
planemo upload for repository https://github.com/peterjc/galaxy_mira/tree/master/tools/mira4_0 commit 89578746a1c5b29c84a173d8b2709f086f69a7b6
author | peterjc |
---|---|
date | Mon, 03 Jun 2019 13:29:00 -0400 |
parents | cee8f9005e43 |
children |
comparison
equal
deleted
inserted
replaced
38:cee8f9005e43 | 39:bbf14bb9607b |
---|---|
27 | 27 |
28 def run(cmd): | 28 def run(cmd): |
29 # Avoid using shell=True when we call subprocess to ensure if the Python | 29 # Avoid using shell=True when we call subprocess to ensure if the Python |
30 # script is killed, so too is the child process. | 30 # script is killed, so too is the child process. |
31 try: | 31 try: |
32 child = subprocess.Popen(cmd, universal_newlines=True, | 32 child = subprocess.Popen( |
33 stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 33 cmd, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE |
34 ) | |
34 except Exception as err: | 35 except Exception as err: |
35 sys.exit("Error invoking command:\n%s\n\n%s\n" % (" ".join(cmd), err)) | 36 sys.exit("Error invoking command:\n%s\n\n%s\n" % (" ".join(cmd), err)) |
36 # Use .communicate as can get deadlocks with .wait(), | 37 # Use .communicate as can get deadlocks with .wait(), |
37 stdout, stderr = child.communicate() | 38 stdout, stderr = child.communicate() |
38 return_code = child.returncode | 39 return_code = child.returncode |
39 if return_code: | 40 if return_code: |
40 cmd_str = " ".join(cmd) # doesn't quote spaces etc | 41 cmd_str = " ".join(cmd) # doesn't quote spaces etc |
41 if stderr and stdout: | 42 if stderr and stdout: |
42 sys.exit("Return code %i from command:\n%s\n\n%s\n\n%s" % (return_code, cmd_str, stdout, stderr)) | 43 sys.exit( |
44 "Return code %i from command:\n%s\n\n%s\n\n%s" | |
45 % (return_code, cmd_str, stdout, stderr) | |
46 ) | |
43 else: | 47 else: |
44 sys.exit("Return code %i from command:\n%s\n%s" % (return_code, cmd_str, stderr)) | 48 sys.exit( |
49 "Return code %i from command:\n%s\n%s" % (return_code, cmd_str, stderr) | |
50 ) | |
45 | 51 |
46 | 52 |
47 def get_version(mira_binary): | 53 def get_version(mira_binary): |
48 """Run MIRA to find its version number.""" | 54 """Run MIRA to find its version number.""" |
49 # At the commend line I would use: mira -v | head -n 1 | 55 # At the commend line I would use: mira -v | head -n 1 |
50 # however there is some pipe error when doing that here. | 56 # however there is some pipe error when doing that here. |
51 cmd = [mira_binary, "-v"] | 57 cmd = [mira_binary, "-v"] |
52 try: | 58 try: |
53 child = subprocess.Popen(cmd, | 59 child = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
54 stdout=subprocess.PIPE, | |
55 stderr=subprocess.STDOUT) | |
56 except Exception as err: | 60 except Exception as err: |
57 sys.stderr.write("Error invoking command:\n%s\n\n%s\n" % (" ".join(cmd), err)) | 61 sys.stderr.write("Error invoking command:\n%s\n\n%s\n" % (" ".join(cmd), err)) |
58 sys.exit(1) | 62 sys.exit(1) |
59 ver, tmp = child.communicate() | 63 ver, tmp = child.communicate() |
60 del child | 64 del child |
61 return ver.split("\n", 1)[0].strip() | 65 return ver.split("\n", 1)[0].strip() |
62 | 66 |
63 | 67 |
64 # Parse Command Line | 68 # Parse Command Line |
65 usage = """Galaxy MIRA4 wrapper script v%s - use as follows: | 69 usage = ( |
70 """Galaxy MIRA4 wrapper script v%s - use as follows: | |
66 | 71 |
67 $ python mira4_convert.py ... | 72 $ python mira4_convert.py ... |
68 | 73 |
69 This will run the MIRA miraconvert binary and collect its output files as directed. | 74 This will run the MIRA miraconvert binary and collect its output files as directed. |
70 """ % WRAPPER_VER | 75 """ |
76 % WRAPPER_VER | |
77 ) | |
71 parser = OptionParser(usage=usage) | 78 parser = OptionParser(usage=usage) |
72 parser.add_option("--input", dest="input", | 79 parser.add_option( |
73 default=None, metavar="FILE", | 80 "--input", dest="input", default=None, metavar="FILE", help="MIRA input filename" |
74 help="MIRA input filename") | 81 ) |
75 parser.add_option("-x", "--min_length", dest="min_length", | 82 parser.add_option( |
76 default="0", | 83 "-x", "--min_length", dest="min_length", default="0", help="Minimum contig length" |
77 help="Minimum contig length") | 84 ) |
78 parser.add_option("-y", "--min_cover", dest="min_cover", | 85 parser.add_option( |
79 default="0", | 86 "-y", |
80 help="Minimum average contig coverage") | 87 "--min_cover", |
81 parser.add_option("-z", "--min_reads", dest="min_reads", | 88 dest="min_cover", |
82 default="0", | 89 default="0", |
83 help="Minimum reads per contig") | 90 help="Minimum average contig coverage", |
84 parser.add_option("--maf", dest="maf", | 91 ) |
85 default="", metavar="FILE", | 92 parser.add_option( |
86 help="MIRA MAF output filename") | 93 "-z", "--min_reads", dest="min_reads", default="0", help="Minimum reads per contig" |
87 parser.add_option("--ace", dest="ace", | 94 ) |
88 default="", metavar="FILE", | 95 parser.add_option( |
89 help="ACE output filename") | 96 "--maf", dest="maf", default="", metavar="FILE", help="MIRA MAF output filename" |
90 parser.add_option("--bam", dest="bam", | 97 ) |
91 default="", metavar="FILE", | 98 parser.add_option( |
92 help="Unpadded BAM output filename") | 99 "--ace", dest="ace", default="", metavar="FILE", help="ACE output filename" |
93 parser.add_option("--fasta", dest="fasta", | 100 ) |
94 default="", metavar="FILE", | 101 parser.add_option( |
95 help="Unpadded FASTA output filename") | 102 "--bam", dest="bam", default="", metavar="FILE", help="Unpadded BAM output filename" |
96 parser.add_option("--cstats", dest="cstats", | 103 ) |
97 default="", metavar="FILE", | 104 parser.add_option( |
98 help="Contig statistics filename") | 105 "--fasta", |
99 parser.add_option("-v", "--version", dest="version", | 106 dest="fasta", |
100 default=False, action="store_true", | 107 default="", |
101 help="Show version and quit") | 108 metavar="FILE", |
109 help="Unpadded FASTA output filename", | |
110 ) | |
111 parser.add_option( | |
112 "--cstats", | |
113 dest="cstats", | |
114 default="", | |
115 metavar="FILE", | |
116 help="Contig statistics filename", | |
117 ) | |
118 parser.add_option( | |
119 "-v", | |
120 "--version", | |
121 dest="version", | |
122 default=False, | |
123 action="store_true", | |
124 help="Show version and quit", | |
125 ) | |
102 options, args = parser.parse_args() | 126 options, args = parser.parse_args() |
103 if args: | 127 if args: |
104 sys.exit("Expected options (e.g. --input example.maf), not arguments") | 128 sys.exit("Expected options (e.g. --input example.maf), not arguments") |
105 | 129 |
106 input_maf = options.input | 130 input_maf = options.input |
112 | 136 |
113 if "MIRA4" in os.environ: | 137 if "MIRA4" in os.environ: |
114 mira_path = os.environ["MIRA4"] | 138 mira_path = os.environ["MIRA4"] |
115 mira_convert = os.path.join(mira_path, "miraconvert") | 139 mira_convert = os.path.join(mira_path, "miraconvert") |
116 if not os.path.isfile(mira_convert): | 140 if not os.path.isfile(mira_convert): |
117 sys.exit("Missing miraconvert under $MIRA4, %r\nFolder contained: %s" | 141 sys.exit( |
118 % (mira_convert, ", ".join(os.listdir(mira_path)))) | 142 "Missing miraconvert under $MIRA4, %r\nFolder contained: %s" |
143 % (mira_convert, ", ".join(os.listdir(mira_path))) | |
144 ) | |
119 else: | 145 else: |
120 sys.stderr.write("DEBUG: Since $MIRA4 is not set, assuming mira binaries are on $PATH.\n") | 146 sys.stderr.write( |
147 "DEBUG: Since $MIRA4 is not set, assuming mira binaries are on $PATH.\n" | |
148 ) | |
121 mira_path = None | 149 mira_path = None |
122 mira_convert = "miraconvert" | 150 mira_convert = "miraconvert" |
123 | 151 |
124 mira_convert_ver = get_version(mira_convert) | 152 mira_convert_ver = get_version(mira_convert) |
125 if not mira_convert_ver.strip().startswith("4.0"): | 153 if not mira_convert_ver.strip().startswith("4.0"): |
126 sys.exit("This wrapper is for MIRA V4.0, not:\n%s\n%s" % (mira_convert_ver, mira_convert)) | 154 sys.exit( |
155 "This wrapper is for MIRA V4.0, not:\n%s\n%s" % (mira_convert_ver, mira_convert) | |
156 ) | |
127 if options.version: | 157 if options.version: |
128 print("%s, MIRA wrapper version %s" % (mira_convert_ver, WRAPPER_VER)) | 158 print("%s, MIRA wrapper version %s" % (mira_convert_ver, WRAPPER_VER)) |
129 sys.exit(0) | 159 sys.exit(0) |
130 | 160 |
131 if not input_maf: | 161 if not input_maf: |