diff options
Diffstat (limited to 'gr-utils/plot_tools/gr_plot_qt')
-rwxr-xr-x | gr-utils/plot_tools/gr_plot_qt | 114 |
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) - |