comparison tools/protein_analysis/promoter2.py @ 21:238eae32483c draft

"Check this is up to date with all 2020 changes (black etc)"
author peterjc
date Thu, 17 Jun 2021 08:21:06 +0000
parents a19b3ded8f33
children
comparison
equal deleted inserted replaced
20:a19b3ded8f33 21:238eae32483c
39 39
40 if "-v" in sys.argv or "--version" in sys.argv: 40 if "-v" in sys.argv or "--version" in sys.argv:
41 sys.exit(os.system("promoter -V")) 41 sys.exit(os.system("promoter -V"))
42 42
43 if len(sys.argv) != 4: 43 if len(sys.argv) != 4:
44 sys.exit("Require three arguments, number of threads (int), input DNA FASTA file & output tabular file. " 44 sys.exit(
45 "Got %i arguments." % (len(sys.argv) - 1)) 45 "Require three arguments, number of threads (int), input DNA FASTA "
46 "file & output tabular file. Got %i arguments." % (len(sys.argv) - 1)
47 )
46 48
47 num_threads = thread_count(sys.argv[3], default=4) 49 num_threads = thread_count(sys.argv[3], default=4)
48 fasta_file = os.path.abspath(sys.argv[2]) 50 fasta_file = os.path.abspath(sys.argv[2])
49 tabular_file = os.path.abspath(sys.argv[3]) 51 tabular_file = os.path.abspath(sys.argv[3])
50 52
94 position, score, likelihood = line.strip().split(None, 2) 96 position, score, likelihood = line.strip().split(None, 2)
95 except ValueError: 97 except ValueError:
96 print("WARNING: Problem with line: %r" % line) 98 print("WARNING: Problem with line: %r" % line)
97 continue 99 continue
98 # sys.exit("ERROR: Problem with line: %r" % line) 100 # sys.exit("ERROR: Problem with line: %r" % line)
99 if likelihood not in ["ignored", 101 if likelihood not in [
100 "Marginal prediction", 102 "ignored",
101 "Medium likely prediction", 103 "Marginal prediction",
102 "Highly likely prediction"]: 104 "Medium likely prediction",
105 "Highly likely prediction",
106 ]:
103 sys.exit("ERROR: Problem with line: %r" % line) 107 sys.exit("ERROR: Problem with line: %r" % line)
104 out_handle.write("%s\t%s\t%s\t%s\n" % (identifier, position, score, likelihood)) 108 out_handle.write(
109 "%s\t%s\t%s\t%s\n" % (identifier, position, score, likelihood)
110 )
105 return queries 111 return queries
106 112
107 113
108 working_dir, bin = get_path_and_binary() 114 working_dir, bin = get_path_and_binary()
109 115
112 118
113 # Note that if the input FASTA file contains no sequences, 119 # Note that if the input FASTA file contains no sequences,
114 # split_fasta returns an empty list (i.e. zero temp files). 120 # split_fasta returns an empty list (i.e. zero temp files).
115 # We deliberately omit the FASTA descriptions to avoid a 121 # We deliberately omit the FASTA descriptions to avoid a
116 # bug in promoter2 with descriptions over 200 characters. 122 # bug in promoter2 with descriptions over 200 characters.
117 fasta_files = split_fasta(fasta_file, os.path.join(tmp_dir, "promoter"), FASTA_CHUNK, keep_descr=False) 123 fasta_files = split_fasta(
124 fasta_file, os.path.join(tmp_dir, "promoter"), FASTA_CHUNK, keep_descr=False
125 )
118 temp_files = [f + ".out" for f in fasta_files] 126 temp_files = [f + ".out" for f in fasta_files]
119 jobs = ["%s %s > %s" % (bin, fasta, temp) 127 jobs = [
120 for fasta, temp in zip(fasta_files, temp_files)] 128 "%s %s > %s" % (bin, fasta, temp) for fasta, temp in zip(fasta_files, temp_files)
129 ]
121 130
122 131
123 def clean_up(file_list): 132 def clean_up(file_list):
124 for f in file_list: 133 for f in file_list:
125 if os.path.isfile(f): 134 if os.path.isfile(f):
143 try: 152 try:
144 output = open(temp).readline() 153 output = open(temp).readline()
145 except IOError: 154 except IOError:
146 output = "" 155 output = ""
147 clean_up(fasta_files + temp_files) 156 clean_up(fasta_files + temp_files)
148 sys.exit("One or more tasks failed, e.g. %i from %r gave:\n%s" % (error_level, cmd, output), 157 sys.exit(
149 error_level) 158 "One or more tasks failed, e.g. %i from %r gave:\n%s"
159 % (error_level, cmd, output),
160 error_level,
161 )
150 162
151 del results 163 del results
152 del jobs 164 del jobs
153 165
154 out_handle = open(tabular_file, "w") 166 out_handle = open(tabular_file, "w")