Plot noise window: Remove all eval and exec.

dev
Pierre-Antoine 2025-05-05 15:01:06 +02:00
parent bf8640fb30
commit fea4957f61
1 changed files with 42 additions and 46 deletions

View File

@ -1,7 +1,10 @@
from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import (QWidget, QLabel, QHBoxLayout, QVBoxLayout, QApplication, QMainWindow, QGridLayout, from PyQt5.QtWidgets import (
QDialog, QFrame, QTabWidget, QScrollArea) QWidget, QLabel, QHBoxLayout, QVBoxLayout, QApplication,
QMainWindow, QGridLayout, QDialog, QFrame, QTabWidget,
QScrollArea
)
import numpy as np import numpy as np
@ -14,9 +17,7 @@ import settings as stg
class PlotNoiseWindow(QDialog): class PlotNoiseWindow(QDialog):
def __init__(self, parent=None): def __init__(self, parent=None):
super(PlotNoiseWindow, self).__init__(parent) super(PlotNoiseWindow, self).__init__(parent)
self.setGeometry(400, 200, 700, 500) self.setGeometry(400, 200, 700, 500)
@ -29,65 +30,60 @@ class PlotNoiseWindow(QDialog):
self.tab = QTabWidget() self.tab = QTabWidget()
self.verticalLayout_Main.addWidget(self.tab) self.verticalLayout_Main.addWidget(self.tab)
self.tabs = []
for i in range(len(stg.filename_BS_raw_data)): for i in range(len(stg.filename_BS_raw_data)):
self.tabs.append(QWidget())
exec("self.tab" + str(i) + "= QWidget()") self.tab.addTab(self.tabs[i], stg.filename_BS_raw_data[i])
exec("self.tab.addTab(self.tab" + str(i) + ", stg.filename_BS_raw_data[" + str(i) + "])")
exec("self.verticalLayout_tab" + str(i) + "= QVBoxLayout()") verticalLayout = QVBoxLayout()
exec("self.tab" + str(i) + ".setLayout(self.verticalLayout_tab" + str(i) + ")") self.tabs[i].setLayout(verticalLayout)
exec("self.fig" + str(i) + ", self.ax" + str(i) + fig, ax = plt.subplots(
"= plt.subplots(nrows=stg.freq[" + str(i) + "].shape[0], ncols=1, layout='constrained')") nrows=stg.freq[i].shape[0], ncols=1, layout='constrained'
)
if stg.BS_noise_raw_data[i].shape != (0,): if stg.BS_noise_raw_data[i].shape != (0,):
for freq_ind, freq_val in enumerate(stg.freq[i]): for freq_ind, freq_val in enumerate(stg.freq[i]):
ax[freq_ind].cla()
eval("self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".cla()")
val_min = np.nanmin(stg.BS_noise_raw_data[i][freq_ind, :, :]) val_min = np.nanmin(stg.BS_noise_raw_data[i][freq_ind, :, :])
val_max = np.nanmax(stg.BS_noise_raw_data[i][freq_ind, :, :]) val_max = np.nanmax(stg.BS_noise_raw_data[i][freq_ind, :, :])
if val_min == val_max: if val_min != val_max:
exec("pcm = self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".pcolormesh(" +
"stg.time_noise[" + str(i) + "][" + str(freq_ind) + ", :]," +
"-stg.depth_noise[" + str(i) + "][" + str(freq_ind) + ", :]," +
"stg.BS_noise_raw_data[" + str(i) + "][" + str(freq_ind) + ", :, :]," +
"cmap='hsv')")
else:
val_min = 0 val_min = 0
val_max = 1e-5 val_max = 1e-5
exec("pcm = self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".pcolormesh(" +
"stg.time_noise[" + str(i) + "][" + str(freq_ind) + ", :]," +
"-stg.depth_noise[" + str(i) + "][" + str(freq_ind) + ", :]," +
"stg.BS_noise_raw_data[" + str(i) + "][" + str(freq_ind) + ", :, :]," +
"cmap='hsv')")
eval("self.ax" + str(i) + "[" + str(freq_ind) + "]" + ".text(1, .70, stg.freq_text[" + str(i) + pcm = ax[freq_ind].pcolormesh(
"][" + str(freq_ind) + "]," + stg.time_noise[i][freq_ind, :],
"fontsize=10, fontweight='bold', fontname='DejaVu Sans', c='black', alpha=0.5," + -stg.depth_noise[i][freq_ind, :],
"horizontalalignment='right', verticalalignment='bottom'," + stg.BS_noise_raw_data[i][freq_ind, :, :],
"transform=self.ax" + str(i) + "[" + str(freq_ind) + "].transAxes)") cmap='hsv'
)
exec("self.fig" + str(i) + ".supxlabel('Time (sec)', fontsize=10)") ax[freq_ind].text(
exec("self.fig" + str(i) + ".supylabel('Depth (m)', fontsize=10)") 1, .70, stg.freq_text[i][freq_ind],
fontsize=10, fontweight='bold',
fontname='DejaVu Sans', c='black', alpha=0.5,
horizontalalignment='right', verticalalignment='bottom',
transform=ax[freq_ind].transAxes
)
exec("cbar = self.fig" + str(i) + ".colorbar(pcm, ax=self.ax" + str(i) + "[:] ," + fig.supxlabel('Time (sec)', fontsize=10)
"shrink=1, location='right')") fig.supylabel('Depth (m)', fontsize=10)
eval("cbar.set_label(label='Noise signal (V)', rotation=270, labelpad=8)")
exec("self.fig" + str(i) + ".canvas.draw_idle()") cbar = fig.colorbar(
pcm, ax=ax[:], shrink=1, location='right'
)
cbar.set_label(label='Noise signal (V)', rotation=270, labelpad=8)
fig.canvas.draw_idle()
else: canvas = FigureCanvas(fig)
toolbar = NavigationToolBar(canvas, self)
pass scroll = QScrollArea()
scroll.setWidget(canvas)
exec("self.canvas" + str(i) + "= FigureCanvas(self.fig" + str(i) + ")") verticalLayout.addWidget(toolbar)
exec("self.toolbar" + str(i) + "= NavigationToolBar(self.canvas" + str(i) + ", self)") verticalLayout.addWidget(scroll)
exec("self.scroll" + str(i) + "= QScrollArea()")
exec("self.scroll" + str(i) + ".setWidget(self.canvas" + str(i) + ")")
exec("self.verticalLayout_tab" + str(i) + ".addWidget(self.toolbar" + str(i) + ")")
exec("self.verticalLayout_tab" + str(i) + ".addWidget(self.scroll" + str(i) + ")")