Mercurial > repos > simon-gladman > row_means
comparison means_by_row.py @ 0:33493e25c51c draft default tip
Row means initial upload
| author | simon-gladman |
|---|---|
| date | Tue, 13 Nov 2018 20:31:41 -0500 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:33493e25c51c |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 | |
| 3 import sys | |
| 4 import argparse | |
| 5 | |
| 6 def main(): | |
| 7 | |
| 8 VERSION = 0.1 | |
| 9 | |
| 10 parser = argparse.ArgumentParser(description="Calculates the means of rows of a numeric tab delimited table.") | |
| 11 parser.add_argument("-i", "--infile", help="Input tab delimted numeric file") | |
| 12 parser.add_argument("-o", "--outfile", help="Output list of means") | |
| 13 parser.add_argument("-s", "--skip", default=0, help="Number of header rows to skip", type=int) | |
| 14 parser.add_argument("--version", action='store_true') | |
| 15 | |
| 16 args = parser.parse_args() | |
| 17 | |
| 18 if args.version: | |
| 19 print("means_by_row.py version: %.1f" % VERSION) | |
| 20 return | |
| 21 | |
| 22 infile = str(args.infile) | |
| 23 outfile = str(args.outfile) | |
| 24 skip = int(args.skip) | |
| 25 | |
| 26 lines = open( infile, 'r').readlines() | |
| 27 | |
| 28 averages = [] | |
| 29 linenum = 0 | |
| 30 | |
| 31 for line in lines: | |
| 32 if int(skip) > 0: | |
| 33 skip -= 1 | |
| 34 continue | |
| 35 line.rstrip() | |
| 36 sum = 0.0 | |
| 37 count = 0.0 | |
| 38 units = line.split('\t') | |
| 39 for unit in units: | |
| 40 try: | |
| 41 unit = float(unit) | |
| 42 sum += unit | |
| 43 count += 1 | |
| 44 except: | |
| 45 print("WARNING: Non numeric found at line %f.1" % linenum) | |
| 46 continue | |
| 47 avg = 0 | |
| 48 if count > 0: | |
| 49 avg = sum/count | |
| 50 averages.append(avg) | |
| 51 linenum += 1 | |
| 52 | |
| 53 fout = open(outfile, 'w') | |
| 54 fout.write("Sample_Average\n") | |
| 55 | |
| 56 for avg in averages: | |
| 57 fout.write(str('%.3f' % avg)+ '\n') | |
| 58 | |
| 59 return | |
| 60 | |
| 61 if __name__ == "__main__": main() |
