[or-cvs] r15815: Verify we actually have a proper probability distribution vi (torflow/branches/gsoc2008/tools/BTAnalysis)
mikeperry at seul.org
mikeperry at seul.org
Thu Jul 10 07:01:35 UTC 2008
Author: mikeperry
Date: 2008-07-10 03:01:35 -0400 (Thu, 10 Jul 2008)
New Revision: 15815
Modified:
torflow/branches/gsoc2008/tools/BTAnalysis/shufflebt.py
Log:
Verify we actually have a proper probability distribution via
some numerical integration. Yep, we do. GNUplot is just
insane.
Modified: torflow/branches/gsoc2008/tools/BTAnalysis/shufflebt.py
===================================================================
--- torflow/branches/gsoc2008/tools/BTAnalysis/shufflebt.py 2008-07-10 01:11:26 UTC (rev 15814)
+++ torflow/branches/gsoc2008/tools/BTAnalysis/shufflebt.py 2008-07-10 07:01:35 UTC (rev 15815)
@@ -10,6 +10,8 @@
import getopt,sys,os
import popen2
import math,copy
+from scipy.integrate import *
+from numpy import trapz
class Stats:
def __init__(self,file):
@@ -137,10 +139,16 @@
def pareto(k,Xm,N,fname):
# gnuplot string for shifted, normalized exponential PDF
# g(x,k,B) = (N * k*(Xm**k)/x**(k+1)))
- ps = fname+'(x)=(x<='+str(Xm)+') ? 0 : (('+str((N*k)*(Xm**k))+')/(x-'+str(Xm)+ ')**('+str(k+1)+'))\n'
+ ps = fname+'(x)=(x<='+str(Xm)+') ? 0 : (('+str((N*k)*(Xm**k))+')/((x)**('+str(k+1)+')))\n'
#ps = fname+'(x)='+str(N*k*(Xm**k))+'/x**('+str(k+1)+')\n'
return ps
+def pypareto(x, k,Xm,N):
+ # gnuplot string for shifted, normalized exponential PDF
+ # g(x,k,B) = (N * k*(Xm**k)/x**(k+1)))
+ if x<Xm: return 0
+ else: return ((((N*k)*(Xm**k)))/((x)**((k+1))))
+
def exp(mean,shift,N,fname):
# gnuplot string for normalized exponential PDF
# g(x,k,B) = N * l*exp(-l*(x-shift))
@@ -286,13 +294,17 @@
parK = s.paretoK(mode)
modeN = s.modeN(mode)
modeMean = s.modeMean(mode)
+ # verify sanity by integrating scaled distribution:
+ modeNint = trapz(map(lambda x: pypareto(x, parK, mode, modeN),
+ xrange(1,200000)))
+
print 'Resolution of histogram:',res,'ms'
print 'Mean: '+str(mean)+', mode: '+str(mode)
print 'ParK: '+str(parK)
- print 'ModeN',modeN
+ print 'ModeN: '+str(modeN)+" vs integrated: "+str(modeNint)
print '#successful runs:',len(s.values)
# get stats
-
+
if graph:
# create gnuplot file
# if not sort and not truncate:
@@ -345,8 +357,8 @@
f.close()
# plot the file
- #p = popen2.Popen4('gnuplot ' + plotname)
- p = popen2.Popen4('gp4.2 ' + plotname) #peculiarity of fallon's system
+ p = popen2.Popen4('gnuplot ' + plotname)
+ #p = popen2.Popen4('gp4.2 ' + plotname) #peculiarity of fallon's system
p.wait()
for err in p.fromchild:
More information about the tor-commits
mailing list