52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import os
|
||
|
import sys
|
||
|
import subprocess
|
||
|
|
||
|
from bwparser import BandwidthParser, JansenBandwidthParser
|
||
|
|
||
|
# Plot the bandwidth files using gnuplot
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
if len(sys.argv) != 2:
|
||
|
sys.stderr.write("Usage: outputdir\n")
|
||
|
sys.exit(1)
|
||
|
|
||
|
# set some defaults
|
||
|
bandwidth_file = os.getenv('BW_FILE')
|
||
|
output_dir = sys.argv[1]
|
||
|
output_file = output_dir + "/bw_dist.pdf"
|
||
|
|
||
|
# calculate invariants
|
||
|
bw_parser = BandwidthParser(bw_file=bandwidth_file)
|
||
|
true_avg = bw_parser.get_average()
|
||
|
|
||
|
jansen_parser = JansenBandwidthParser(bw_file=bandwidth_file)
|
||
|
|
||
|
# Create dat file
|
||
|
with open("%s-jansen.dat" % bandwidth_file, "w") as datout:
|
||
|
for i in range(1,101):
|
||
|
netscale = i/100
|
||
|
jansen_parser.set_scale(netscale)
|
||
|
datout.write("%s %s\n" % \
|
||
|
(netscale, jansen_parser.get_average()))
|
||
|
datout.close()
|
||
|
|
||
|
# Build plot
|
||
|
gpcode = """set terminal pdf font "DejaVuSans,14" size 5,2.25
|
||
|
set output '%s'
|
||
|
set title 'Generated Distribution for %s'
|
||
|
set key out
|
||
|
set arrow from 1, graph 0 to 1
|
||
|
set xlabel "Scale"
|
||
|
set ylabel "Average Bandwidth"
|
||
|
set xtics 0.1
|
||
|
plot """ % (output_file, bandwidth_file)
|
||
|
|
||
|
gpcode += "'%s-jansen.dat' using 1:2 with lines title 'Bandwidth'" % (bandwidth_file)
|
||
|
|
||
|
|
||
|
gp = subprocess.Popen(['gnuplot', '-'], stdin=subprocess.PIPE)
|
||
|
gp.communicate(gpcode.encode('ascii'))
|