mirror of
https://github.com/logos-messaging/research.git
synced 2026-01-02 14:13:07 +00:00
Add plot Python scripts (#82)
This commit is contained in:
parent
1e3ed6a5cc
commit
12aa11a60b
2233
rln-delay-simulations/latencies_d6.svg
Normal file
2233
rln-delay-simulations/latencies_d6.svg
Normal file
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 69 KiB |
2600
rln-delay-simulations/latencies_d6_vs_d3.svg
Normal file
2600
rln-delay-simulations/latencies_d6_vs_d3.svg
Normal file
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 82 KiB |
47
rln-delay-simulations/message_hops.py
Normal file
47
rln-delay-simulations/message_hops.py
Normal file
@ -0,0 +1,47 @@
|
||||
from math import ceil
|
||||
from numpy import log
|
||||
from numpy import ceil
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import scienceplots
|
||||
|
||||
L = 1 # latency in ms (msg prop + rln proof verif, etc)
|
||||
N1 = 1000 # number of nodes in the network (1)
|
||||
N2 = 10000 # number of nodes in the network (2)
|
||||
N3 = 100000 # number of nodes in the network (3)
|
||||
|
||||
def delay_last_hop(n, d, l):
|
||||
# multiply by l for latencies
|
||||
return ceil(log(n)/log(d))
|
||||
|
||||
ds = np.arange(2,15)
|
||||
ls = np.ones(len(ds))*L
|
||||
|
||||
# astype(int) is ok since ceil() returns integers
|
||||
delays_1 = delay_last_hop(np.ones(len(ds))*N1, ds, ls).astype(int)
|
||||
delays_2 = delay_last_hop(np.ones(len(ds))*N2, ds, ls).astype(int)
|
||||
delays_3 = delay_last_hop(np.ones(len(ds))*N3, ds, ls).astype(int)
|
||||
|
||||
with plt.style.context(['science', 'ieee']):
|
||||
fig, ax1 = plt.subplots()
|
||||
ax2 = ax1.twinx()
|
||||
|
||||
ax1.plot(ds, delays_1, color='r', label=r"$N_1=$"+str(N1))
|
||||
ax1.plot(ds, delays_2, color='g', label=r"$N_2=$"+str(N2))
|
||||
ax1.plot(ds, delays_3, color='b', label=r"$N_3=$"+str(N3))
|
||||
ax2.plot(ds, ds, color='y', label="Bandwidth ampl.")
|
||||
print(delays_1)
|
||||
print(ds)
|
||||
ax1.autoscale(tight=True)
|
||||
ax2.autoscale(tight=True)
|
||||
ax1.legend(loc=0)
|
||||
ax2.legend(loc=0)
|
||||
ax1.set(title='Worst case maximum hops vs bandwidth')
|
||||
ax1.set(**dict(xlabel='Outbound degree (D)', ylabel='Amount of hops'))
|
||||
ax2.set(**dict(ylabel='Bandwidth amplification'))
|
||||
#ax2.set_xlim([2, 14])
|
||||
fig.savefig('message_hops.svg', dpi=300)
|
||||
|
||||
plt.close()
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 221 KiB |
@ -5,9 +5,8 @@ from analyze import load
|
||||
|
||||
latencies = [load("raw/latency_10kb.txt", "arrival_diff="),
|
||||
load("raw/latency_100kb.txt", "arrival_diff="),
|
||||
load("raw/latency_500kb.txt", "arrival_diff=")]
|
||||
|
||||
print(latencies)
|
||||
load("raw/latency_500kb.txt", "arrival_diff="),
|
||||
]
|
||||
|
||||
with plt.style.context(['science', 'ieee']):
|
||||
fig, ax = plt.subplots()
|
||||
@ -30,4 +29,4 @@ for i, line in enumerate(bp['medians']):
|
||||
ax.annotate(text, xy=(x + 0.1, y), fontsize=6)
|
||||
|
||||
fig.set_size_inches(4, 3)
|
||||
fig.savefig('plot.jpg', dpi=600)
|
||||
fig.savefig('latencies_d6.svg', dpi=600)
|
||||
36
rln-delay-simulations/plot_latencies_d6_vs_d3.py
Normal file
36
rln-delay-simulations/plot_latencies_d6_vs_d3.py
Normal file
@ -0,0 +1,36 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import scienceplots
|
||||
import numpy as np
|
||||
from analyze import load
|
||||
|
||||
latencies = [load("raw/latency_10kb.txt", "arrival_diff="),
|
||||
load("raw/latency_scenario2_10kb.txt", "arrival_diff="),
|
||||
load("raw/latency_100kb.txt", "arrival_diff="),
|
||||
load("raw/latency_scenario2_100kb.txt", "arrival_diff="),
|
||||
#load("raw/latency_500kb.txt", "arrival_diff="),
|
||||
#load("raw/latency_scenario2_500kb.txt", "arrival_diff=")
|
||||
]
|
||||
|
||||
with plt.style.context(['science', 'ieee']):
|
||||
fig, ax = plt.subplots()
|
||||
bp = ax.boxplot(latencies,notch=True, vert=True, patch_artist=True,
|
||||
showfliers=True, whis=100000000000)
|
||||
|
||||
for patch, color in zip(bp['boxes'], ['red', 'blue', 'gold', 'yellowgreen']):
|
||||
patch.set_facecolor(color)
|
||||
|
||||
ax.set(title="Message latencies distribution\nD=6 vs D=3 nodes=1000 samples="+str(latencies[1].size), xlabel='Scenario', ylabel='Message propagation time (ms)')
|
||||
ax.grid(linestyle='-')
|
||||
my_legend = []
|
||||
for msg_size in [10, 100]:
|
||||
for d in [6, 3]:
|
||||
my_legend.append("Message size: " + str(msg_size) + " kB"+ " D="+ str(d))
|
||||
ax.legend([bp["boxes"][i] for i in range(len(my_legend))], my_legend, loc='upper left', fontsize=5)
|
||||
|
||||
for i, line in enumerate(bp['medians']):
|
||||
x, y = line.get_xydata()[1]
|
||||
text = r' $ \mu =$ ' + '{:.0f} ms\n'.format(latencies[i].mean(axis=0)) + r' $ p_{95} = $ ' + '{:.0f} ms'.format(np.percentile(latencies[i], 95))
|
||||
ax.annotate(text, xy=(x + 0.1, y), fontsize=6)
|
||||
|
||||
fig.set_size_inches(4, 3)
|
||||
fig.savefig('latencies_d6_vs_d3.svg', dpi=600)
|
||||
2188
rln-delay-simulations/plot_message_hops.svg
Normal file
2188
rln-delay-simulations/plot_message_hops.svg
Normal file
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 65 KiB |
9990
rln-delay-simulations/raw/latency_scenario2_100kb.txt
Normal file
9990
rln-delay-simulations/raw/latency_scenario2_100kb.txt
Normal file
File diff suppressed because it is too large
Load Diff
9990
rln-delay-simulations/raw/latency_scenario2_10kb.txt
Normal file
9990
rln-delay-simulations/raw/latency_scenario2_10kb.txt
Normal file
File diff suppressed because it is too large
Load Diff
9990
rln-delay-simulations/raw/latency_scenario2_500kb.txt
Normal file
9990
rln-delay-simulations/raw/latency_scenario2_500kb.txt
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user