| @@ 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(): |
|