#!/usr/bin/python

import matplotlib.pyplot as plt
import sys

def usage():
  print "Usage: %s [result_file_name] [graph_comment]" % sys.argv[0]
  sys.exit(1)

def load_result_file(filename):
  f=open(filename)
  first_line=True
  results={}

  for line in f:
    n_clients,values = line.split()[0],[int(v) for v in line.split()[1:]]
    if not values:
      break
    if first_line:
      data_nodes_list = values
      first_line=False
    elif values:
      n_clients=int(n_clients)
      results[n_clients]={}
      for n_data_nodes in data_nodes_list:
        v_index = data_nodes_list.index(n_data_nodes)
        if len(values)>v_index:
          results[n_clients][n_data_nodes]= values[v_index]

  f.close()
  return results


if __name__=="__main__":

  if len(sys.argv)<2:
    usage()
  else:
    filename = sys.argv[1]
  if len(sys.argv)>2:
    comment=sys.argv[2]
  else:
    comment=filename

  results = load_result_file(filename)

  for n_clients in results.keys():
    plt.plot(
        results[n_clients].keys(), \
        results[n_clients].values(), \
        linewidth=2.0, \
        label="%d clients" % n_clients \
        )

  plt.title(comment)
  plt.xlabel("Number of Data Nodes")
  plt.ylabel("DFS Aggregated Write Speed - MB/s")
  plt.axis([0, 16, 0, 2000])
  plt.grid(True)
  plt.legend(loc='upper right')

  plt.savefig(filename+".png", bbox_inches=0)

