summaryrefslogtreecommitdiff
path: root/gr-utils/plot_tools/gr_plot_qt
diff options
context:
space:
mode:
Diffstat (limited to 'gr-utils/plot_tools/gr_plot_qt')
-rwxr-xr-xgr-utils/plot_tools/gr_plot_qt114
1 files changed, 63 insertions, 51 deletions
diff --git a/gr-utils/plot_tools/gr_plot_qt b/gr-utils/plot_tools/gr_plot_qt
index aada9e0bba..cd24270ab4 100755
--- a/gr-utils/plot_tools/gr_plot_qt
+++ b/gr-utils/plot_tools/gr_plot_qt
@@ -28,7 +28,8 @@ except ImportError:
print("Could not import from pyqt_plot. Please build with \"pyuic4 pyqt_plot.ui -o pyqt_plot.py\"")
raise SystemExit(1)
-import sys, os
+import sys
+import os
from optparse import OptionParser
from gnuradio import eng_notation
@@ -62,8 +63,8 @@ class SpectrogramData(Qwt.QwtRasterData):
try:
f = int(self.freq.searchsorted(x))
t = int(self.time.searchsorted(y))
- return self.sp[f][t-1]
- except AttributeError: # if no file loaded yet
+ return self.sp[f][t - 1]
+ except AttributeError: # if no file loaded yet
return 0
@@ -88,10 +89,14 @@ class gr_plot_qt(QtGui.QMainWindow):
# Set up basic plot attributes
self.gui.timePlot.setAxisTitle(self.gui.timePlot.xBottom, "Time (sec)")
- self.gui.timePlot.setAxisTitle(self.gui.timePlot.yLeft, "Amplitude (V)")
- self.gui.freqPlot.setAxisTitle(self.gui.freqPlot.xBottom, "Frequency (Hz)")
- self.gui.freqPlot.setAxisTitle(self.gui.freqPlot.yLeft, "Magnitude (dB)")
- self.gui.specPlot.setAxisTitle(self.gui.specPlot.xBottom, "Frequency (Hz)")
+ self.gui.timePlot.setAxisTitle(
+ self.gui.timePlot.yLeft, "Amplitude (V)")
+ self.gui.freqPlot.setAxisTitle(
+ self.gui.freqPlot.xBottom, "Frequency (Hz)")
+ self.gui.freqPlot.setAxisTitle(
+ self.gui.freqPlot.yLeft, "Magnitude (dB)")
+ self.gui.specPlot.setAxisTitle(
+ self.gui.specPlot.xBottom, "Frequency (Hz)")
self.gui.specPlot.setAxisTitle(self.gui.specPlot.yLeft, "Time (sec)")
# Set up FFT size combo box
@@ -99,9 +104,11 @@ class gr_plot_qt(QtGui.QMainWindow):
"4096", "8192", "16384", "32768"]
self.gui.psdFFTComboBox.addItems(self.fftsizes)
self.gui.specFFTComboBox.addItems(self.fftsizes)
- pos = self.gui.psdFFTComboBox.findText(Qt.QString("%1").arg(self.psdfftsize))
+ pos = self.gui.psdFFTComboBox.findText(
+ Qt.QString("%1").arg(self.psdfftsize))
self.gui.psdFFTComboBox.setCurrentIndex(pos)
- pos = self.gui.specFFTComboBox.findText(Qt.QString("%1").arg(self.specfftsize))
+ pos = self.gui.specFFTComboBox.findText(
+ Qt.QString("%1").arg(self.specfftsize))
self.gui.specFFTComboBox.setCurrentIndex(pos)
self.connect(self.gui.psdFFTComboBox,
@@ -112,10 +119,10 @@ class gr_plot_qt(QtGui.QMainWindow):
self.specFFTComboBoxEdit)
# Set up color scheme box
- self.color_modes = {"Black on White" : self.color_black_on_white,
- "White on Black" : self.color_white_on_black,
- "Blue on Black" : self.color_blue_on_black,
- "Green on Black" : self.color_green_on_black}
+ self.color_modes = {"Black on White": self.color_black_on_white,
+ "White on Black": self.color_white_on_black,
+ "Blue on Black": self.color_blue_on_black,
+ "Green on Black": self.color_green_on_black}
self.gui.colorComboBox.addItems(self.color_modes.keys())
pos = self.gui.colorComboBox.findText("Blue on Black")
self.gui.colorComboBox.setCurrentIndex(pos)
@@ -123,12 +130,11 @@ class gr_plot_qt(QtGui.QMainWindow):
Qt.SIGNAL("activated (const QString&)"),
self.colorComboBoxEdit)
-
# Set up line style combo box
- self.line_styles = {"None" : Qwt.QwtSymbol.NoSymbol,
- "Circle" : Qwt.QwtSymbol.Ellipse,
- "Diamond" : Qwt.QwtSymbol.Rect,
- "Triangle" : Qwt.QwtSymbol.Triangle}
+ self.line_styles = {"None": Qwt.QwtSymbol.NoSymbol,
+ "Circle": Qwt.QwtSymbol.Ellipse,
+ "Diamond": Qwt.QwtSymbol.Rect,
+ "Triangle": Qwt.QwtSymbol.Triangle}
self.gui.lineStyleComboBox.addItems(self.line_styles.keys())
pos = self.gui.lineStyleComboBox.findText("None")
self.gui.lineStyleComboBox.setCurrentIndex(pos)
@@ -220,7 +226,6 @@ class gr_plot_qt(QtGui.QMainWindow):
self.rcurve.setSymbol(self.rsym)
self.icurve.setSymbol(self.isym)
-
self.icurve.attach(self.gui.timePlot)
self.rcurve.attach(self.gui.timePlot)
@@ -264,7 +269,6 @@ class gr_plot_qt(QtGui.QMainWindow):
self.gui.styleSizeSpinBox.setRange(1, 20)
self.gui.styleSizeSpinBox.setValue(5)
-
# Connect a signal for when the sample rate changes
self.set_sample_rate(self.sample_rate)
self.connect(self.gui.sampleRateLineEdit,
@@ -279,7 +283,7 @@ class gr_plot_qt(QtGui.QMainWindow):
def open_file(self):
filename = Qt.QFileDialog.getOpenFileName(self, "Open", ".")
if(filename != ""):
- #print(filename)
+ # print(filename)
self.initialize(filename)
def reload_file(self):
@@ -305,8 +309,7 @@ class gr_plot_qt(QtGui.QMainWindow):
self.get_psd()
self.get_specgram()
self.gui.plotHBar.setSliderPosition(0)
- self.gui.plotHBar.setMaximum(self.signal_size-self.block_length)
-
+ self.gui.plotHBar.setMaximum(self.signal_size - self.block_length)
self.update_time_curves()
self.update_psd_curves()
@@ -314,26 +317,28 @@ class gr_plot_qt(QtGui.QMainWindow):
def init_data_input(self):
self.hfile.seek(0, os.SEEK_END)
- self.signal_size = self.hfile.tell()/self.sizeof_data
+ self.signal_size = self.hfile.tell() / self.sizeof_data
#print("Sizeof File: ", self.signal_size)
self.hfile.seek(0, os.SEEK_SET)
def get_data(self, start, end):
if(end > start):
- self.hfile.seek(start*self.sizeof_data, os.SEEK_SET)
+ self.hfile.seek(start * self.sizeof_data, os.SEEK_SET)
self.position = start
try:
iq = numpy.fromfile(self.hfile, dtype=self.datatype,
- count=end-start)
+ count=end - start)
- if(len(iq) < (end-start)):
+ if(len(iq) < (end - start)):
end = start + len(iq)
- self.gui.filePosLengthLineEdit.setText(Qt.QString("%1").arg(len(iq)))
+ self.gui.filePosLengthLineEdit.setText(
+ Qt.QString("%1").arg(len(iq)))
self.file_length_changed()
tstep = 1.0 / self.sample_rate
self.iq = iq
- self.time = [tstep*(self.position + i) for i in range(len(self.iq))]
+ self.time = [tstep * (self.position + i)
+ for i in range(len(self.iq))]
self.set_file_pos_box(start, end)
except MemoryError:
@@ -346,22 +351,22 @@ class gr_plot_qt(QtGui.QMainWindow):
winpoints = self.winfunc(self.psdfftsize)
iq_psd, freq = mlab.psd(self.iq, Fs=self.sample_rate,
NFFT=self.psdfftsize,
- noverlap=self.psdfftsize/4.0,
+ noverlap=self.psdfftsize / 4.0,
window=winpoints,
scale_by_freq=False)
- self.iq_psd = 10.0*numpy.log10(abs(numpy.fft.fftshift(iq_psd)))
- self.freq = freq - self.sample_rate/2.0
+ self.iq_psd = 10.0 * numpy.log10(abs(numpy.fft.fftshift(iq_psd)))
+ self.freq = freq - self.sample_rate / 2.0
def get_specgram(self):
winpoints = self.winfunc(self.specfftsize)
iq_spec, f, t = mlab.specgram(self.iq, Fs=self.sample_rate,
NFFT=self.specfftsize,
- noverlap=self.specfftsize/4.0,
+ noverlap=self.specfftsize / 4.0,
window=winpoints,
scale_by_freq=False)
- self.iq_spec = 10.0*numpy.log10(abs(iq_spec))
+ self.iq_spec = 10.0 * numpy.log10(abs(iq_spec))
self.spec_f = f
self.spec_t = t
@@ -421,22 +426,25 @@ class gr_plot_qt(QtGui.QMainWindow):
self.gui.filePosStartLineEdit.setText(Qt.QString("%1").arg(start))
self.gui.filePosStopLineEdit.setText(Qt.QString("%1").arg(end))
- self.gui.filePosLengthLineEdit.setText(Qt.QString("%1").arg(end-start))
+ self.gui.filePosLengthLineEdit.setText(
+ Qt.QString("%1").arg(end - start))
self.gui.fileTimeStartLineEdit.setText(Qt.QString("%1").arg(tstart))
self.gui.fileTimeStopLineEdit.setText(Qt.QString("%1").arg(tend))
- self.gui.fileTimeLengthLineEdit.setText(Qt.QString("%1").arg(tend-tstart))
+ self.gui.fileTimeLengthLineEdit.setText(
+ Qt.QString("%1").arg(tend - tstart))
def file_position_changed(self):
- start = self.gui.filePosStartLineEdit.text().toInt()
- end = self.gui.filePosStopLineEdit.text().toInt()
+ start = self.gui.filePosStartLineEdit.text().toInt()
+ end = self.gui.filePosStopLineEdit.text().toInt()
if((start[1] == True) and (end[1] == True)):
self.cur_start = start[0]
self.cur_stop = end[0]
tstart = self.cur_start / self.sample_rate
tend = self.cur_stop / self.sample_rate
- self.gui.fileTimeStartLineEdit.setText(Qt.QString("%1").arg(tstart))
+ self.gui.fileTimeStartLineEdit.setText(
+ Qt.QString("%1").arg(tstart))
self.gui.fileTimeStopLineEdit.setText(Qt.QString("%1").arg(tend))
self.get_data(self.cur_start, self.cur_stop)
@@ -452,17 +460,18 @@ class gr_plot_qt(QtGui.QMainWindow):
except AttributeError:
pass
-
def file_time_changed(self):
tstart = self.gui.fileTimeStartLineEdit.text().toDouble()
- tstop = self.gui.fileTimeStopLineEdit.text().toDouble()
+ tstop = self.gui.fileTimeStopLineEdit.text().toDouble()
if((tstart[1] == True) and (tstop[1] == True)):
self.cur_start = int(tstart[0] * self.sample_rate)
self.cur_stop = int(tstop[0] * self.sample_rate)
self.get_data(self.cur_start, self.cur_stop)
- self.gui.filePosStartLineEdit.setText(Qt.QString("%1").arg(self.cur_start))
- self.gui.filePosStopLineEdit.setText(Qt.QString("%1").arg(self.cur_stop))
+ self.gui.filePosStartLineEdit.setText(
+ Qt.QString("%1").arg(self.cur_start))
+ self.gui.filePosStopLineEdit.setText(
+ Qt.QString("%1").arg(self.cur_stop))
self.update_time_curves()
self.update_psd_curves()
@@ -483,7 +492,8 @@ class gr_plot_qt(QtGui.QMainWindow):
tstart = self.cur_start / self.sample_rate
tend = self.cur_stop / self.sample_rate
tlen = self.block_length / self.sample_rate
- self.gui.fileTimeStartLineEdit.setText(Qt.QString("%1").arg(tstart))
+ self.gui.fileTimeStartLineEdit.setText(
+ Qt.QString("%1").arg(tstart))
self.gui.fileTimeStopLineEdit.setText(Qt.QString("%1").arg(tend))
self.gui.fileTimeLengthLineEdit.setText(Qt.QString("%1").arg(tlen))
@@ -511,7 +521,8 @@ class gr_plot_qt(QtGui.QMainWindow):
tstart = self.cur_start / self.sample_rate
tend = self.cur_stop / self.sample_rate
tlen = self.block_length / self.sample_rate
- self.gui.fileTimeStartLineEdit.setText(Qt.QString("%1").arg(tstart))
+ self.gui.fileTimeStartLineEdit.setText(
+ Qt.QString("%1").arg(tstart))
self.gui.fileTimeStopLineEdit.setText(Qt.QString("%1").arg(tend))
self.gui.fileTimeLengthLineEdit.setText(Qt.QString("%1").arg(tlen))
@@ -526,7 +537,6 @@ class gr_plot_qt(QtGui.QMainWindow):
else:
self.set_file_pos_box(self.cur_start, self.cur_stop)
-
def update_time_curves(self):
self.icurve.setData(self.time, self.iq.imag)
self.rcurve.setData(self.time, self.iq.real)
@@ -645,7 +655,6 @@ class gr_plot_qt(QtGui.QMainWindow):
self.gui.timePlot.replot()
self.gui.freqPlot.replot()
-
def color_green_on_black(self):
green = QtGui.qRgb(0x00, 0xFF, 0x00)
red = QtGui.qRgb(0xFF, 0x00, 0x50)
@@ -688,11 +697,13 @@ class gr_plot_qt(QtGui.QMainWindow):
self.gui.timePlot.replot()
self.gui.freqPlot.replot()
+
def setup_options():
- usage="%prog: [options] (input_filename)"
+ usage = "%prog: [options] (input_filename)"
description = ""
- parser = OptionParser(conflict_handler="resolve", usage=usage, description=description)
+ parser = OptionParser(conflict_handler="resolve",
+ usage=usage, description=description)
parser.add_option("-B", "--block-length", type="int", default=8192,
help="Specify the block size [default=%default]")
parser.add_option("-s", "--start", type="int", default=0,
@@ -706,9 +717,10 @@ def setup_options():
return parser
+
def main(args):
parser = setup_options()
- (options, args) = parser.parse_args ()
+ (options, args) = parser.parse_args()
if(len(args) == 1):
filename = args[0]
@@ -719,6 +731,6 @@ def main(args):
gplt = gr_plot_qt(app, filename, options)
app.exec_()
+
if __name__ == '__main__':
main(sys.argv)
-