Mercurial > repos > peterjc > mira4_assembler
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") |
