# HG changeset patch # User Jeff Hammel # Date 1431734349 25200 # Node ID c16940bd2cee002f82454784a7fa670c5304d239 # Parent 8508dbeb975967cff573b2a7ff96fb7ca277f7a1 this works diff -r 8508dbeb9759 -r c16940bd2cee numerics/convert.py --- a/numerics/convert.py Fri May 15 16:35:34 2015 -0700 +++ b/numerics/convert.py Fri May 15 16:59:09 2015 -0700 @@ -11,11 +11,13 @@ from .data import transpose from .read import read_csv, CSVParser -__all__ = ['default_cast', +__all__ = ['numeric', + 'default_cast', 'cast', 'float_or_orig', 'main'] +numeric = (int, float) default_cast = (int, float, str) def cast(to_type, *values): diff -r 8508dbeb9759 -r c16940bd2cee numerics/normalize.py --- a/numerics/normalize.py Fri May 15 16:35:34 2015 -0700 +++ b/numerics/normalize.py Fri May 15 16:59:09 2015 -0700 @@ -7,10 +7,17 @@ # imports import sys +from .convert import numeric +from .data import transpose from .manipulate import ManipulationParser # module globals -__all__ = ['main', 'NormalizationParser'] +__all__ = ['normalize', 'NormalizationParser'] + +def normalize(*data): + """normalize data""" + norm = float(sum(data)) + return [i/norm for i in data] class NormalizationParser(ManipulationParser): """CLI option parser""" @@ -23,6 +30,15 @@ parser = NormalizationParser() options = parser.parse_args(args) + # get columns + columns = parser.typed_data() + for index in range(len(columns)): + column = columns[index] + if column and isinstance(column[0], numeric): + columns[index] = normalize(*column) + + # output + parser.write(transpose(columns)) if __name__ == '__main__': main()