comparison tools/mira4_0/mira4.py @ 31:fd95aaef8818 draft

planemo upload for repository https://github.com/peterjc/galaxy_mira/tree/master/tools/mira4_0 commit bc3d484c5cd68ddcf456db2fff489d584aa2034c
author peterjc
date Wed, 10 Feb 2016 09:07:39 -0500
parents 55ae131c5862
children 56b421d59805
comparison
equal deleted inserted replaced
30:b506e3b779fa 31:fd95aaef8818
11 11
12 #Do we need any PYTHONPATH magic? 12 #Do we need any PYTHONPATH magic?
13 from mira4_make_bam import make_bam 13 from mira4_make_bam import make_bam
14 14
15 WRAPPER_VER = "0.0.4" #Keep in sync with the XML file 15 WRAPPER_VER = "0.0.4" #Keep in sync with the XML file
16
17 def sys_exit(msg, err=1):
18 sys.stderr.write(msg+"\n")
19 sys.exit(err)
20 16
21 17
22 def get_version(mira_binary): 18 def get_version(mira_binary):
23 """Run MIRA to find its version number""" 19 """Run MIRA to find its version number"""
24 # At the commend line I would use: mira -v | head -n 1 20 # At the commend line I would use: mira -v | head -n 1
69 out_log = options.log 65 out_log = options.log
70 66
71 try: 67 try:
72 mira_path = os.environ["MIRA4"] 68 mira_path = os.environ["MIRA4"]
73 except KeyError: 69 except KeyError:
74 sys_exit("Environment variable $MIRA4 not set") 70 sys.exit("Environment variable $MIRA4 not set")
75 mira_binary = os.path.join(mira_path, "mira") 71 mira_binary = os.path.join(mira_path, "mira")
76 if not os.path.isfile(mira_binary): 72 if not os.path.isfile(mira_binary):
77 sys_exit("Missing mira under $MIRA4, %r\nFolder contained: %s" 73 sys.exit("Missing mira under $MIRA4, %r\nFolder contained: %s"
78 % (mira_binary, ", ".join(os.listdir(mira_path)))) 74 % (mira_binary, ", ".join(os.listdir(mira_path))))
79 mira_convert = os.path.join(mira_path, "miraconvert") 75 mira_convert = os.path.join(mira_path, "miraconvert")
80 if not os.path.isfile(mira_convert): 76 if not os.path.isfile(mira_convert):
81 sys_exit("Missing miraconvert under $MIRA4, %r\nFolder contained: %s" 77 sys.exit("Missing miraconvert under $MIRA4, %r\nFolder contained: %s"
82 % (mira_convert, ", ".join(os.listdir(mira_path)))) 78 % (mira_convert, ", ".join(os.listdir(mira_path))))
83 79
84 mira_ver = get_version(mira_binary) 80 mira_ver = get_version(mira_binary)
85 if not mira_ver.strip().startswith("4.0"): 81 if not mira_ver.strip().startswith("4.0"):
86 sys_exit("This wrapper is for MIRA V4.0, not:\n%s\n%s" % (mira_ver, mira_binary)) 82 sys.exit("This wrapper is for MIRA V4.0, not:\n%s\n%s" % (mira_ver, mira_binary))
87 mira_convert_ver = get_version(mira_convert) 83 mira_convert_ver = get_version(mira_convert)
88 if not mira_convert_ver.strip().startswith("4.0"): 84 if not mira_convert_ver.strip().startswith("4.0"):
89 sys_exit("This wrapper is for MIRA V4.0, not:\n%s\n%s" % (mira_ver, mira_convert)) 85 sys.exit("This wrapper is for MIRA V4.0, not:\n%s\n%s" % (mira_ver, mira_convert))
90 if options.version: 86 if options.version:
91 print "%s, MIRA wrapper version %s" % (mira_ver, WRAPPER_VER) 87 print "%s, MIRA wrapper version %s" % (mira_ver, WRAPPER_VER)
92 if mira_ver != mira_convert_ver: 88 if mira_ver != mira_convert_ver:
93 print "WARNING: miraconvert %s" % mira_convert_ver 89 print "WARNING: miraconvert %s" % mira_convert_ver
94 sys.exit(0) 90 sys.exit(0)
95 91
96 if not manifest: 92 if not manifest:
97 sys_exit("Manifest is required") 93 sys.exit("Manifest is required")
98 elif not os.path.isfile(manifest): 94 elif not os.path.isfile(manifest):
99 sys_exit("Missing input MIRA manifest file: %r" % manifest) 95 sys.exit("Missing input MIRA manifest file: %r" % manifest)
100 96
101 97
102 try: 98 try:
103 threads = int(os.environ.get("GALAXY_SLOTS", "1")) 99 threads = int(os.environ.get("GALAXY_SLOTS", "1"))
104 except ValueError: 100 except ValueError:
147 sys.stderr.write("\n%s\nEnd of manifest\n%s\n" % ("="*60, "="*60)) 143 sys.stderr.write("\n%s\nEnd of manifest\n%s\n" % ("="*60, "="*60))
148 144
149 145
150 def collect_output(temp, name, handle): 146 def collect_output(temp, name, handle):
151 """Moves files to the output filenames (global variables).""" 147 """Moves files to the output filenames (global variables)."""
152 n3 = (temp, name, name, name)
153 f = "%s/%s_assembly/%s_d_results" % (temp, name, name) 148 f = "%s/%s_assembly/%s_d_results" % (temp, name, name)
154 if not os.path.isdir(f): 149 if not os.path.isdir(f):
155 log_manifest(manifest) 150 log_manifest(manifest)
156 sys_exit("Missing output folder") 151 sys.exit("Missing output folder")
157 if not os.listdir(f): 152 if not os.listdir(f):
158 log_manifest(manifest) 153 log_manifest(manifest)
159 sys_exit("Empty output folder") 154 sys.exit("Empty output folder")
160 missing = [] 155 missing = []
161 156
162 old_maf = "%s/%s_out.maf" % (f, name) 157 old_maf = "%s/%s_out.maf" % (f, name)
163 if not os.path.isfile(old_maf): 158 if not os.path.isfile(old_maf):
164 #Triggered extractLargeContigs.sh? 159 #Triggered extractLargeContigs.sh?
199 msg = make_bam(mira_convert, out_maf, ref_fasta, out_bam, handle) 194 msg = make_bam(mira_convert, out_maf, ref_fasta, out_bam, handle)
200 else: 195 else:
201 #Not collecting the MAF file, use original location 196 #Not collecting the MAF file, use original location
202 msg = make_bam(mira_convert, old_maf, ref_fasta, out_bam, handle) 197 msg = make_bam(mira_convert, old_maf, ref_fasta, out_bam, handle)
203 if msg: 198 if msg:
204 sys_exit(msg) 199 sys.exit(msg)
205 200
206 def clean_up(temp, name): 201 def clean_up(temp, name):
207 folder = "%s/%s_assembly" % (temp, name) 202 folder = "%s/%s_assembly" % (temp, name)
208 if os.path.isdir(folder): 203 if os.path.isdir(folder):
209 shutil.rmtree(folder) 204 shutil.rmtree(folder)
275 handle.write("Return error code %i from command:\n" % return_code) 270 handle.write("Return error code %i from command:\n" % return_code)
276 handle.write(cmd + "\n") 271 handle.write(cmd + "\n")
277 handle.close() 272 handle.close()
278 clean_up(temp, name) 273 clean_up(temp, name)
279 log_manifest(manifest) 274 log_manifest(manifest)
280 sys_exit("Return error code %i from command:\n%s" % (return_code, cmd), 275 sys.stderr.write("Return error code %i from command:\n" % return_code)
281 return_code) 276 sys.stderr.write(cmd + "\n")
277 sys.exit(eturn_code)
282 handle.flush() 278 handle.flush()
283 279
284 if os.path.isfile("MIRA_assembly/MIRA_d_results/ec.log"): 280 if os.path.isfile("MIRA_assembly/MIRA_d_results/ec.log"):
285 handle.write("\n") 281 handle.write("\n")
286 handle.write("====================== Extract Large Contigs failed ==========================\n") 282 handle.write("====================== Extract Large Contigs failed ==========================\n")