161
|
1 #!/usr/bin/env python
|
|
2 # -*- coding: utf-8 -*-
|
|
3
|
|
4 """
|
|
5 normalize columns
|
|
6 """
|
|
7
|
|
8 # imports
|
|
9 import sys
|
164
|
10 from .convert import numeric
|
|
11 from .data import transpose
|
163
|
12 from .manipulate import ManipulationParser
|
161
|
13
|
|
14 # module globals
|
164
|
15 __all__ = ['normalize', 'NormalizationParser']
|
|
16
|
|
17 def normalize(*data):
|
|
18 """normalize data"""
|
|
19 norm = float(sum(data))
|
|
20 return [i/norm for i in data]
|
161
|
21
|
163
|
22 class NormalizationParser(ManipulationParser):
|
161
|
23 """CLI option parser"""
|
|
24
|
|
25
|
|
26 def main(args=sys.argv[1:]):
|
|
27 """CLI"""
|
|
28
|
|
29 # parse command line options
|
163
|
30 parser = NormalizationParser()
|
161
|
31 options = parser.parse_args(args)
|
|
32
|
164
|
33 # get columns
|
|
34 columns = parser.typed_data()
|
|
35 for index in range(len(columns)):
|
|
36 column = columns[index]
|
|
37 if column and isinstance(column[0], numeric):
|
|
38 columns[index] = normalize(*column)
|
|
39
|
|
40 # output
|
|
41 parser.write(transpose(columns))
|
161
|
42
|
|
43 if __name__ == '__main__':
|
|
44 main()
|
|
45
|
|
46
|