[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[freehaven-cvs] Add data analysis script
Update of /home/freehaven/cvsroot/doc/e2e-traffic/src
In directory moria.mit.edu:/tmp/cvs-serv24884
Modified Files:
PLAN.3 simmain.cpp
Added Files:
analyze.py
Log Message:
Add data analysis script
--- NEW FILE: analyze.py ---
#!/usr/bin/python
import gzip
import sys
import time
if sys.version_info[:2] < (2,2):
print "I need Python 2.2 or later. (Python 2.3 is much faster)"
sys.exit(1)
def gzopen(fn):
if fn.endswith(".gz"):
return gzip.open(fn, 'r')
else:
return open(fn, 'r')
def getNext(f):
if hasattr(f, 'xreadlines'):
return iter(f.xreadlines()).next
else:
return f.readline
class Params:
def __hash__(self):
return hash(self.p)
def __cmp__(self,o):
return cmp(self.p,o.p)
class SDParams(Params):
def __init__(self,**test):
self.p = (test['b'],test['N'],test['m'])
def disp(self):
b,N,m=self.p
return "b:%4d N:%7d m:%4d" %(b,N,m)
def getM(self):
return self.p[2]
def getPMsg(self):
return 1.0
class UnkBGParams(Params):
STRATEGIES = {"uniform-geometric":"UG",
"smallworld-geometric":"SG",
"smallworld-geometric-weighted":"SGW"}
def __init__(self,**test):
self.p = (test['b'],test['N'],test['m'],int(test['pMessage']*100),
self.STRATEGIES[test['aliceStrategy']])
def disp(self):
b,N,m,pM,strat=self.p
return "b:%4d N:%7d m:%4d pM:%2s%% %3s"%(b,N,m,pM,strat)
def getM(self):
return self.p[2]
def getPMsg(self):
return self.p[3]/100.0
class MixTrialParams(Params):
def __init__(self,**test):
self.p = (test['N'],
test['m'],
test['l'],
int(test['pMessage']*100),
int(test['pDelay']*100),
test['bgVolume'])
def disp(self):
N,m,l,pA,pD,bgV=self.p
return ("N:%5d m:%3d l:%1d pA:%2s%% pD:%2s%% bg:%5d"
%(N,m,l,pA,pD,bgV))
def getM(self):
return self.p[1]
def getPMsg(self):
return self.p[3]/100.0
def kwdict(**kw): return kw
def pct(x):
return int(x*100)
class ResultSet:
SCOPE = { 'MixTrial' : MixTrialParams,
'UnkBGBatchTrial' : UnkBGParams,
'SDTrial' : SDParams,
'Result' : kwdict }
def __init__(self):
self.nTrials = {}
self.nSuccess = {}
self.nRounds = {}
self.nRoundsAlice = {}
self.nGuessed = {}
def readFile(self,fn):
f = gzopen(fn)
next = getNext(f)
scope = self.SCOPE
nTrials = self.nTrials
nSuccess = self.nSuccess
nRounds = self.nRounds
nRoundsAlice = self.nRoundsAlice
nGuessed = self.nGuessed
try:
while 1:
testline = next() #UnkBGBatchTrial(...)
next() # "x/100"
resultline = next() # Result(...)
if resultline.startswith("bgAlice"):
resultline = next()
if resultline.startswith("Got only"):
resultline = next()
next() # empty
if not (testline and resultline): break
params = eval(testline, scope)
result = eval(resultline, scope)
try:
nTrials[params]+=1
except KeyError:
nTrials[params]=1
nSuccess[params]=0
nRounds[params]=0
nRoundsAlice[params]=0
nGuessed[params]=0
if result['succeeded']:
nSuccess[params] += 1
nRounds[params] += result['rounds']
nRoundsAlice[params] += result['roundsWithAlice']
nGuessed[params] += len(result['nRoundsToGuessNth'])-1
#i += 1
#if not (i % 100):
# print i, (time.time()-start)/i
except StopIteration:
pass
def display(self):
params = self.nTrials.keys()
params.sort()
for p in params:
nT = self.nTrials[p]
fT = float(nT)
pS = self.nSuccess[p]/fT
if self.nSuccess[p]:
avgR = self.nRounds[p]/float(self.nSuccess[p])
avgRA = self.nRoundsAlice[p]/float(self.nSuccess[p])
else:
avgR = 1000000
avgRA = (1000000*p.getPMsg())//100
pG = self.nGuessed[p]/(fT*p.getM())
dp = p.disp()
print ("%s | N:%3d succ:%3s%% guess:%3s%% rnds:%7d rndsA:%7d"
%(dp, nT, int(pS*100), int(pG*100), avgR, avgRA))
if __name__ == '__main__':
rs = ResultSet()
for fn in sys.argv[1:]:
rs.readFile(fn)
rs.display()
Index: PLAN.3
===================================================================
RCS file: /home/freehaven/cvsroot/doc/e2e-traffic/src/PLAN.3,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- PLAN.3 15 Jan 2004 19:15:24 -0000 1.2
+++ PLAN.3 17 Jan 2004 19:12:39 -0000 1.3
@@ -1,5 +1,7 @@
+Running: Totoro, Opus, Zermelo, Moria
+
+MIA, returning Sunday: Cassandra
-Free: opus, esox1, zermelo, novalis
case3: have
HAVE
@@ -19,6 +21,7 @@
C: 13 Jan, 23:33
D: 13 Jan, 23:55 -- 3r and 4r begun!
E: 15 Jan, 13:39
+F: 17 Jan: 12:29
===case 3.2: timed dyn-pool mix. (esox)
@@ -62,26 +65,28 @@
HAVE
AF PD BGVol
- .1: .1 (320,3200') {esox} ----continue 3.2
+ .1: .1 (320,3200') {esox}
.3: .1 (320,3200) {esox}
.6: .1 320,3200,32000 {cass}
.3 320,3200,32000 {cass}
.6 320,3200 {cass}
.9: .1 (320,3200,32000) {opus}
.3 (320,3200,32000) {opus}
- .6 (320') {opus} ---continue 3.3
+ .6 (320') {opus}
NEED:
AF
* * (25) 16 (case 3r.1) <cassandra> E:3.82 *4
- * * (125) 16 (case 3r.2) <dhcp-14-49> E:2.63 *6
-XXX .1: .3,.6,.9 (320,3200) 6 (case 3r.3) <moria> E:1.00 *6 (!)
- .3: .3,.6,.9 (320,3200) 6 (case 3r.4) <sekrit> E:2.84 *2
- .6: .9 (320,3200) 2 (case 3r.5) <ariddoch> E:1.94 *2
+ F:????
+ .1,p.3 * (125) 16 (case 3r.2) <dhcp-14-49>
+
+ .1: .3,.6,.9 (320,3200) 6 (case 3r.3) <moria>
+ .3: .3,.6,.9 (320,3200) 6 (case 3r.4) <sekrit>
+ .6: .9 (320,3200) 2 (case 3r.5) <ariddoch>
.9: .9 (320,3200) 2 (case 3r.5)
ADDED (E):
- .6,.9: * (25) 8 (case 3r.1.1) <opus>
- .3,.6,.9: * (125) 12 (case 3r.2.1) <zermelo>
+ .6,.9: * (25) 8 (case 3r.1.1) <opus> F:7.09
+ .3,.6,.9: * (125) 12 (case 3r.2.1) <zermelo> F:7.47
===case 4: mixnet
Fix N=65536, m=32, strategy=SG
@@ -90,33 +95,44 @@
3 Vary Alice freq: .1, .6, .9
bgvol=320
-
-
====case4r: mixnet
- N=65525, m=25, bgvol=125, strategy=SG
+ N=65525, m=32, bgvol=125, strategy=SG
path length: 2,4,8?
Alice freg: .1, .6. .9
pDelay: .1, .6
PL AF PD
2: .1,.6,.9 .1,.6 6 (case4r.1) <totoro> {E:2.77} *2
- 4: .1,.6,.9 .1,.6 6 (case4r.2) <cannabis> {E:1.73} *3
- 8: .1,.6,.9 .1 3 (case4r.3.1) <esox2?> {E: .89} *3
- 8: .1,.6,.9 .6 3 (case4r.3.2) <zermello, when free> {done,fail}
+ {F:4.21}
+ 4: .1,.6,.9 .1,.6 6 (case4r.2) <cannabis>
+ 8: .1,.6,.9 .1 3 (case4r.3.1) <esox2?> <ARGH>
+ 8: .1,.6,.9 .6 3 (case4r.3.2) <zermello>
ADDED (E):
8: .9 .1 1 (case4r.3.1.1) <esox1 covers esox2>
4: .9 .1,.6 2 (case4r.2.1) <novalis covers cannabis>
+ ADDED (F):
+ .8, .1,.6 .1 2 (case4r.3.1.2) <moria> F:0
+
===case 5: impact of dummies
Fix N,m,strategy as above.
Fix mix alg pDelay, path length, bg vol based on 4.
Vary dummy approach, volume, pAbsent
+ N=65536, m=32, bgvol=125, strategy=SG
+
+ path length:
+ pDelay:
+
+
+
===case 6: impact of partial
Fix all as in 5. No dummies.
Vary pObserve.
+
+===case 7: pseudonymity
\ No newline at end of file
Index: simmain.cpp
===================================================================
RCS file: /home/freehaven/cvsroot/doc/e2e-traffic/src/simmain.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- simmain.cpp 15 Jan 2004 19:15:24 -0000 1.19
+++ simmain.cpp 17 Jan 2004 19:12:39 -0000 1.20
@@ -572,7 +572,7 @@
{ "3r.1", trial3r_1 },
{ "3r.1.1", trial3r_1_1 },
{ "3r.2", trial3r_2 },
- { "3r.2.2", trial3r_2_1 },
+ { "3r.2.1", trial3r_2_1 },
{ "3r.3", trial3r_3 },
{ "3r.4", trial3r_4 },
{ "3r.5", trial3r_5 },
@@ -580,7 +580,7 @@
{ "4r.2", trial4r_2 },
{ "4r.2.1", trial4r_2_1 },
{ "4r.3.1", trial4r_3_1 },
- { "4r.3.1_1", trial4r_3_1_1 },
+ { "4r.3.1.1", trial4r_3_1_1 },
{ "4r.3.2", trial4r_3_2 },
***********************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe freehaven-cvs in the body. http://freehaven.net/