Mercurial > repos > peterjc > mira4_assembler
comparison tools/mira4_0/mira4_bait.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 |
|---|---|
| 6 import subprocess | 6 import subprocess |
| 7 import shutil | 7 import shutil |
| 8 import time | 8 import time |
| 9 | 9 |
| 10 WRAPPER_VER = "0.0.5" #Keep in sync with the XML file | 10 WRAPPER_VER = "0.0.5" #Keep in sync with the XML file |
| 11 | |
| 12 def sys_exit(msg, err=1): | |
| 13 sys.stderr.write(msg+"\n") | |
| 14 sys.exit(err) | |
| 15 | 11 |
| 16 | 12 |
| 17 def get_version(mira_binary): | 13 def get_version(mira_binary): |
| 18 """Run MIRA to find its version number""" | 14 """Run MIRA to find its version number""" |
| 19 # At the commend line I would use: mira -v | head -n 1 | 15 # At the commend line I would use: mira -v | head -n 1 |
| 32 if "invalid option" in ver.split("\n", 1)[0]: | 28 if "invalid option" in ver.split("\n", 1)[0]: |
| 33 for line in ver.split("\n", 1): | 29 for line in ver.split("\n", 1): |
| 34 if " version " in line: | 30 if " version " in line: |
| 35 line = line.split() | 31 line = line.split() |
| 36 return line[line.index("version")+1].rstrip(")") | 32 return line[line.index("version")+1].rstrip(")") |
| 37 sys_exit("Could not determine MIRA version:\n%s" % ver) | 33 sys.exit("Could not determine MIRA version:\n%s" % ver) |
| 38 return ver.split("\n", 1)[0] | 34 return ver.split("\n", 1)[0] |
| 39 | 35 |
| 40 try: | 36 try: |
| 41 mira_path = os.environ["MIRA4"] | 37 mira_path = os.environ["MIRA4"] |
| 42 except KeyError: | 38 except KeyError: |
| 43 sys_exit("Environment variable $MIRA4 not set") | 39 sys.exit("Environment variable $MIRA4 not set") |
| 44 mira_binary = os.path.join(mira_path, "mirabait") | 40 mira_binary = os.path.join(mira_path, "mirabait") |
| 45 if not os.path.isfile(mira_binary): | 41 if not os.path.isfile(mira_binary): |
| 46 sys_exit("Missing mirabait under $MIRA4, %r\nFolder contained: %s" | 42 sys.exit("Missing mirabait under $MIRA4, %r\nFolder contained: %s" |
| 47 % (mira_binary, ", ".join(os.listdir(mira_path)))) | 43 % (mira_binary, ", ".join(os.listdir(mira_path)))) |
| 48 mira_ver = get_version(mira_binary) | 44 mira_ver = get_version(mira_binary) |
| 49 if not mira_ver.strip().startswith("4.0"): | 45 if not mira_ver.strip().startswith("4.0"): |
| 50 sys_exit("This wrapper is for MIRA V4.0, not:\n%s" % mira_ver) | 46 sys.exit("This wrapper is for MIRA V4.0, not:\n%s" % mira_ver) |
| 51 if "-v" in sys.argv or "--version" in sys.argv: | 47 if "-v" in sys.argv or "--version" in sys.argv: |
| 52 print "%s, MIRA wrapper version %s" % (mira_ver, WRAPPER_VER) | 48 print "%s, MIRA wrapper version %s" % (mira_ver, WRAPPER_VER) |
| 53 sys.exit(0) | 49 sys.exit(0) |
| 54 | 50 |
| 55 | 51 |
| 58 if format.startswith("fastq"): | 54 if format.startswith("fastq"): |
| 59 format = "fastq" | 55 format = "fastq" |
| 60 elif format == "mira": | 56 elif format == "mira": |
| 61 format = "maf" | 57 format = "maf" |
| 62 elif format != "fasta": | 58 elif format != "fasta": |
| 63 sys_exit("Was not expected format %r" % format) | 59 sys.exit("Was not expected format %r" % format) |
| 64 | 60 |
| 65 assert out_file.endswith(".dat") | 61 assert out_file.endswith(".dat") |
| 66 out_file_stem = out_file[:-4] | 62 out_file_stem = out_file[:-4] |
| 67 | 63 |
| 68 cmd_list = [mira_binary, "-f", format, "-t", format, | 64 cmd_list = [mira_binary, "-f", format, "-t", format, |
| 72 pass | 68 pass |
| 73 elif output_choice == "neg": | 69 elif output_choice == "neg": |
| 74 #Invert the selection... | 70 #Invert the selection... |
| 75 cmd_list.insert(1, "-i") | 71 cmd_list.insert(1, "-i") |
| 76 else: | 72 else: |
| 77 sys_exit("Output choice should be 'pos' or 'neg', not %r" % output_choice) | 73 sys.exit("Output choice should be 'pos' or 'neg', not %r" % output_choice) |
| 78 if strand_choice == "both": | 74 if strand_choice == "both": |
| 79 pass | 75 pass |
| 80 elif strand_choice == "fwd": | 76 elif strand_choice == "fwd": |
| 81 #Ingore reverse strand... | 77 #Ingore reverse strand... |
| 82 cmd_list.insert(1, "-r") | 78 cmd_list.insert(1, "-r") |
| 83 else: | 79 else: |
| 84 sys_exit("Strand choice should be 'both' or 'fwd', not %r" % strand_choice) | 80 sys.exit("Strand choice should be 'both' or 'fwd', not %r" % strand_choice) |
| 85 | 81 |
| 86 cmd = " ".join(cmd_list) | 82 cmd = " ".join(cmd_list) |
| 87 #print cmd | 83 #print cmd |
| 88 start_time = time.time() | 84 start_time = time.time() |
| 89 try: | 85 try: |
| 101 return_code = child.returncode | 97 return_code = child.returncode |
| 102 print "mirabait took %0.2f minutes" % (run_time / 60.0) | 98 print "mirabait took %0.2f minutes" % (run_time / 60.0) |
| 103 | 99 |
| 104 if return_code: | 100 if return_code: |
| 105 sys.stderr.write(stdout) | 101 sys.stderr.write(stdout) |
| 106 sys_exit("Return error code %i from command:\n%s" % (return_code, cmd), | 102 sys.exit("Return error code %i from command:\n%s" % (return_code, cmd), |
| 107 return_code) | 103 return_code) |
| 108 | 104 |
| 109 #Capture output | 105 #Capture output |
| 110 out_tmp = out_file_stem + "." + format | 106 out_tmp = out_file_stem + "." + format |
| 111 if not os.path.isfile(out_tmp): | 107 if not os.path.isfile(out_tmp): |
| 112 sys.stderr.write(stdout) | 108 sys.stderr.write(stdout) |
| 113 sys_exit("Missing output file from mirabait: %s" % out_tmp) | 109 sys.exit("Missing output file from mirabait: %s" % out_tmp) |
| 114 shutil.move(out_tmp, out_file) | 110 shutil.move(out_tmp, out_file) |
