From 3433ef71320b50e8ef12c5f5f144318907ca638c Mon Sep 17 00:00:00 2001 From: wendtalexander Date: Fri, 27 Sep 2024 16:55:37 +0200 Subject: [PATCH] [app] adding powerspectrum as plot --- pyrelacs/app.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/pyrelacs/app.py b/pyrelacs/app.py index ba772d4..492609a 100644 --- a/pyrelacs/app.py +++ b/pyrelacs/app.py @@ -31,8 +31,8 @@ class PyRelacs(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("PyRelacs") - self.setMinimumSize(1000, 1000) - self.plot_graph = pg.PlotWidget() + self.beat_plot = pg.PlotWidget() + self.power_plot = pg.PlotWidget() self.threadpool = QThreadPool() self.repros = Repro() @@ -49,20 +49,17 @@ class PyRelacs(QMainWindow): self.plot_calibration_button.setCheckable(True) self.plot_calibration_button.clicked.connect(self.plot_calibration) - self.text = QPlainTextEdit() - self.text.setReadOnly(True) - layout = QGridLayout() layout.addWidget(self.plot_calibration_button, 0, 0) layout.addWidget(self.daq_disconnect_button, 0, 1) - layout.addWidget(self.text, 3, 0, 1, 2) - layout.addWidget(self.plot_graph, 2, 0, 1, 2) + layout.addWidget(self.beat_plot, 2, 0, 1, 2) + layout.addWidget(self.power_plot, 3, 0, 1, 2) self.toolbar = QToolBar("Repros") self.addToolBar(self.toolbar) self.repros_to_toolbar() - self.setFixedSize(QSize(400, 300)) + # self.setFixedSize(QSize(400, 300)) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) @@ -111,8 +108,9 @@ class PyRelacs(QMainWindow): return decibel_psd block = self.nix_file.blocks[0] - for stim, fish in zip( - list(block.data_arrays)[::2], list(block.data_arrays)[1::2] + colors = ["red", "green", "blue", "black", "yellow"] + for i, (stim, fish) in enumerate( + zip(list(block.data_arrays)[::2], list(block.data_arrays)[1::2]) ): beat = stim[:] + fish[:] beat_squared = beat**2 @@ -123,10 +121,15 @@ class PyRelacs(QMainWindow): f_sq, powerspec_sq = welch(beat_squared, fs=40_000.0) powerspec_sq = decibel(powerspec_sq) peaks = find_peaks(powerspec_sq, prominence=20)[0] - pen = pg.mkPen() - self.plot_graph.plot( - np.arange(0, len(beat)) / 40_000.0, beat_squared, pen=pen + pen = pg.mkPen(colors[i]) + self.beat_plot.plot( + np.arange(0, len(beat)) / 40_000.0, + beat_squared, + pen=pen, + name=stim.name, ) + self.power_plot.plot(f_sq, powerspec_sq, pen=pen) + self.power_plot.scatter(f[peaks], powerspec_sq[peaks]) def connect_dac(self): devices = uldaq.get_daq_device_inventory(uldaq.InterfaceType.USB)