Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
QKDNet/chart_data.py
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
262 lines (239 sloc)
17.4 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from Simulator import * | |
def gather_data_chart(glob, dumb, simple, fixed_len, N, size, L, Q, E, var, Trusted, file, Pz=.5, Px=.5): | |
if var != "S": | |
Trusted0 = [0, size*size-1] | |
Trusted1 = [0, int((size*size-1)/2), size*size-1] | |
Trusted2 = [0, size-1, size*(size-1), size*size-1] | |
Trusted3 = [0, math.floor(size/3)*(size+1),size*size-1-math.floor(size/3)*(size+1), size*size-1] | |
Trusted4 = [0, int((size*size-1)/2)-size-1, int((size*size-1)/2), size*size-1] | |
Trusted5 = [0, (size+1)*2, (size*size-1)-(size+1)*2, size*size-1] | |
if len(set(Trusted5)) == 3: | |
Trusted5 = [0, (size+1)*1, (size*size-1)-(size+1)*1, size*size-1] | |
Trusted0 = None if not Trusted[0] else Trusted0 | |
Trusted1 = None if not Trusted[1] else Trusted1 | |
Trusted2 = None if not Trusted[2] else Trusted2 | |
Trusted3 = None if not Trusted[3] else Trusted3 | |
Trusted4 = None if not Trusted[4] else Trusted4 | |
Trusted5 = None if not Trusted[5] else Trusted5 | |
#v = size | |
alpha = .15 | |
if var != "P" and var != "S": | |
P = 10**-(alpha*(L/size)/10) if fixed_len else 10**-(alpha*L/10) | |
#Trusted1 = [0, size*size-size, size*size-1] | |
t0 = {} | |
t1 = {} | |
t2 = {} | |
t3 = {} | |
t4 = {} | |
t5 = {} | |
if var == "P": | |
data_str = "Data for {} iterations, {}x{} Grid, L = {}, Q = {}, E = {}, Pz = {}, Global Info = {}, TN Type = {}"\ | |
.format(N, size, size, "var", Q, E, Pz, glob if glob else "{}, Smart = {}".format(glob, not dumb), "regular" if not simple else "simple") | |
print(data_str) | |
for v in L: | |
P = 10**-(alpha*(v/size)/10) if fixed_len else 10**-(alpha*v/10) | |
print("L={} P = {}".format(v, P)) | |
print(" ",end=""); t0[v] = main(N,size, Trusted0, P, Q ,E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t1[v] = main(N,size, Trusted1, P, Q, E, Pz, Px, glob, dumb,simple) | |
print(" ",end=""); t2[v] = main(N,size, Trusted2, P, Q, E, Pz, Px, glob, dumb,simple) | |
print(" ",end=""); t3[v] = main(N,size, Trusted3, P, Q, E, Pz, Px, glob, dumb,simple) | |
print(" ",end=""); t4[v] = main(N,size, Trusted4, P, Q, E, Pz, Px, glob, dumb,simple) | |
print(" ",end=""); t5[v] = main(N,size, Trusted5, P, Q, E, Pz, Px, glob, dumb,simple) | |
elif var == "Q": | |
data_str = "Data for {} iterations, {}x{} Grid, L = {}, Q = {}, E = {}, Pz = {}, Global Info = {}, TN Type = {}"\ | |
.format(N, size, size, round(L,3), "var", E, Pz, glob if glob else "{}, Smart = {}".format(glob, not dumb), "regular" if not simple else "simple") | |
print(data_str) | |
for v in Q: | |
print(" Q = {}".format(v)) | |
print(" ",end=""); t0[v] = main(N,size, Trusted0, P, v ,E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t1[v] = main(N,size, Trusted1, P, v, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t2[v] = main(N,size, Trusted2, P, v, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t3[v] = main(N,size, Trusted3, P, v, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t4[v] = main(N,size, Trusted4, P, v, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t5[v] = main(N,size, Trusted5, P, v, E, Pz, Px, glob, dumb, simple) | |
elif var == "E": | |
data_str = "Data for {} iterations, {}x{} Grid, L = {}, Q = {}, E = {}, Pz = {}, Global Info = {}, TN Type = {}"\ | |
.format(N, size, size, round(L,3), Q, "var", Pz, glob if glob else "{}, Smart = {}".format(glob, not dumb), "regular" if not simple else "simple") | |
print(data_str) | |
for v in E: | |
print(" E = {}".format(v)) | |
print(" ",end=""); t0[v] = main(N,size, Trusted0, P, Q ,v, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t1[v] = main(N,size, Trusted1, P, Q, v, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t2[v] = main(N,size, Trusted2, P, Q, v, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t3[v] = main(N,size, Trusted3, P, Q, v, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t4[v] = main(N,size, Trusted4, P, Q, v, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t5[v] = main(N,size, Trusted5, P, Q, v, Pz, Px, glob, dumb, simple) | |
elif var == "S": | |
data_str = "Data for {} iterations, {}x{} Grid, L = {}, Q = {}, E = {}, Pz = {}, Global Info = {}, TN Type = {}"\ | |
.format(N, "var", "var", L, Q, E, Pz, glob if glob else "{}, Smart = {}".format(glob, not dumb), "regular" if not simple else "simple") | |
print(data_str) | |
for v in size: | |
Trusted0 = [0, v*v-1] | |
Trusted1 = [0, int((v*v-1)/2), v*v-1] | |
Trusted2 = [0, v-1, v*(v-1), v*v-1] | |
Trusted3 = [0, math.floor(v/3)*(v+1),v*v-1-math.floor(v/3)*(v+1), v*v-1] | |
Trusted4 = [0, int((v*v-1)/2)-v-1, int((v*v-1)/2), v*v-1] | |
Trusted5 = [0, (v+1)*2, (v*v-1)-(v+1)*2, v*v-1] | |
if len(set(Trusted5)) == 3: | |
Trusted5 = [0, (v+1)*1, (v*v-1)-(v+1)*1, v*v-1] | |
Trusted0 = None if not Trusted[0] else Trusted0 | |
Trusted1 = None if not Trusted[1] else Trusted1 | |
Trusted2 = None if not Trusted[2] else Trusted2 | |
Trusted3 = None if not Trusted[3] else Trusted3 | |
Trusted4 = None if not Trusted[4] else Trusted4 | |
Trusted5 = None if not Trusted[5] else Trusted5 | |
P = 10**-(alpha*(L/v)/10) if fixed_len else 10**-(alpha*L/10) | |
print(" Size = {}".format(v)) | |
print(" ",end=""); t0[v] = main(N, v, Trusted0, P, Q ,E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t1[v] = main(N, v, Trusted1, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t2[v] = main(N, v, Trusted2, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t3[v] = main(N, v, Trusted3, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t4[v] = main(N, v, Trusted4, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t5[v] = main(N, v, Trusted5, P, Q, E, Pz, Px, glob, dumb, simple) | |
elif var == None: | |
data_str = "Data for {} iterations, {}x{} Grid, L = {}, Q = {}, E = {}, Pz = {}, Global Info = {}"\ | |
.format(N, size, size, round(L,3), Q, E, Pz, glob if glob else "{}, Smart = {}".format(glob, not dumb), "regular" if not simple else "simple") | |
print(data_str) | |
v = "N/A" | |
print(" ",end=""); t0[v] = main(N,size, Trusted0, P, Q ,E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t1[v] = main(N,size, Trusted1, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t2[v] = main(N,size, Trusted2, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t3[v] = main(N,size, Trusted3, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t4[v] = main(N,size, Trusted4, P, Q, E, Pz, Px, glob, dumb, simple) | |
print(" ",end=""); t5[v] = main(N,size, Trusted5, P, Q, E, Pz, Px, glob, dumb, simple) | |
else: | |
print("{} data is not supported, can only vary P, Q, E, or S") | |
err0 = {v: t0[v][1]/max(t0[v][0],1) if t0[v][0] > 0 else "N/A" for v in t0} | |
err1 = {v: t1[v][1]/max(t1[v][0],1) if t1[v][0] > 0 else "N/A" for v in t1} | |
err2 = {v: t2[v][1]/max(t2[v][0],1) if t2[v][0] > 0 else "N/A" for v in t2} | |
err3 = {v: t3[v][1]/max(t3[v][0],1) if t3[v][0] > 0 else "N/A" for v in t3} | |
err4 = {v: t4[v][1]/max(t4[v][0],1) if t4[v][0] > 0 else "N/A" for v in t4} | |
err5 = {v: t5[v][1]/max(t5[v][0],1) if t5[v][0] > 0 else "N/A" for v in t5} | |
key_rate0 = {v: max(0,1-2*binary_entropy(err0[v])) if err0[v] != "N/A" else 0 for v in err0} | |
key_rate1 = {v: max(0,1-2*binary_entropy(err1[v])) if err1[v] != "N/A" else 0 for v in err1} | |
key_rate2 = {v: max(0,1-2*binary_entropy(err2[v])) if err2[v] != "N/A" else 0 for v in err2} | |
key_rate3 = {v: max(0,1-2*binary_entropy(err3[v])) if err3[v] != "N/A" else 0 for v in err3} | |
key_rate4 = {v: max(0,1-2*binary_entropy(err4[v])) if err4[v] != "N/A" else 0 for v in err4} | |
key_rate5 = {v: max(0,1-2*binary_entropy(err5[v])) if err5[v] != "N/A" else 0 for v in err5} | |
eff_rate0 = {v: key_rate0[v]*t0[v][0]/(4*N) for v in key_rate0} | |
eff_rate1 = {v: key_rate1[v]*t1[v][0]/(4*N) for v in key_rate1} | |
eff_rate2 = {v: key_rate2[v]*t2[v][0]/(4*N) for v in key_rate2} | |
eff_rate3 = {v: key_rate3[v]*t3[v][0]/(4*N) for v in key_rate3} | |
eff_rate4 = {v: key_rate4[v]*t4[v][0]/(4*N) for v in key_rate4} | |
eff_rate5 = {v: key_rate5[v]*t5[v][0]/(4*N) for v in key_rate5} | |
keybits_rate0 = {v: t0[v][0]/N for v in key_rate0} | |
keybits_rate1 = {v: t1[v][0]/N for v in key_rate1} | |
keybits_rate2 = {v: t2[v][0]/N for v in key_rate2} | |
keybits_rate3 = {v: t3[v][0]/N for v in key_rate3} | |
keybits_rate4 = {v: t4[v][0]/N for v in key_rate4} | |
keybits_rate5 = {v: t5[v][0]/N for v in key_rate5} | |
# header_array = ["keybits_rate0", "keybits_rate1", "keybits_rate2", "keybits_rate3","effective_keyrate0", "effective_keyrate1", "effective_keyrate2", "effective_keyrate3", "keyrate0", "keyrate1", "keyrate2", "keyrate3", "errrate0", "errate1","errrate2", "errate3", "keybits0, errors0", "keybits1, errors1", "keybits2, errors2", "keybits3, errors3"] | |
# data_array = [keybits_rate0, keybits_rate1, keybits_rate2, keybits_rate3,eff_rate0, eff_rate1, eff_rate2, eff_rate3, key_rate0, key_rate1,key_rate2, key_rate3, err0, err1,err2, err3, {p: t0[p][0] for p in t0},{p: t0[p][1] for p in t0}, {p: t1[p][0] for p in t1}, {p: t2[p][1] for p in t2}, {p: t3[p][0] for p in t3}] | |
header_array = ["NoTN", "Central", "Corner", "Diag", "Asym", "2Hop"] | |
data_array = [keybits_rate0, keybits_rate1, keybits_rate2, keybits_rate3, keybits_rate4, keybits_rate5] | |
print_save_data(data_array, header_array, data_str, var, file) | |
return eff_rate0, eff_rate1 | |
Dvar = [0,.005,.01,.015,.02,.025,.03,.035,.04,.045,.05,.055,.06] | |
Lvar = [1,3,5,8,10,12,15,20] | |
Bvar = [.65,.7,.75,.8,.85,.9,.95,1] | |
Svar = [5,7,9,10,11,13,15] | |
Evar2 = [0, .05, .01, .02,.025, .03, .035, .04, .05] | |
large = 10000000 | |
mill = 1000000 | |
hundth =100000 | |
header_array = ["NoTN", "Central", "Corner", "Diagonal", "Asym", "2Hops"] | |
if __name__ == "__main__": | |
if sys.argv[1] == "1": | |
with open("5x5chartsD.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 5, 1, .85, Dvar, "E", [True, True,True, False, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, 5, 1, .85, Dvar, "E", [True, True,True, False, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, 5, 1, .85, Dvar, "E", [True, True,True, False, False, False], f) | |
if sys.argv[1] == "2": | |
with open("5x5chartsB.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 5, 1, Bvar, .02, "Q", [True, True,True, False, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, 5, 1, Bvar, .02, "Q", [True, True,True, False, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, 5, 1, Bvar, .02, "Q", [True, True,True, False, False, False], f) | |
if sys.argv[1] == "3": | |
with open("5x5chartsL.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 5, Lvar, .85, .02, "P", [True, True,True, False, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, 5, Lvar, .85, .02, "P", [True, True,True, False, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, 5, Lvar, .85, .02, "P", [True, True,True, False, False, False], f) | |
if sys.argv[1] == "4": | |
with open("5x5chartsS.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, Svar, 1, .85, .02, "S", [True, True,False, False, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, Svar, 1, .85, .02, "S", [True, True,False, False, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, Svar, 1, .85, .02, "S", [True, True,False, False, False, False], f) | |
if sys.argv[1] == "5": | |
with open("5x5NoErrorL.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 5, Lvar, .85, 0, "P", [True, True,True, False, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, 5, Lvar, .85, 0, "P", [True, True,True, False, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, 5, Lvar, .85, 0, "P", [True, True,True, False, False, False], f) | |
if sys.argv[1] == "6": | |
with open("5x5_5ErrorL.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, mill, 5, Lvar, .85, 0.05, "P", [True, True,False, False, False, False], f) | |
gather_data_chart(False, False, False, False, mill, 5, Lvar, .85, 0.05, "P", [True, True,False, False, False, False], f) | |
gather_data_chart(False, True, False, False, mill, 5, Lvar, .85, 0.05, "P", [True, True,False, False, False, False], f) | |
if sys.argv[1] == "7": | |
with open("7x7chartsD.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 7, 1, .85, Dvar, "E", [True, True, True, True, True, False], f) | |
gather_data_chart(False, False, False, False, hundth, 7, 1, .85, Dvar, "E", [True, True, True, True, True, False], f) | |
gather_data_chart(False, True, False, False, hundth, 7, 1, .85, Dvar, "E", [True, True, True, True, True, False], f) | |
if sys.argv[1] == "8": | |
with open("7x7chartsB_0E.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 7, 1, Bvar, .0, "Q", [True, True,True, True, True, False], f) | |
gather_data_chart(False, False, False, False, hundth, 7, 1, Bvar, .0, "Q", [True, True,True, True, True, False], f) | |
if sys.argv[1] == "9": | |
with open("7x7chartsB_2E.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 7, 1, Bvar, .02, "Q", [True, True,True, True, True, False], f) | |
gather_data_chart(False, False, False, False, hundth, 7, 1, Bvar, .02, "Q", [True, True,True, True, True, False], f) | |
if sys.argv[1] == "10": | |
with open("7x7chartsB_5E.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, mill, 7, 1, Bvar, .05, "Q", [True, True,True, True, True, False], f) | |
gather_data_chart(False, False, False, False, mill, 7, 1, Bvar, .05, "Q", [True, True,True, True, True, False], f) | |
if sys.argv[1] == "11": | |
with open("Fixed_chartsS.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, Svar, 10, .85, .02, "S", [True, True,False, True, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, Svar, 10, .85, .02, "S", [True, True,False, True, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, Svar, 10, .85, .02, "S", [True, True,False, True, False, False], f) | |
if sys.argv[1] == "12": | |
with open("13x13chartsB_0E.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 13, 1, Bvar, .0, "Q", [True, True,True, True, True, False], f) | |
gather_data_chart(False, False, False, False, hundth, 13, 1, Bvar, .0, "Q", [True, True,True, True, True, False], f) | |
if sys.argv[1] == "13": | |
with open("13x13chartsB_2E.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 13, 1, Bvar, .02, "Q", [True, True,False, True, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, 13, 1, Bvar, .02, "Q", [True, True,False, True, False, False], f) | |
if sys.argv[1] == "14": | |
with open("13x13chartsB_5E.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, mill, 13, 1, Bvar, .05, "Q", [True, True,False, True, False, False], f) | |
gather_data_chart(False, False, False, False, mill, 13, 1, Bvar, .05, "Q", [True, True,False, True, False, False], f) | |
if sys.argv[1] == "15": | |
with open("5x5chartsL_1B.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 5, Lvar, 1, .02, "P", [True, True,True, False, False, False], f) | |
gather_data_chart(False, False, False, False, hundth, 5, Lvar, 1, .02, "P", [True, True,True, False, False, False], f) | |
gather_data_chart(False, True, False, False, hundth, 5, Lvar, 1, .02, "P", [True, True,True, False, False, False], f) | |
if sys.argv[1] == "16": | |
with open("7x7chartsL_1B.csv", "w+") as f: | |
gather_data_chart(True, False, False, False, hundth, 7, Lvar, 1, .02, "P", [True, True,True, True, True, False], f) | |
gather_data_chart(False, False, False, False, hundth, 7, Lvar, 1, .02, "P", [True, True,True, True, True, False], f) | |
gather_data_chart(False, True, False, False, hundth, 7, Lvar, 1, .02, "P", [True, True,True, True, True, False], f) | |
if sys.argv[1] == "17": | |
with open("50km5x7x11chartsE,csv", "w+") as f: | |
gather_data_chart(True, False, False, False, large, 5, 8.838834764831844, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(False, False, False, False, large, 5, 8.838834764831844, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(True, False, False, False, large, 7, 5.892556509887896, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(False, False, False, False, large, 7, 5.892556509887896, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
if sys.argv[1] == "18": | |
with open("100km5x7x11chartsE,csv", "w+") as f: | |
gather_data_chart(True, False, False, False, large, 5, 2*8.838834764831844, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(False, False, False, False, large, 5, 2*8.838834764831844, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(True, False, False, False, large, 7, 2*5.892556509887896, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(False, False, False, False, large, 7, 2*5.892556509887896, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
if sys.argv[1] == "19": | |
with open("50km11chartsE,csv", "w+") as f: | |
gather_data_chart(True, False, False, False, large, 11, 3.5355339059327378, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(False, False, False, False, large, 11, 3.5355339059327378, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
if sys.argv[1] == "20": | |
with open("100km11chartsE,csv", "w+") as f: | |
gather_data_chart(True, False, False, False, large, 11, 2*3.5355339059327378, .95, Evar2, "E", [True, True, False, False, False, False], f) | |
gather_data_chart(False, False, False, False, large, 11, 2*3.5355339059327378, .95, Evar2, "E", [True, True, False, False, False, False], f) | |