Mercurial > hg > numerics
annotate numerics/reduce.py @ 138:488cb433576c
add d3 from http://d3js.org/d3.v3.min.js
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sat, 21 Mar 2015 14:54:38 -0700 |
parents | c9ae21955ca5 |
children |
rev | line source |
---|---|
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
3 |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
4 """ |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
5 reduce a vector to a scalar |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
6 """ |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
7 |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
8 # imports |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
9 import sys |
125 | 10 from .filters import mean |
11 from .manipulate import FloatParser | |
12 from .write import CSVWriter | |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
13 |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
14 # module globals |
125 | 15 __all__ = ['ReduceParser'] |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
16 |
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
17 |
126 | 18 class ReduceParser(FloatParser): |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
19 """CLI option parser""" |
126 | 20 |
127
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
21 def __init__(self, function, **kwargs): |
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
22 """ |
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
23 function -- reducing function |
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
24 """ |
126 | 25 |
127
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
26 self.function = function |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
27 kwargs.setdefault('description', __doc__) |
127
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
28 FloatParser.__init__(self, **kwargs) |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
29 |
126 | 30 def __call__(self, *args): |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
31 |
126 | 32 # parse command line options |
33 self.parse_args(args or sys.argv[1:]) | |
124
84baf80a5202
stubbing massive deletion of code (okay not that massive)
Jeff Hammel <k0scist@gmail.com>
parents:
diff
changeset
|
34 |
126 | 35 # read data |
36 columns = self.typed_data() | |
37 if not columns: | |
38 self.error("No data given") | |
39 | |
40 # calculate scalars | |
127
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
41 data = [self.function(column) for column in columns] |
126 | 42 |
43 # write CSV | |
127
c9ae21955ca5
how to make this really small
Jeff Hammel <k0scist@gmail.com>
parents:
126
diff
changeset
|
44 writer = CSVWriter(self.options.output) |
126 | 45 writer.write([data]) |