Formatting.

This commit is contained in:
jupfi 2023-08-21 11:50:24 +02:00
parent 1e0d23a86c
commit 20de80c13c
2 changed files with 108 additions and 70 deletions

View file

@ -7,8 +7,8 @@ from nqrduck.module.module_controller import ModuleController
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class BroadbandController(ModuleController):
class BroadbandController(ModuleController):
start_broadband_measurement = pyqtSignal() start_broadband_measurement = pyqtSignal()
set_averages_failure = pyqtSignal() set_averages_failure = pyqtSignal()
set_frequency_step_failure = pyqtSignal() set_frequency_step_failure = pyqtSignal()
@ -16,7 +16,6 @@ class BroadbandController(ModuleController):
def __init__(self, module): def __init__(self, module):
super().__init__(module) super().__init__(module)
@pyqtSlot(str, object) @pyqtSlot(str, object)
def process_signals(self, key: str, value: object) -> None: def process_signals(self, key: str, value: object) -> None:
"""Process incoming signal from the nqrduck module. """Process incoming signal from the nqrduck module.
@ -25,18 +24,23 @@ class BroadbandController(ModuleController):
key (str): Name of the signal. key (str): Name of the signal.
value (object): Value of the signal. value (object): Value of the signal.
""" """
if key == "measurement_data" and self.module.model.current_broadband_measurement is not None: if (
key == "measurement_data"
and self.module.model.current_broadband_measurement is not None
):
logger.debug("Received single measurement.") logger.debug("Received single measurement.")
self.module.model.current_broadband_measurement.add_measurement(value) self.module.model.current_broadband_measurement.add_measurement(value)
elif key == "failure_set_averages" and value == self.module.view._ui_form.averagesEdit.text(): elif (
key == "failure_set_averages"
and value == self.module.view._ui_form.averagesEdit.text()
):
logger.debug("Received set averages failure.") logger.debug("Received set averages failure.")
self.set_averages_failure.emit() self.set_averages_failure.emit()
@pyqtSlot(str) @pyqtSlot(str)
def set_frequency(self, value : str) -> None: def set_frequency(self, value: str) -> None:
""" Emits the set frequency signal to the nqrduck module. """Emits the set frequency signal to the nqrduck module.
Args: Args:
value (str): Frequency in MHz. value (str): Frequency in MHz.
@ -49,7 +53,7 @@ class BroadbandController(ModuleController):
self.set_frequency_step_failure.emit() self.set_frequency_step_failure.emit()
@pyqtSlot(str) @pyqtSlot(str)
def set_averages(self, value : str) -> None: def set_averages(self, value: str) -> None:
"""Emits the set averages signal to the nqrduck module. """Emits the set averages signal to the nqrduck module.
Args: Args:
@ -59,7 +63,7 @@ class BroadbandController(ModuleController):
self.module.nqrduck_signal.emit("set_averages", value) self.module.nqrduck_signal.emit("set_averages", value)
@pyqtSlot(str) @pyqtSlot(str)
def change_start_frequency(self, value : str) -> None: def change_start_frequency(self, value: str) -> None:
"""Changes the start frequency of the measurement.""" """Changes the start frequency of the measurement."""
value = float(value) value = float(value)
if value > self.module.model.MIN_FREQUENCY: if value > self.module.model.MIN_FREQUENCY:
@ -68,7 +72,7 @@ class BroadbandController(ModuleController):
self.module.model.start_frequency = self.module.model.MIN_FREQUENCY self.module.model.start_frequency = self.module.model.MIN_FREQUENCY
@pyqtSlot(str) @pyqtSlot(str)
def change_stop_frequency(self, value:str) -> None: def change_stop_frequency(self, value: str) -> None:
"""Changes the stop frequency of the measurement.""" """Changes the stop frequency of the measurement."""
value = float(value) value = float(value)
if value < self.module.model.MAX_FREQUENCY: if value < self.module.model.MAX_FREQUENCY:
@ -77,7 +81,7 @@ class BroadbandController(ModuleController):
self.module._model.stop_frequency = self.module.model.MAX_FREQUENCY self.module._model.stop_frequency = self.module.model.MAX_FREQUENCY
@pyqtSlot(str) @pyqtSlot(str)
def change_frequency_step(self, value :str) -> None: def change_frequency_step(self, value: str) -> None:
"""Changes the frequency step of the measurement.""" """Changes the frequency step of the measurement."""
try: try:
logger.debug("Changing frequency step to: " + value) logger.debug("Changing frequency step to: " + value)
@ -87,7 +91,6 @@ class BroadbandController(ModuleController):
except ValueError: except ValueError:
logger.debug("Invalid frequency step value") logger.debug("Invalid frequency step value")
@pyqtSlot() @pyqtSlot()
def start_broadband_measurement(self) -> None: def start_broadband_measurement(self) -> None:
"""Starts a broadband measurement.""" """Starts a broadband measurement."""
@ -97,21 +100,32 @@ class BroadbandController(ModuleController):
stop_frequency = self.module.model.stop_frequency stop_frequency = self.module.model.stop_frequency
frequency_step = self.module.model.frequency_step frequency_step = self.module.model.frequency_step
frequency_list = np.arange(start_frequency, stop_frequency + frequency_step, frequency_step) frequency_list = np.arange(
start_frequency, stop_frequency + frequency_step, frequency_step
)
logger.debug("Frequency list: " + str(frequency_list)) logger.debug("Frequency list: " + str(frequency_list))
# Create a new broadband measurement object # Create a new broadband measurement object
self.module.model.current_broadband_measurement = self.module.model.BroadbandMeasurement(frequency_list, self.module.model.frequency_step) self.module.model.current_broadband_measurement = (
self.module.model.current_broadband_measurement.received_measurement.connect(self.module.view.on_broadband_measurement_added) self.module.model.BroadbandMeasurement(
self.module.model.current_broadband_measurement.received_measurement.connect(self.on_broadband_measurement_added) frequency_list, self.module.model.frequency_step
)
)
self.module.model.current_broadband_measurement.received_measurement.connect(
self.module.view.on_broadband_measurement_added
)
self.module.model.current_broadband_measurement.received_measurement.connect(
self.on_broadband_measurement_added
)
self.module.view.add_info_text("Starting broadband measurement.") self.module.view.add_info_text("Starting broadband measurement.")
# Start the first measurement # Start the first measurement
self.module.view.add_info_text("Starting measurement at frequency: " + str(start_frequency)) self.module.view.add_info_text(
"Starting measurement at frequency: " + str(start_frequency)
)
self.module.nqrduck_signal.emit("set_frequency", str(start_frequency)) self.module.nqrduck_signal.emit("set_frequency", str(start_frequency))
self.module.nqrduck_signal.emit("start_measurement", None) self.module.nqrduck_signal.emit("start_measurement", None)
@pyqtSlot() @pyqtSlot()
def on_broadband_measurement_added(self) -> None: def on_broadband_measurement_added(self) -> None:
"""This slot is called when a single measurement is added to the broadband measurement. """This slot is called when a single measurement is added to the broadband measurement.
@ -122,10 +136,14 @@ class BroadbandController(ModuleController):
# Check if there are more frequencies to measure # Check if there are more frequencies to measure
if not self.module.model.current_broadband_measurement.is_complete(): if not self.module.model.current_broadband_measurement.is_complete():
# Get the next frequency to measure # Get the next frequency to measure
next_frequency = self.module.model.current_broadband_measurement.get_next_measurement_frequency() next_frequency = (
self.module.model.current_broadband_measurement.get_next_measurement_frequency()
)
logger.debug("Next frequency: " + str(next_frequency)) logger.debug("Next frequency: " + str(next_frequency))
# Start the next measurement # Start the next measurement
self.module.view.add_info_text("Starting measurement at frequency: " + str(next_frequency)) self.module.view.add_info_text(
"Starting measurement at frequency: " + str(next_frequency)
)
self.module.nqrduck_signal.emit("set_frequency", str(next_frequency)) self.module.nqrduck_signal.emit("set_frequency", str(next_frequency))
self.module.nqrduck_signal.emit("start_measurement", None) self.module.nqrduck_signal.emit("start_measurement", None)
else: else:

View file

@ -10,7 +10,6 @@ logger = logging.getLogger(__name__)
class BroadbandView(ModuleView): class BroadbandView(ModuleView):
start_broadband_measurement = pyqtSignal() start_broadband_measurement = pyqtSignal()
def __init__(self, module): def __init__(self, module):
@ -21,18 +20,21 @@ class BroadbandView(ModuleView):
self._ui_form.setupUi(self) self._ui_form.setupUi(self)
self.widget = widget self.widget = widget
logger.debug("Facecolor %s" % str(self._ui_form.broadbandPlot.canvas.ax.get_facecolor())) logger.debug(
"Facecolor %s" % str(self._ui_form.broadbandPlot.canvas.ax.get_facecolor())
)
self.connect_signals() self.connect_signals()
self.init_plots() self.init_plots()
self._ui_form.scrollAreaWidgetContents.setLayout(QVBoxLayout()) self._ui_form.scrollAreaWidgetContents.setLayout(QVBoxLayout())
self._ui_form.scrollAreaWidgetContents.layout().setAlignment(Qt.AlignmentFlag.AlignTop) self._ui_form.scrollAreaWidgetContents.layout().setAlignment(
Qt.AlignmentFlag.AlignTop
)
def connect_signals(self) -> None: def connect_signals(self) -> None:
"""Connect the signals of the view to the slots of the controller. """Connect the signals of the view to the slots of the controller."""
"""
self._ui_form.start_frequencyField.editingFinished.connect( self._ui_form.start_frequencyField.editingFinished.connect(
lambda: self.module.controller.change_start_frequency( lambda: self.module.controller.change_start_frequency(
self._ui_form.start_frequencyField.text() self._ui_form.start_frequencyField.text()
@ -50,16 +52,28 @@ class BroadbandView(ModuleView):
) )
) )
self.module.model.start_frequency_changed.connect(self.on_start_frequency_change) self.module.model.start_frequency_changed.connect(
self.on_start_frequency_change
)
self.module.model.stop_frequency_changed.connect(self.on_stop_frequency_change) self.module.model.stop_frequency_changed.connect(self.on_stop_frequency_change)
self._ui_form.start_measurementButton.clicked.connect(self.start_measurement_clicked) self._ui_form.start_measurementButton.clicked.connect(
self.start_broadband_measurement.connect(self.module._controller.start_broadband_measurement) self.start_measurement_clicked
)
self.start_broadband_measurement.connect(
self.module._controller.start_broadband_measurement
)
self._ui_form.averagesEdit.editingFinished.connect(lambda: self.on_editing_finished(self._ui_form.averagesEdit.text())) self._ui_form.averagesEdit.editingFinished.connect(
lambda: self.on_editing_finished(self._ui_form.averagesEdit.text())
)
self.module.controller.set_averages_failure.connect(self.on_set_averages_failure) self.module.controller.set_averages_failure.connect(
self.module.controller.set_frequency_step_failure.connect(self.on_set_frequency_step_failure) self.on_set_averages_failure
)
self.module.controller.set_frequency_step_failure.connect(
self.on_set_frequency_step_failure
)
@pyqtSlot() @pyqtSlot()
def start_measurement_clicked(self) -> None: def start_measurement_clicked(self) -> None:
@ -71,7 +85,9 @@ class BroadbandView(ModuleView):
# Create a QMessageBox object # Create a QMessageBox object
msg_box = QMessageBox(parent=self) msg_box = QMessageBox(parent=self)
msg_box.setText("Start the measurement?") msg_box.setText("Start the measurement?")
msg_box.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No) msg_box.setStandardButtons(
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
)
# Set the default button to No # Set the default button to No
msg_box.setDefaultButton(QMessageBox.StandardButton.No) msg_box.setDefaultButton(QMessageBox.StandardButton.No)
@ -84,8 +100,7 @@ class BroadbandView(ModuleView):
self.start_broadband_measurement.emit() self.start_broadband_measurement.emit()
def init_plots(self) -> None: def init_plots(self) -> None:
"""Initialize the plots. """Initialize the plots."""
"""
# Initialization of broadband spectrum # Initialization of broadband spectrum
self._ui_form.broadbandPlot.canvas.ax.set_xlim([0, 250]) self._ui_form.broadbandPlot.canvas.ax.set_xlim([0, 250])
self.set_broadband_labels() self.set_broadband_labels()
@ -94,60 +109,59 @@ class BroadbandView(ModuleView):
self._ui_form.time_domainPlot.canvas.ax.set_xlim([0, 250]) self._ui_form.time_domainPlot.canvas.ax.set_xlim([0, 250])
self.set_timedomain_labels() self.set_timedomain_labels()
# Initialization of last measurement frequency domain # Initialization of last measurement frequency domain
self._ui_form.frequency_domainPlot.canvas.ax.set_xlim([0, 250]) self._ui_form.frequency_domainPlot.canvas.ax.set_xlim([0, 250])
self.set_frequencydomain_labels() self.set_frequencydomain_labels()
def set_timedomain_labels(self) -> None: def set_timedomain_labels(self) -> None:
"""Set the labels of the time domain plot. """Set the labels of the time domain plot."""
"""
self._ui_form.time_domainPlot.canvas.ax.set_title("Last Time Domain") self._ui_form.time_domainPlot.canvas.ax.set_title("Last Time Domain")
self._ui_form.time_domainPlot.canvas.ax.set_xlabel("time in us") self._ui_form.time_domainPlot.canvas.ax.set_xlabel("time in us")
self._ui_form.time_domainPlot.canvas.ax.set_ylabel("Amplitude a.u.") self._ui_form.time_domainPlot.canvas.ax.set_ylabel("Amplitude a.u.")
self._ui_form.time_domainPlot.canvas.ax.grid() self._ui_form.time_domainPlot.canvas.ax.grid()
def set_frequencydomain_labels(self) -> None: def set_frequencydomain_labels(self) -> None:
"""Set the labels of the frequency domain plot. """Set the labels of the frequency domain plot."""
"""
self._ui_form.frequency_domainPlot.canvas.ax.set_title("Last Frequency Domain") self._ui_form.frequency_domainPlot.canvas.ax.set_title("Last Frequency Domain")
self._ui_form.frequency_domainPlot.canvas.ax.set_xlabel("Frequency in MHz") self._ui_form.frequency_domainPlot.canvas.ax.set_xlabel("Frequency in MHz")
self._ui_form.frequency_domainPlot.canvas.ax.set_ylabel("Amplitude a.u.") self._ui_form.frequency_domainPlot.canvas.ax.set_ylabel("Amplitude a.u.")
self._ui_form.frequency_domainPlot.canvas.ax.grid() self._ui_form.frequency_domainPlot.canvas.ax.grid()
def set_broadband_labels(self) -> None: def set_broadband_labels(self) -> None:
"""Set the labels of the broadband plot. """Set the labels of the broadband plot."""
"""
self._ui_form.broadbandPlot.canvas.ax.set_title("Broadband Spectrum") self._ui_form.broadbandPlot.canvas.ax.set_title("Broadband Spectrum")
self._ui_form.broadbandPlot.canvas.ax.set_xlabel("Frequency in MHz") self._ui_form.broadbandPlot.canvas.ax.set_xlabel("Frequency in MHz")
self._ui_form.broadbandPlot.canvas.ax.set_ylabel("Amplitude a.u.") self._ui_form.broadbandPlot.canvas.ax.set_ylabel("Amplitude a.u.")
self._ui_form.broadbandPlot.canvas.ax.grid() self._ui_form.broadbandPlot.canvas.ax.grid()
@pyqtSlot(float) @pyqtSlot(float)
def on_start_frequency_change(self, start_frequency : float) -> None: def on_start_frequency_change(self, start_frequency: float) -> None:
"""This method is called when the start frequency is changed. """This method is called when the start frequency is changed.
It adjusts the view to the new start frequency. It adjusts the view to the new start frequency.
""" """
logger.debug("Adjusting view to new start frequency: " + str(start_frequency * 1e-6)) logger.debug(
self._ui_form.broadbandPlot.canvas.ax.set_xlim(left=start_frequency*1e-6) "Adjusting view to new start frequency: " + str(start_frequency * 1e-6)
)
self._ui_form.broadbandPlot.canvas.ax.set_xlim(left=start_frequency * 1e-6)
self._ui_form.broadbandPlot.canvas.draw() self._ui_form.broadbandPlot.canvas.draw()
self._ui_form.broadbandPlot.canvas.flush_events() self._ui_form.broadbandPlot.canvas.flush_events()
self._ui_form.start_frequencyField.setText(str(start_frequency* 1e-6)) self._ui_form.start_frequencyField.setText(str(start_frequency * 1e-6))
@pyqtSlot(float) @pyqtSlot(float)
def on_stop_frequency_change(self, stop_frequency : float) -> None: def on_stop_frequency_change(self, stop_frequency: float) -> None:
"""This method is called when the stop frequency is changed. """This method is called when the stop frequency is changed.
It adjusts the view to the new stop frequency. It adjusts the view to the new stop frequency.
""" """
logger.debug("Adjusting view to new stop frequency: " + str(stop_frequency * 1e-6)) logger.debug(
self._ui_form.broadbandPlot.canvas.ax.set_xlim(right=stop_frequency*1e-6) "Adjusting view to new stop frequency: " + str(stop_frequency * 1e-6)
)
self._ui_form.broadbandPlot.canvas.ax.set_xlim(right=stop_frequency * 1e-6)
self._ui_form.broadbandPlot.canvas.draw() self._ui_form.broadbandPlot.canvas.draw()
self._ui_form.broadbandPlot.canvas.flush_events() self._ui_form.broadbandPlot.canvas.flush_events()
self._ui_form.stop_frequencyField.setText(str(stop_frequency* 1e-6)) self._ui_form.stop_frequencyField.setText(str(stop_frequency * 1e-6))
@pyqtSlot() @pyqtSlot()
def on_editing_finished(self, value : str) -> None: def on_editing_finished(self, value: str) -> None:
"""This method is called when the user finished editing a field. """This method is called when the user finished editing a field.
It sets the value of the field in the model. It sets the value of the field in the model.
""" """
@ -179,7 +193,9 @@ class BroadbandView(ModuleView):
""" """
# Get last measurement from the broadband measurement object that is not None # Get last measurement from the broadband measurement object that is not None
logger.debug("Updating broadband plot.") logger.debug("Updating broadband plot.")
measurement = self.module.model.current_broadband_measurement.get_last_completed_measurement() measurement = (
self.module.model.current_broadband_measurement.get_last_completed_measurement()
)
td_plotter = self._ui_form.time_domainPlot.canvas.ax td_plotter = self._ui_form.time_domainPlot.canvas.ax
fd_plotter = self._ui_form.frequency_domainPlot.canvas.ax fd_plotter = self._ui_form.frequency_domainPlot.canvas.ax
@ -191,7 +207,10 @@ class BroadbandView(ModuleView):
td_plotter.plot(measurement.tdx, measurement.tdy) td_plotter.plot(measurement.tdx, measurement.tdy)
fd_plotter.plot(measurement.fdx * 1e-6, measurement.fdy * 1e-6) fd_plotter.plot(measurement.fdx * 1e-6, measurement.fdy * 1e-6)
broadband_plotter.plot(self.module.model.current_broadband_measurement.broadband_data_fdx, self.module.model.current_broadband_measurement.broadband_data_fdy) broadband_plotter.plot(
self.module.model.current_broadband_measurement.broadband_data_fdx,
self.module.model.current_broadband_measurement.broadband_data_fdy,
)
self.set_timedomain_labels() self.set_timedomain_labels()
self.set_frequencydomain_labels() self.set_frequencydomain_labels()
@ -201,14 +220,16 @@ class BroadbandView(ModuleView):
self._ui_form.frequency_domainPlot.canvas.draw() self._ui_form.frequency_domainPlot.canvas.draw()
self._ui_form.broadbandPlot.canvas.draw() self._ui_form.broadbandPlot.canvas.draw()
value = int(self.module.model.current_broadband_measurement.get_finished_percentage()) value = int(
self.module.model.current_broadband_measurement.get_finished_percentage()
)
logger.debug("Updating progress bar to: " + str(value)) logger.debug("Updating progress bar to: " + str(value))
self._ui_form.measurementProgress.setValue(value) self._ui_form.measurementProgress.setValue(value)
self._ui_form.measurementProgress.update() self._ui_form.measurementProgress.update()
QApplication.processEvents() QApplication.processEvents()
def add_info_text(self, text : str) -> None: def add_info_text(self, text: str) -> None:
"""Add a text to the info box with a timestamp. """Add a text to the info box with a timestamp.
Args: Args:
@ -219,4 +240,3 @@ class BroadbandView(ModuleView):
text_label = QLabel(text) text_label = QLabel(text)
text_label.setStyleSheet("font-size: 25px;") text_label.setStyleSheet("font-size: 25px;")
self._ui_form.scrollAreaWidgetContents.layout().addWidget(text_label) self._ui_form.scrollAreaWidgetContents.layout().addWidget(text_label)