annotate numerics/normalize.py @ 193:dc495f0b5ee8 default tip

[testing] toxify
author Jeff Hammel <k0scist@gmail.com>
date Sun, 13 Aug 2017 15:52:01 -0700
parents c16940bd2cee
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
161
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
3
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
4 """
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
5 normalize columns
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
6 """
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
7
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
8 # imports
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
9 import sys
164
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
10 from .convert import numeric
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
11 from .data import transpose
163
8508dbeb9759 more stubbing
Jeff Hammel <k0scist@gmail.com>
parents: 162
diff changeset
12 from .manipulate import ManipulationParser
161
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
13
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
14 # module globals
164
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
15 __all__ = ['normalize', 'NormalizationParser']
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
16
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
17 def normalize(*data):
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
18 """normalize data"""
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
19 norm = float(sum(data))
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
20 return [i/norm for i in data]
161
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
21
163
8508dbeb9759 more stubbing
Jeff Hammel <k0scist@gmail.com>
parents: 162
diff changeset
22 class NormalizationParser(ManipulationParser):
161
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
23 """CLI option parser"""
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
24
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
25
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
26 def main(args=sys.argv[1:]):
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
27 """CLI"""
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
28
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
29 # parse command line options
163
8508dbeb9759 more stubbing
Jeff Hammel <k0scist@gmail.com>
parents: 162
diff changeset
30 parser = NormalizationParser()
161
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
31 options = parser.parse_args(args)
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
32
164
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
33 # get columns
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
34 columns = parser.typed_data()
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
35 for index in range(len(columns)):
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
36 column = columns[index]
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
37 if column and isinstance(column[0], numeric):
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
38 columns[index] = normalize(*column)
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
39
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
40 # output
c16940bd2cee this works
Jeff Hammel <k0scist@gmail.com>
parents: 163
diff changeset
41 parser.write(transpose(columns))
161
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
42
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
43 if __name__ == '__main__':
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
44 main()
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
45
Jeff Hammel <k0scist@gmail.com>
parents:
diff changeset
46