@@ 176-346 (lines=171) @@ | ||
173 | 'rmsd_all': ['rmsd_all'], |
|
174 | } |
|
175 | ||
176 | def single_run(filename): |
|
177 | """Start a mqaprna run for a given file |
|
178 | with all methods (according to config file). |
|
179 | ||
180 | [!] Use global cleanup = False to block cleaning up |
|
181 | ||
182 | .. warning:: The function uses global variable. |
|
183 | """ |
|
184 | filename, filename_length = filename |
|
185 | #print 'fn: ', filename |
|
186 | ||
187 | global methods, c |
|
188 | all_results = {} |
|
189 | ||
190 | for m in methods: |
|
191 | arguments = '' |
|
192 | #if DEBUG_MODE: print 'method', m, arguments |
|
193 | mfull = m |
|
194 | if verbose: print(m + '...') # show method 'eSCORE...' |
|
195 | ||
196 | if m == 'FARNA': |
|
197 | mfull = m |
|
198 | arguments = [filename] + [False] |
|
199 | ||
200 | if m == 'FARNA_hires': |
|
201 | m = 'FARNA' |
|
202 | mfull = 'FARNA_hires' |
|
203 | arguments = [filename] + [True] |
|
204 | ||
205 | if m == 'FARFAR2': |
|
206 | m = 'FARFAR2' |
|
207 | mfull = 'FARFAR2' |
|
208 | arguments = [filename] + [False] |
|
209 | ||
210 | if m == 'FARFAR2_hires': |
|
211 | m = 'FARFAR2' |
|
212 | mfull = 'FARFAR2_hires' |
|
213 | arguments = [filename] + [True] |
|
214 | ||
215 | if m == 'RNAkb_all': |
|
216 | m = 'RNAkb' |
|
217 | mfull = 'RNAkb_all' |
|
218 | arguments = [filename] + ['aa'] |
|
219 | ||
220 | if m.find('_') > -1: |
|
221 | m, n = m.split('_') |
|
222 | n = n.replace('n', '') # n_XXX |
|
223 | n = n.replace('k', '000') |
|
224 | n = n.replace('m', '000000') |
|
225 | arguments = [filename] + [n] |
|
226 | ||
227 | if not arguments: |
|
228 | arguments = [filename] + Config.WRAPPER_OPTIONS[m] |
|
229 | ||
230 | if m == 'escore': |
|
231 | m = 'eSCORE' |
|
232 | wrapper = getattr(MODULES[m], m)()#verbose) # ref_seq, ref_ss, verbose) # for all wrappers but SSAgrement '','' is OK |
|
233 | ||
234 | if m == 'NAST_pyro': |
|
235 | lock.acquire() |
|
236 | ||
237 | if DEBUG_MODE: |
|
238 | result = wrapper.run(*arguments) |
|
239 | if verbose: print(m, result) # ClashScore 12.256669 |
|
240 | all_results[mfull] = result |
|
241 | if cleanup: wrapper.cleanup() |
|
242 | else: |
|
243 | try: |
|
244 | result = wrapper.run(*arguments) |
|
245 | all_results[mfull] = result |
|
246 | if cleanup: wrapper.cleanup() |
|
247 | except: |
|
248 | all_results[mfull] = 'error' |
|
249 | if cleanup: wrapper.cleanup() |
|
250 | ||
251 | # {'ClashScore': 12.256669} |
|
252 | # {'ClashScore': 12.256669, 'AnalyzeGeometry': 32.5581} |
|
253 | # {'ClashScore': 12.256669, 'AnalyzeGeometry': 32.5581, 'FARNA': '-20.008,-2.739,-13.175,-77.67,-10.652,-158.51,9.547,8.39,-16.246,-263.281,0.0,0.0,17.782,0.0'} |
|
254 | #if verbose: print 'all_results:', all_results # this every each method showed |
|
255 | ||
256 | if m == 'NAST_pyro': |
|
257 | lock.release() |
|
258 | ||
259 | # get rmsd |
|
260 | if opt.native_pdb_filename: |
|
261 | rmsd = rmsd_calc.get_rmsd(opt.native_pdb_filename, |
|
262 | filename) |
|
263 | all_results['rmsd'] = rmsd |
|
264 | methods = methods + ['rmsd'] |
|
265 | else: |
|
266 | methods = methods |
|
267 | ||
268 | # length |
|
269 | length = len(ref_seq) |
|
270 | all_results['length'] = length |
|
271 | ||
272 | if opt.mqapscore: |
|
273 | # meta-score |
|
274 | ms = MqapScore(all_results) |
|
275 | mqap_score = ms.get_score() |
|
276 | methods = methods + ['SCORE'] |
|
277 | all_results['SCORE'] = mqap_score |
|
278 | ||
279 | if True: |
|
280 | lock.acquire() |
|
281 | ||
282 | global counter_lock |
|
283 | #with counter_lock: |
|
284 | counter.value += 1 |
|
285 | ||
286 | if counter.value != 1: |
|
287 | # @todo does not work |
|
288 | #sys.stdout.write('\033[F') |
|
289 | #sys.stdout.write('\033[F') |
|
290 | pass |
|
291 | ||
292 | #results = [str(round(all_results[mfull],2)).strip().rjust(9) for m in methods] |
|
293 | ||
294 | results_str = str(all_results) # "{'AnalyzeGeometry': 0.0, 'eSCORE': 0.10661, 'FARNA': ['-2.411', '0.0', '0.0', '-9.672', '0.0', '-25.678', '0.0', '1.061', '0.0', '-32.098', '0.0', '0.0', '4.601', '0.0'], 'ClashScore': 36.458333, 'length': 0, 'SimRNA_0': ['0', '67.345305', '-37.428', '-23.073', '0.248', '104.524975', '87.955', '9.938', '5.669', '1.089', '-0.126', '', '67.345305'], 'FARNA_hires': ['0.0', '-13.107', '-0.711', '0.0', '5.22', '2.734', '-30.044', '0.223', '-10.511', '-0.173', '-4.719', '1.143', '0.0', '14.371', '9.358'], 'RNAscore': 8.11007, 'RASP': ['-0.1382', '15', '-0.00921333', '-0.0845115', '0.454033', '-0.118248', '-277.666', '949', '-0.292588', '-273.37', '2.51163', '-1.71042', '-584.451', '2144', '-0.272598', '-564.143', '5.77609', '-3.51588', '-1616.08', '6700', '-0.241206', '0', '0', '0'], 'RNAkb': -1}" |
|
295 | ||
296 | results = [all_results[mfull] for m in methods] |
|
297 | ||
298 | # progress bar |
|
299 | #sys.stdout.write('\r') |
|
300 | #sys.stdout.flush() |
|
301 | #sys.stdout.write('\r' + ' ' * 110 + '\r' + filename.split(os.sep)[-1].ljust(50) + ' ' + ' '.join(results)) |
|
302 | ||
303 | ########### line with resluts ###################### |
|
304 | bar.update(counter.value) |
|
305 | ## my old progress bar here: |
|
306 | # print(sg.pprogress_line(counter.value, filename_length, ''))# , |
|
307 | ## print results, use --verbose now |
|
308 | if verbose: |
|
309 | print(filename.split(os.sep)[-1].ljust(20) + ' ' + results_str) |
|
310 | ||
311 | ## [ ] 1 7.14 % 14 3_solution_1.pdb {'AnalyzeGeometry': 0.0, 'eSCORE': 1.70264, 'FARNA': ['-31.498', '-11.589', '-32.7', '-123.708', '-25.514', '-271.337', '33.563', '2.957', '-36.699', '-471.864', '0.0', '0.0', '24.659', '0.0'], 'ClashScore': 2.201835, 'length': 0, 'SimRNA_0': ['0', '-1016.539381', '-599.475', '-223.162', '-3.935', '-413.129576', '-65.066', '-71.505', '-68.947', '-45.989', '-161.622', '', '-1016.539381'], 'FARNA_hires': ['0.0', '-541.374', '-0.59', '0.0', '1.85', '8.12', '-433.113', '17.811', '-229.203', '3.074', '-140.106', '13.875', '-17.245', '226.762', '7.39'], 'RNAscore': 26.7066, 'RASP': ['-9.3599', '987', '-0.00948318', '8.16333', '3.95157', '-4.4345', '-7976.88', '60547', '-0.131747', '-7274.73', '52.7448', '-13.3123', '-17537.5', '138719', '-0.126424', '-15578.4', '106.602', '-18.3777', '-34270.8', '483436', '-0.07089', '0', '0', '0'], 'RNAkb': -0.019507621989000006} |
|
312 | ||
313 | #sys.stdout.flush() |
|
314 | ||
315 | #sys.stdout.write(sg.pprogress_line(counter.value, filename_length)) |
|
316 | #print sg.pprogress_line(counter.value, filename_length) |
|
317 | #sys.stdout.flush() |
|
318 | ||
319 | ## for graphics debugging |
|
320 | #import time |
|
321 | #time.sleep(1) |
|
322 | ||
323 | #format_line([filename.split(os.sep)[-1] + [all_results[m] for m in methods]]) # @todo Nice print with ShellGraphics |
|
324 | ||
325 | cells = [counter.value, filename.split(os.sep)[-1]] # add id |
|
326 | for m in methods: |
|
327 | if type(all_results[m]) == list: |
|
328 | cells.extend(all_results[m]) |
|
329 | else: |
|
330 | cells.append(all_results[m]) |
|
331 | csv_writer.writerow(cells) |
|
332 | ||
333 | #print 'mqaprna::filename: %i %s' % (counter.value, filename) |
|
334 | csv_file.flush() |
|
335 | lock.release() |
|
336 | ||
337 | # hack |
|
338 | try: |
|
339 | methods.remove('SCORE') |
|
340 | except ValueError: |
|
341 | pass |
|
342 | ||
343 | try: |
|
344 | methods.remove('rmsd') |
|
345 | except ValueError: |
|
346 | pass |
|
347 | ||
348 | ||
349 | def option_parser(): |
@@ 159-326 (lines=168) @@ | ||
156 | } |
|
157 | ||
158 | ||
159 | def single_run(lst): |
|
160 | """Start a mqaprna run for a given file |
|
161 | with all methods (according to config file). |
|
162 | ||
163 | [!] Use global cleanup = False to block cleaning up |
|
164 | ||
165 | .. warning:: The function uses global variable. |
|
166 | """ |
|
167 | filename, c, verbose, methods, opt, ref_seq = lst |
|
168 | all_results = {} |
|
169 | ||
170 | for m in methods: |
|
171 | ||
172 | arguments = '' |
|
173 | #if DEBUG_MODE: print 'method', m, arguments |
|
174 | mfull = m |
|
175 | ||
176 | if verbose: print(m + '...') # show method 'eSCORE...' |
|
177 | ||
178 | if m == 'FARNA': |
|
179 | mfull = m |
|
180 | arguments = [filename] + [False] |
|
181 | ||
182 | if m == 'FARNA_hires': |
|
183 | m = 'FARNA' |
|
184 | mfull = 'FARNA_hires' |
|
185 | arguments = [filename] + [True] |
|
186 | ||
187 | if m == 'FARFAR2': |
|
188 | m = 'FARFAR2' |
|
189 | mfull = 'FARFAR2' |
|
190 | arguments = [filename] + [False] |
|
191 | ||
192 | if m == 'FARFAR2_hires': |
|
193 | m = 'FARFAR2' |
|
194 | mfull = 'FARFAR2_hires' |
|
195 | arguments = [filename] + [True] |
|
196 | ||
197 | if m == 'RNAkb_all': |
|
198 | m = 'RNAkb' |
|
199 | mfull = 'RNAkb_all' |
|
200 | arguments = [filename] + ['aa'] |
|
201 | ||
202 | if m.find('_') > -1: |
|
203 | m, n = m.split('_') |
|
204 | n = n.replace('n', '') # n_XXX |
|
205 | n = n.replace('k', '000') |
|
206 | n = n.replace('m', '000000') |
|
207 | arguments = [filename] + [n] |
|
208 | ||
209 | if not arguments: |
|
210 | arguments = [filename] + Config.WRAPPER_OPTIONS[m] |
|
211 | ||
212 | if m == 'escore': |
|
213 | m = 'eSCORE' |
|
214 | wrapper = getattr(MODULES[m], m)()#verbose) # ref_seq, ref_ss, verbose) # for all wrappers but SSAgrement '','' is OK |
|
215 | ||
216 | if m == 'NAST_pyro': |
|
217 | lock.acquire() |
|
218 | ||
219 | if DEBUG_MODE: |
|
220 | result = wrapper.run(*arguments) |
|
221 | if verbose: print(m, result) # ClashScore 12.256669 |
|
222 | all_results[mfull] = result |
|
223 | if cleanup: wrapper.cleanup() |
|
224 | else: |
|
225 | try: |
|
226 | result = wrapper.run(*arguments) |
|
227 | all_results[mfull] = result |
|
228 | if cleanup: wrapper.cleanup() |
|
229 | except: |
|
230 | all_results[mfull] = 'error' |
|
231 | if cleanup: wrapper.cleanup() |
|
232 | ||
233 | # {'ClashScore': 12.256669} |
|
234 | # {'ClashScore': 12.256669, 'AnalyzeGeometry': 32.5581} |
|
235 | # {'ClashScore': 12.256669, 'AnalyzeGeometry': 32.5581, 'FARNA': '-20.008,-2.739,-13.175,-77.67,-10.652,-158.51,9.547,8.39,-16.246,-263.281,0.0,0.0,17.782,0.0'} |
|
236 | #if verbose: print 'all_results:', all_results # this every each method showed |
|
237 | ||
238 | if m == 'NAST_pyro': |
|
239 | lock.release() |
|
240 | ||
241 | # get rmsd |
|
242 | if opt.native_pdb_filename: |
|
243 | rmsd = rmsd_calc.get_rmsd(opt.native_pdb_filename, |
|
244 | filename) |
|
245 | all_results['rmsd'] = rmsd |
|
246 | methods = methods + ['rmsd'] |
|
247 | else: |
|
248 | methods = methods |
|
249 | ||
250 | # length |
|
251 | length = len(ref_seq) |
|
252 | all_results['length'] = length |
|
253 | ||
254 | if opt.mqapscore: |
|
255 | # meta-score |
|
256 | ms = MqapScore(all_results) |
|
257 | mqap_score = ms.get_score() |
|
258 | methods = methods + ['SCORE'] |
|
259 | all_results['SCORE'] = mqap_score |
|
260 | ||
261 | if True: |
|
262 | # lock.acquire() |
|
263 | ||
264 | global counter_lock |
|
265 | #with counter_lock: |
|
266 | counter.value += 1 |
|
267 | ||
268 | if counter.value != 1: |
|
269 | # @todo does not work |
|
270 | #sys.stdout.write('\033[F') |
|
271 | #sys.stdout.write('\033[F') |
|
272 | pass |
|
273 | ||
274 | #results = [str(round(all_results[mfull],2)).strip().rjust(9) for m in methods] |
|
275 | ||
276 | results_str = str(all_results) # "{'AnalyzeGeometry': 0.0, 'eSCORE': 0.10661, 'FARNA': ['-2.411', '0.0', '0.0', '-9.672', '0.0', '-25.678', '0.0', '1.061', '0.0', '-32.098', '0.0', '0.0', '4.601', '0.0'], 'ClashScore': 36.458333, 'length': 0, 'SimRNA_0': ['0', '67.345305', '-37.428', '-23.073', '0.248', '104.524975', '87.955', '9.938', '5.669', '1.089', '-0.126', '', '67.345305'], 'FARNA_hires': ['0.0', '-13.107', '-0.711', '0.0', '5.22', '2.734', '-30.044', '0.223', '-10.511', '-0.173', '-4.719', '1.143', '0.0', '14.371', '9.358'], 'RNAscore': 8.11007, 'RASP': ['-0.1382', '15', '-0.00921333', '-0.0845115', '0.454033', '-0.118248', '-277.666', '949', '-0.292588', '-273.37', '2.51163', '-1.71042', '-584.451', '2144', '-0.272598', '-564.143', '5.77609', '-3.51588', '-1616.08', '6700', '-0.241206', '0', '0', '0'], 'RNAkb': -1}" |
|
277 | ||
278 | results = [all_results[mfull] for m in methods] |
|
279 | # progress bar |
|
280 | #sys.stdout.write('\r') |
|
281 | #sys.stdout.flush() |
|
282 | #sys.stdout.write('\r' + ' ' * 110 + '\r' + filename.split(os.sep)[-1].ljust(50) + ' ' + ' '.join(results)) |
|
283 | ||
284 | ########### line with resluts ###################### |
|
285 | #bar.update(counter.value) |
|
286 | ## my old progress bar here: |
|
287 | # print(sg.pprogress_line(counter.value, filename_length, ''))# , |
|
288 | ## print results, use --verbose now |
|
289 | if verbose: |
|
290 | print(filename.split(os.sep)[-1].ljust(20) + ' ' + results_str) |
|
291 | ||
292 | ## [ ] 1 7.14 % 14 3_solution_1.pdb {'AnalyzeGeometry': 0.0, 'eSCORE': 1.70264, 'FARNA': ['-31.498', '-11.589', '-32.7', '-123.708', '-25.514', '-271.337', '33.563', '2.957', '-36.699', '-471.864', '0.0', '0.0', '24.659', '0.0'], 'ClashScore': 2.201835, 'length': 0, 'SimRNA_0': ['0', '-1016.539381', '-599.475', '-223.162', '-3.935', '-413.129576', '-65.066', '-71.505', '-68.947', '-45.989', '-161.622', '', '-1016.539381'], 'FARNA_hires': ['0.0', '-541.374', '-0.59', '0.0', '1.85', '8.12', '-433.113', '17.811', '-229.203', '3.074', '-140.106', '13.875', '-17.245', '226.762', '7.39'], 'RNAscore': 26.7066, 'RASP': ['-9.3599', '987', '-0.00948318', '8.16333', '3.95157', '-4.4345', '-7976.88', '60547', '-0.131747', '-7274.73', '52.7448', '-13.3123', '-17537.5', '138719', '-0.126424', '-15578.4', '106.602', '-18.3777', '-34270.8', '483436', '-0.07089', '0', '0', '0'], 'RNAkb': -0.019507621989000006} |
|
293 | ||
294 | #sys.stdout.flush() |
|
295 | ||
296 | #sys.stdout.write(sg.pprogress_line(counter.value, filename_length)) |
|
297 | #print sg.pprogress_line(counter.value, filename_length) |
|
298 | #sys.stdout.flush() |
|
299 | ||
300 | ## for graphics debugging |
|
301 | #import time |
|
302 | #time.sleep(1) |
|
303 | ||
304 | #format_line([filename.split(os.sep)[-1] + [all_results[m] for m in methods]]) # @todo Nice print with ShellGraphics |
|
305 | cells = [c, filename.split(os.sep)[-1]] # add id |
|
306 | for m in methods: |
|
307 | if type(all_results[m]) == list: |
|
308 | cells.extend(all_results[m]) |
|
309 | else: |
|
310 | cells.append(all_results[m]) |
|
311 | #csv_writer.writerow(cells) |
|
312 | return cells |
|
313 | #print 'mqaprna::filename: %i %s' % (counter.value, filename) |
|
314 | #csv_file.flush() |
|
315 | #lock.release() |
|
316 | ||
317 | # hack |
|
318 | try: |
|
319 | methods.remove('SCORE') |
|
320 | except ValueError: |
|
321 | pass |
|
322 | ||
323 | try: |
|
324 | methods.remove('rmsd') |
|
325 | except ValueError: |
|
326 | pass |
|
327 | ||
328 | ||
329 | def option_parser(): |