gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r14388 - gauger


From: gnunet
Subject: [GNUnet-SVN] r14388 - gauger
Date: Fri, 11 Feb 2011 04:30:22 +0100

Author: bartpolot
Date: 2011-02-11 04:30:22 +0100 (Fri, 11 Feb 2011)
New Revision: 14388

Added:
   gauger/plot.gp
   gauger/plot.sh
Modified:
   gauger/gauger.py
Log:
Added smart data processing, avg and stddev generation, changed plot procedure


Modified: gauger/gauger.py
===================================================================
--- gauger/gauger.py    2011-02-10 22:40:09 UTC (rev 14387)
+++ gauger/gauger.py    2011-02-11 03:30:22 UTC (rev 14388)
@@ -24,15 +24,15 @@
 """
 from socket import socket, AF_INET, SOCK_STREAM
 import os
+import math
 
+
+# updateplot
 def updateplot(host, data):
-  filename = host + '/' + data
-  tmpconf = open("tmpgnuplotconfig", "w")
-  tmpconf.write("set terminal png; set output \"" + filename + ".png\"; plot 
\"" + filename + "\" with line title\
- \"" + host + ", " + data + "\" lw 3 lt rgb \"green\"")
-  tmpconf.close()
-  os.system("gnuplot tmpgnuplotconfig")
-  
+  """ Regenerates the plot for a given host / counter combination """
+  os.system("./plot.sh %s %s" % (host, data))
+
+
 def gethostfromlogin(user, password):
   try:
     file = open("gauger.conf", "r")
@@ -49,10 +49,50 @@
   file.close()
   return ''
 
+
 def add_data_to_file(datafile, revision, result):
-  datafile.seek(0, 2)
-  datafile.write(revision + ' ' + result + "\n")
+  datafile.seek(0, 0)
+  l = {}
+  for line in datafile.readlines():
+    try:
+        rev, val = line.split()
+        rev = int(rev)
+        val = float(val)
+    except ValueError:
+        continue
+    try:
+      l[rev].append(val)
+    except KeyError:
+      l[rev] = [val]
+  try:
+    l[int(revision)].append(float(result))
+  except KeyError:
+    l[int(revision)] = [float(result)]
+  except ValueError:            # Allows for add_data_to_file(f, "", "")
+    pass                        # in order to reprocess the data
 
+  datafile.seek(0, 0)
+  processedfile = open(datafile.name + ".dat", "w")
+
+  k = l.keys()
+  k.sort()
+
+  for rev in k:
+      avg = 0.0
+      sum = 0.0
+      n = 0
+      for val in l[rev]:
+          avg += val
+          n += 1
+          datafile.write("%d %f\n" % (rev, val))
+      avg /= n
+      for val in l[rev]:
+          sum += (avg - val)**2
+      stddev = math.sqrt(sum / n)
+      processedfile.write("%s %f %f\n" % (rev, avg, stddev))
+  processedfile.close()
+
+
 s1 = socket(AF_INET, SOCK_STREAM)
 s1.bind(("0.0.0.0", 10111))
 s1.listen(5)
@@ -77,14 +117,8 @@
   if (not os.access(hostname, os.W_OK) or not os.path.isdir(hostname)):
     print "Not a directory or not writable: ", hostname
     continue
-  #TODO:
-  # - ~sort
-  # - add
-  # - calculate avg, stddev
-  # - write to tmpfile
-  # - plot tmpfile
-  datafile = open(hostname + '/' + dataname, "a+")
+
+  datafile = open(hostname + '/' + dataname, "r+")
   add_data_to_file(datafile, revision, result);
-  #create_avg_file(datafile)
   datafile.close()
   updateplot(hostname, dataname)

Added: gauger/plot.gp
===================================================================
--- gauger/plot.gp                              (rev 0)
+++ gauger/plot.gp      2011-02-11 03:30:22 UTC (rev 14388)
@@ -0,0 +1,6 @@
+set terminal png;
+set output "FILENAME.png";
+set grid;
+plot \
+"FILENAME.dat" with line title "FILENAME" lw 3 lt rgb "#D3D3D3",\
+"FILENAME.dat" with yerrorbars notitle lw 1 lt rgb "#404040"

Added: gauger/plot.sh
===================================================================
--- gauger/plot.sh                              (rev 0)
+++ gauger/plot.sh      2011-02-11 03:30:22 UTC (rev 14388)
@@ -0,0 +1,4 @@
+#!/bin/sh
+cat plot.gp | \
+    sed -e "s/FILENAME/$1\/$2/g" | \
+    gnuplot
\ No newline at end of file


Property changes on: gauger/plot.sh
___________________________________________________________________
Added: svn:executable
   + *




reply via email to

[Prev in Thread] Current Thread [Next in Thread]