Mercurial > repos > xuebing > sharplabtool
comparison tools/validation/fix_errors.py @ 0:9071e359b9a3
Uploaded
| author | xuebing |
|---|---|
| date | Fri, 09 Mar 2012 19:37:19 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:9071e359b9a3 |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 | |
| 3 """ | |
| 4 Fix errors in a dataset. | |
| 5 For now, only removing erroneous lines is supported. | |
| 6 | |
| 7 usage: %prog input errorsfile output | |
| 8 -x, --ext: dataset extension (type) | |
| 9 -m, --methods=N: comma separated list of repair methods | |
| 10 """ | |
| 11 | |
| 12 import pkg_resources; pkg_resources.require( "bx-python" ) | |
| 13 from bx.cookbook import doc_optparse | |
| 14 | |
| 15 from galaxy import util | |
| 16 | |
| 17 def main(): | |
| 18 options, args = doc_optparse.parse( __doc__ ) | |
| 19 methods = [] | |
| 20 try: | |
| 21 if options.methods: methods = options.methods.split(",") | |
| 22 except: | |
| 23 pass | |
| 24 | |
| 25 ext = options.ext | |
| 26 | |
| 27 in_file = open(args[0], "r") | |
| 28 error_file = open(args[1], "r") | |
| 29 out_file = open(args[2], "w") | |
| 30 | |
| 31 # string_to_object errors | |
| 32 error_list = util.string_to_object(error_file.read()) | |
| 33 # index by error type and then by line number | |
| 34 error_lines = {} | |
| 35 error_types = {} | |
| 36 for error in error_list: | |
| 37 if error.linenum: | |
| 38 if error.linenum in error_lines: | |
| 39 error_lines[error.linenum].append(error) | |
| 40 else: | |
| 41 error_lines[error.linenum] = [error] | |
| 42 error_type = error.__class__.__name__ | |
| 43 if error_type in error_types: | |
| 44 error_types[error_type].append(error) | |
| 45 else: | |
| 46 error_types[error_type] = [error] | |
| 47 | |
| 48 linenum = 0 | |
| 49 for line in in_file: | |
| 50 linenum += 1 | |
| 51 # write unless | |
| 52 if "lines" in methods: | |
| 53 if linenum in error_lines: | |
| 54 line = None | |
| 55 # other processing here? | |
| 56 if line: | |
| 57 out_file.write(line) | |
| 58 | |
| 59 if __name__ == "__main__": | |
| 60 main() |
