view numerics/histogram.py @ 72:06094870fdd7

more stubbing
author Jeff Hammel <k0scist@gmail.com>
date Sat, 28 Feb 2015 17:05:04 -0800
parents 9a2674b32754
children 8e93d7357c6b
line wrap: on
line source

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Histograms

Unicode is awesome; see http://www.alanwood.net/unicode/block_elements.html
"""

blocks = """








"""

# imports
import argparse
import os
import sys
import time
from .read import CSVParser
from collections import OrderedDict

# module globals
__all__ = ['Histogram', 'HistogramParser', 'main']

class Histogram(object):
    """historgram"""

    def __init__(self, bins):
        bins = sorted(bin)
        assert len(bins) > 1
        self.data = self.OrderedDict(zip(bins[:-1],
                                         bins[1:]))

    def add(self, *values):
        """add values to the histogram"""
        for value in values:
            for vmin, vmax in self.data.keys():
                if vmin <= value <= vmax:
                    self.data[(vmin, vmax)].append(value)

    def __iadd__(self, value):
        self.add(value)
        return self

    def __call__(self, *values):
        """
        add values to the histogram and return
        OrderedDict of counts
        """
        self.add(*values)

class HistogramParser(CSVParser):
    """histogram CLI option parser"""

    def __init__(self, **kwargs):
        kwargs.setdefault('formatter_class', argparse.RawTextHelpFormatter)
        kwargs.setdefault('description', __doc__)
        CSVParser.__init__(self, **kwargs)
        self.add_argument('-n', '--bins', dest='n_bins', type=int,
                          help="number of bins")
        self.options = None


def main(args=sys.argv[1:]):
    """CLI"""

    # parse command line options
    parser = HistogramParser()
    options = parser.parse_args(args)


if __name__ == '__main__':
    main()