Source code for myogestic.gui.widgets.templates.output_system

from abc import abstractmethod
from typing import Any

from PySide6.QtCore import QObject
from PySide6.QtGui import QCloseEvent

from myogestic.gui.widgets.templates.meta_qobject import MetaQObjectABC


[docs] class OutputSystemTemplate(QObject, metaclass=MetaQObjectABC): """ Represents a base class handling initialization of main window and prediction type for classification or regression tasks. Determines the appropriate method for processing predictions based on the given prediction type. Parameters ---------- main_window : Any The main application window instance. Cannot be None. prediction_is_classification : bool Indicates whether the prediction task is classification or regression. Cannot be None. Attributes ---------- _main_window : Any A reference to the main application window instance. _prediction_is_classification : bool Specifies whether the prediction task is classification. process_prediction : Callable Function pointer to the appropriate method for processing predictions, defined based on `_prediction_is_classification`. """
[docs] def __init__( self, main_window=None, prediction_is_classification: bool = None ) -> None: super().__init__() if main_window is None: raise ValueError("The _main_window must be provided.") if prediction_is_classification is None: raise ValueError("The _prediction_is_classification must be provided.") self._main_window = main_window self._prediction_is_classification = prediction_is_classification self.process_prediction = ( self._process_prediction__classification if self._prediction_is_classification else self._process_prediction__regression )
[docs] @abstractmethod def _process_prediction__classification(self, prediction: Any) -> Any: """ An abstract method that processes classification predictions. This method is intended to be implemented by subclasses to handle classification-related prediction processing. The specific implementation is left to the subclass, allowing for custom behavior depending on the use case. Parameters ---------- prediction : Any The prediction data/object that needs to be processed. Returns ------- Any The processed output after applying classification-specific logic. The exact type depends on the subclass implementation. """ pass
[docs] @abstractmethod def _process_prediction__regression(self, prediction: Any) -> Any: """ Process regression prediction abstract method. This is an abstract method that should be implemented by subclasses to handle regression predictions. The implementation is responsible for processing the given prediction in a regression-specific manner. Parameters ---------- prediction : Any The input prediction data to be processed. Returns ------- Any The processed regression prediction. The exact type depends on the subclass implementation. """ pass
[docs] @abstractmethod def send_prediction(self, prediction: Any) -> None: """ An abstract method meant to be implemented by subclasses for the purpose of sending prediction values to a specific destination. The method is designed to handle any type of prediction and does not return a value. Parameters ---------- prediction : Any The prediction value or object to be sent. The type of this parameter can vary depending on the specific implementation, allowing flexibility for various use cases. """ pass
[docs] @abstractmethod def close_event(self, event: QCloseEvent): # noqa """ Close event handler for the widget or window. This method is meant to be implemented in custom subclasses to handle the close event, which occurs when the widget or window is about to be closed. It serves as a central point to define tasks or behavior that should be executed during the closing process, such as cleanup operations, saving data, or confirming user actions. Parameters ---------- event : QCloseEvent The close event object that contains information about the close action and provides options for accepting or ignoring the event. """ pass