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: