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: |
