#!/usr/bin/env python2.7

import sys

def print_config():
  print 'graph_title kZorp hash lengths'
  print 'graph_args --base 1000'
  print 'graph_vlabel Hash chain lengths'
  print 'graph_category Zorp'

  print 'minimun.label Minimun'
  print 'maximum.label Maximum'
  print 'mean.label Mean'
  print 'mode.label Mode'
  print 'median.label Median'

def print_values():
  def compute_values():
    import csv
    lengths = []
    with open('/proc/kz_hash_lengths', 'r') as kzorp_lengths:
      for length in kzorp_lengths:
        lengths.append(float(length))

    lengths.sort()
    num_lengths = len(lengths)

    minimun = lengths[0]
    maximum = lengths[-1]
    mean = sum(lengths) / num_lengths
    median = lengths[(num_lengths + 1) / 2]

    mode = 0
    freq = 0
    max_freq = 0
    last_length = lengths[0]
    for i in range(len(lengths)):
      if lengths[i] == last_length:
        freq = freq + 1
      else:
        if freq > max_freq:
          mode = lengths[i - 1]
        freq = 0

    return  minimun, maximum, mean, mode, median

  print (
         "minimun.value %f\n"
         "maximum.value %f\n"
         "mean.value %f\n"
         "mode.value %f\n"
         "median.value %f"
        ) % compute_values()

if __name__ == '__main__':
  if len(sys.argv) > 1 and sys.argv[1] == 'config':
    print_config()
  else:
    print_values()
