summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx')
-rw-r--r--gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx57
1 files changed, 39 insertions, 18 deletions
diff --git a/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx b/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx
index bb53e02cc4..cf67584235 100644
--- a/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx
+++ b/gnuradio-runtime/python/gnuradio/ctrlport/gr-perf-monitorx
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2012-2013 Free Software Foundation, Inc.
+# Copyright 2012-2016 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -28,7 +28,18 @@ try:
matplotlib.use("QT4Agg")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
- from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
+
+ # Manage different matplotlib versions
+ try:
+ from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
+ except ImportError:
+ try:
+ from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
+ except ImportError:
+ print sys.argv[0], "could not load QTAgg backend."
+ sys.exit(1)
+
+
from matplotlib.figure import Figure
except ImportError:
print sys.argv[0], "requires networkx and matplotlib.", \
@@ -42,6 +53,20 @@ import itertools
from gnuradio import gr, ctrlport
from gnuradio.ctrlport.GrDataPlotter import *
+#check for networkx version
+_critical_version = (1,11)
+_atleast_critical = False
+
+for act,ref in zip(nx.__version__.split("."), _critical_version):
+ _atleast_critical = (act >= ref)
+ if not act == ref:
+ break
+
+if _atleast_critical:
+ from networkx.drawing.nx_agraph import graphviz_layout
+else:
+ graphviz_layout = nx.graphviz_layout
+
class MAINWindow(QtGui.QMainWindow):
def minimumSizeHint(self):
return QtGui.QSize(800,600)
@@ -310,13 +335,12 @@ class DataTable(QtGui.QWidget):
self.sp = self.f.add_subplot(111)
self.sp.autoscale_view(True,True,True)
self.sp.set_autoscale_on(True)
- self.canvas = FigureCanvas(self.f)
# set up tabs
self.tabber = QtGui.QTabWidget();
self.layout.addWidget(self.tabber);
self.tabber.addTab(self.perfTable,"Table View");
- self.tabber.addTab(self.canvas, "Graph View");
+ self.tabber.addTab(self.f.canvas, "Graph View");
# set up timer
self.timer = QtCore.QTimer()
@@ -402,7 +426,7 @@ class DataTableBuffers(DataTable):
for r,w in zip(self.disp, sorted_fullness):
r.set_height(w[1])
- self.canvas.draw()
+ self.f.canvas.draw()
class DataTableRuntimes(DataTable):
def __init__(self, radioclient, G):
@@ -423,7 +447,7 @@ class DataTableRuntimes(DataTable):
total_work = 1
work_times = dict(zip(
map(lambda x: x.split("::")[0], wrk_knobs.keys()),
- map(lambda x: x.value/total_work, wrk_knobs.values())))
+ map(lambda x: 1e-10 + x.value/total_work, wrk_knobs.values())))
# update table view
if(self.perfTable.isVisible()):
@@ -441,7 +465,6 @@ class DataTableRuntimes(DataTable):
else:
sorted_work = work_times.items()
- f = plt.figure(self.f.number)
if(not self.disp):
self.disp = self.sp.bar(range(0,len(sorted_work)),
map(lambda x: x[1], sorted_work),
@@ -456,7 +479,7 @@ class DataTableRuntimes(DataTable):
for r,w in zip(self.disp, sorted_work):
r.set_height(w[1])
- self.canvas.draw()
+ self.f.canvas.draw()
class MForm(QtGui.QWidget):
def update(self):
@@ -775,11 +798,10 @@ class MForm(QtGui.QWidget):
self.sp.autoscale_view(True,True,True);
self.sp.set_autoscale_on(True)
- self.canvas = FigureCanvas(self.f)
- self.layout.addWidget(self.canvas);
+ self.layout.addWidget(self.f.canvas);
- self.pos = nx.graphviz_layout(self.G);
- #self.pos = nx.pygraphviz_layout(self.G);
+ self.pos = graphviz_layout(self.G);
+ #self.pos = pygraphviz_layout(self.G);
#self.pos = nx.spectral_layout(self.G);
#self.pos = nx.circular_layout(self.G);
#self.pos = nx.shell_layout(self.G);
@@ -840,14 +862,14 @@ class MForm(QtGui.QWidget):
def drawGraph(self):
self.do_update = True
- self.canvas.updateGeometry()
+ self.f.canvas.updateGeometry()
self.sp.clear()
plt.figure(self.f.number)
plt.subplot(111)
nx.draw(self.G, self.pos,
edge_color=self.edge_weights,
node_color='#A0CBE2',
- width=map(lambda x: 3+math.log(x), self.edge_weights),
+ width=map(lambda x: 3+math.log(x+1e-20), self.edge_weights),
node_shape="s",
node_size=self.node_weights,
edge_cmap=plt.cm.Reds,
@@ -857,8 +879,7 @@ class MForm(QtGui.QWidget):
nx.draw_networkx_labels(self.G, self.pos,
font_size=12)
- self.canvas.draw()
- self.canvas.show()
+ self.f.canvas.show()
def updateGraph(self):
@@ -872,7 +893,7 @@ class MForm(QtGui.QWidget):
nx.draw_networkx_edges(self.G, self.pos,
edge_color=self.edge_weights,
- width=map(lambda x: 3+math.log(x), self.edge_weights),
+ width=map(lambda x: 3+math.log(x+1e-20), self.edge_weights),
edge_cmap=plt.cm.Reds,
ax=self.sp,
arrows=False)
@@ -880,7 +901,7 @@ class MForm(QtGui.QWidget):
nx.draw_networkx_labels(self.G, self.pos,
ax=self.sp, font_size=12)
- self.canvas.draw()
+ self.f.canvas.draw()
class MyApp(object):