Mercurial > repos > peterjc > effectivet3
comparison tools/effectiveT3/effectiveT3.py @ 9:512530020360 draft
v0.0.18 Internal changes to command line handling
author | peterjc |
---|---|
date | Tue, 16 May 2017 09:17:17 -0400 |
parents | 60a9b3f760cc |
children | a46d7861c32c |
comparison
equal
deleted
inserted
replaced
8:60a9b3f760cc | 9:512530020360 |
---|---|
9 | 9 |
10 It then calls the standalone Effective T3 v1.0.1 program (not the | 10 It then calls the standalone Effective T3 v1.0.1 program (not the |
11 webservice), and reformats the semi-colon separated output into | 11 webservice), and reformats the semi-colon separated output into |
12 tab separated output for use in Galaxy. | 12 tab separated output for use in Galaxy. |
13 """ | 13 """ |
14 import sys | |
15 import os | 14 import os |
16 import subprocess | 15 import subprocess |
16 import sys | |
17 | 17 |
18 # The Galaxy auto-install via tool_dependencies.xml will set this environment variable | 18 # The Galaxy auto-install via tool_dependencies.xml will set this environment variable |
19 effective_t3_dir = os.environ.get("EFFECTIVET3", "/opt/EffectiveT3/") | 19 effective_t3_dir = os.environ.get("EFFECTIVET3", "/opt/EffectiveT3/") |
20 effective_t3_jar = os.path.join(effective_t3_dir, "TTSS_GUI-1.0.1.jar") | 20 effective_t3_jar = os.path.join(effective_t3_dir, "TTSS_GUI-1.0.1.jar") |
21 | 21 |
30 model, threshold, fasta_file, tabular_file = sys.argv[1:] | 30 model, threshold, fasta_file, tabular_file = sys.argv[1:] |
31 | 31 |
32 if not os.path.isfile(fasta_file): | 32 if not os.path.isfile(fasta_file): |
33 sys.exit("Input FASTA file not found: %s" % fasta_file) | 33 sys.exit("Input FASTA file not found: %s" % fasta_file) |
34 | 34 |
35 if threshold not in ["selective", "sensitive"] \ | 35 if threshold not in ["selective", "sensitive"] and not threshold.startswith("cutoff="): |
36 and not threshold.startswith("cutoff="): | |
37 sys.exit("Threshold should be selective, sensitive, or cutoff=..., not %r" % threshold) | 36 sys.exit("Threshold should be selective, sensitive, or cutoff=..., not %r" % threshold) |
38 | 37 |
39 | 38 |
40 def clean_tabular(raw_handle, out_handle): | 39 def clean_tabular(raw_handle, out_handle): |
41 """Clean up Effective T3 output to make it tabular.""" | 40 """Clean up Effective T3 output to make it tabular.""" |
42 count = 0 | 41 count = 0 |
43 positive = 0 | 42 positive = 0 |
44 errors = 0 | 43 errors = 0 |
45 for line in raw_handle: | 44 for line in raw_handle: |
46 if not line or line.startswith("#") \ | 45 if not line or line.startswith("#") or line.startswith("Id; Description; Score;"): |
47 or line.startswith("Id; Description; Score;"): | |
48 continue | 46 continue |
49 assert line.count(";") >= 3, repr(line) | 47 assert line.count(";") >= 3, repr(line) |
50 # Normally there will just be three semi-colons, however the | 48 # Normally there will just be three semi-colons, however the |
51 # original FASTA file's ID or description might have had | 49 # original FASTA file's ID or description might have had |
52 # semi-colons in it as well, hence the following hackery: | 50 # semi-colons in it as well, hence the following hackery: |
69 positive += 1 | 67 positive += 1 |
70 return count, positive, errors | 68 return count, positive, errors |
71 | 69 |
72 | 70 |
73 def run(cmd): | 71 def run(cmd): |
72 """Run the command line string via subprocess.""" | |
74 # Avoid using shell=True when we call subprocess to ensure if the Python | 73 # Avoid using shell=True when we call subprocess to ensure if the Python |
75 # script is killed, so too is the child process. | 74 # script is killed, so too is the child process. |
76 try: | 75 try: |
77 child = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | 76 child = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
78 except Exception, err: | 77 except Exception, err: |