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