diff --git a/tools/taxonomy/lca.py b/tools/taxonomy/lca.py index 0b9785d9dd5..ca6a320af24 100644 --- a/tools/taxonomy/lca.py +++ b/tools/taxonomy/lca.py @@ -1,10 +1,9 @@ #!/usr/bin/env python #Guruprasad Ananda """ -This tool provides the SQL "group by" functionality. +Least Common Ancestor tool. """ import sys, string, re, commands, tempfile, random -#from rpy import * def stop_err(msg): sys.stderr.write(msg) @@ -42,8 +41,8 @@ def main(): """ except: stop_err("Syntax error: Use correct syntax: program infile outfile") + group_col = 0 - tmpfile = tempfile.NamedTemporaryFile() try: @@ -68,10 +67,6 @@ def main(): prev_vals = [] remaining_vals = [] skipped_lines = 0 - first_invalid_line = 0 - invalid_line = '' - invalid_value = '' - invalid_column = 0 fout = open(outfile, "w") cols = range(1,25) block_valid = False @@ -105,8 +100,6 @@ def main(): out_list[1] = str(prev_vals[0][0]) out_list[2] = str(prev_vals[1][0]) out_list[24] = str(prev_vals[23][0]) - #print >> fout, prev_vals - #sys.exit() for k, col in enumerate(cols): if col >= 3 and col < 24: if len(set(prev_vals[k])) == 1: @@ -116,17 +109,14 @@ def main(): while k < 23: out_list[k+1] = 'n' k += 1 - - # print >>fout, '\t'.join(out_list) if rank_bound == 0: - print >>fout, ''.join(out_list) - print 'n'*( 24 - rank_bound ) + print >>fout, '\t'.join(out_list) + #print 'n'*( 24 - rank_bound ) else: - print '\t'.join(out_list[rank_bound:24]) + #print '\t'.join(out_list[rank_bound:24]) if ''.join(out_list[rank_bound:24]) != 'n'*( 24 - rank_bound ): print >>fout, '\t'.join(out_list) - block_valid = True prev_item = item @@ -145,15 +135,11 @@ def main(): val_list.append(fields[col].strip()) prev_vals.append(val_list) - except Exception, exc: + except: skipped_lines += 1 - if not first_invalid_line: - first_invalid_line = ii+1 else: skipped_lines += 1 - if not first_invalid_line: - first_invalid_line = ii+1 - + # Handle the last grouped value out_list = ['']*25 out_list[0] = str(prev_item) @@ -173,14 +159,13 @@ def main(): if rank_bound == 0: print >>fout, '\t'.join(out_list) else: - print ''.join(out_list[rank_bound:24]) - print 'n'*( 24 - rank_bound ) + #print ''.join(out_list[rank_bound:24]) + #print 'n'*( 24 - rank_bound ) if ''.join(out_list[rank_bound:24]) != 'n'*( 24 - rank_bound ): print >>fout, '\t'.join(out_list) if skipped_lines > 0: - msg= "Skipped %d invalid lines starting with line %d. Value '%s' in column %d is not numeric." % ( skipped_lines, first_invalid_line, invalid_value, invalid_column ) - print msg + print "Skipped %d invalid lines." % ( skipped_lines ) if __name__ == "__main__": main() \ No newline at end of file