diff --git a/sed/calibrator/delay.py b/sed/calibrator/delay.py index d465a462..000fe9cf 100644 --- a/sed/calibrator/delay.py +++ b/sed/calibrator/delay.py @@ -48,8 +48,8 @@ def __init__( else: self._config = {} - self.verbose = verbose - set_verbosity(logger, self.verbose) + self._verbose = verbose + set_verbosity(logger, self._verbose) self.adc_column: str = self._config["dataframe"].get("adc_column", None) self.delay_column: str = self._config["dataframe"]["delay_column"] @@ -60,6 +60,25 @@ def __init__( self.calibration: dict[str, Any] = self._config["delay"].get("calibration", {}) self.offsets: dict[str, Any] = self._config["delay"].get("offsets", {}) + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + def append_delay_axis( self, df: pd.DataFrame | dask.dataframe.DataFrame, diff --git a/sed/calibrator/energy.py b/sed/calibrator/energy.py index 1e50d745..e3e7d1ca 100644 --- a/sed/calibrator/energy.py +++ b/sed/calibrator/energy.py @@ -91,8 +91,8 @@ def __init__( self._config = config - self.verbose = verbose - set_verbosity(logger, self.verbose) + self._verbose = verbose + set_verbosity(logger, self._verbose) self.loader = loader self.biases: np.ndarray = None @@ -125,6 +125,25 @@ def __init__( self.offsets: dict[str, Any] = self._config["energy"].get("offsets", {}) self.correction: dict[str, Any] = self._config["energy"].get("correction", {}) + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + @property def ntraces(self) -> int: """Property returning the number of traces. diff --git a/sed/calibrator/momentum.py b/sed/calibrator/momentum.py index ac26f0e7..fed52473 100644 --- a/sed/calibrator/momentum.py +++ b/sed/calibrator/momentum.py @@ -79,8 +79,8 @@ def __init__( self._config = config - self.verbose = verbose - set_verbosity(logger, self.verbose) + self._verbose = verbose + set_verbosity(logger, self._verbose) self.image: np.ndarray = None self.img_ndim: int = None @@ -132,6 +132,25 @@ def __init__( self._state: int = 0 + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + @property def features(self) -> dict: """Dictionary of detected features for the symmetrization process. @@ -1241,7 +1260,7 @@ def apply_func(apply: bool): # noqa: ARG001 transformations["creation_date"] = datetime.now().timestamp() self.transformations = transformations - if self.verbose: + if self._verbose: plt.figure() subs = 20 plt.title("Final Deformation field") diff --git a/sed/core/processor.py b/sed/core/processor.py index ea3ac37e..e931d0a9 100644 --- a/sed/core/processor.py +++ b/sed/core/processor.py @@ -117,10 +117,10 @@ def __init__( logger.debug(f"Use {num_cores} cores for processing.") if verbose is None: - self.verbose = self._config["core"].get("verbose", True) + self._verbose = self._config["core"].get("verbose", True) else: - self.verbose = verbose - set_verbosity(logger, self.verbose) + self._verbose = verbose + set_verbosity(logger, self._verbose) self._dataframe: pd.DataFrame | ddf.DataFrame = None self._timed_dataframe: pd.DataFrame | ddf.DataFrame = None @@ -148,17 +148,17 @@ def __init__( verbose=verbose, ), config=self._config, - verbose=self.verbose, + verbose=self._verbose, ) self.mc = MomentumCorrector( config=self._config, - verbose=self.verbose, + verbose=self._verbose, ) self.dc = DelayCalibrator( config=self._config, - verbose=self.verbose, + verbose=self._verbose, ) self.use_copy_tool = self._config.get("core", {}).get( @@ -227,6 +227,29 @@ def _repr_html_(self): # """Provides an overview panel with plots of different data attributes.""" # self.view_event_histogram(dfpid=2, backend="matplotlib") + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + self.mc.verbose = verbose + self.ec.verbose = verbose + self.dc.verbose = verbose + self.loader.verbose = verbose + @property def dataframe(self) -> pd.DataFrame | ddf.DataFrame: """Accessor to the underlying dataframe. @@ -629,7 +652,7 @@ def generate_splinewarp( self.mc.spline_warp_estimate(use_center=use_center, **kwds) - if self.mc.slice is not None and self.verbose: + if self.mc.slice is not None and self._verbose: print("Original slice with reference features") self.mc.view(annotated=True, backend="bokeh", crosshair=True) @@ -1334,7 +1357,7 @@ def calibrate_energy_axis( energy_scale=energy_scale, **kwds, ) - if self.verbose: + if self._verbose: self.ec.view( traces=self.ec.traces_normed, xaxis=self.ec.calibration["axis"], diff --git a/sed/loader/base/loader.py b/sed/loader/base/loader.py index 0f898e09..d2848d23 100644 --- a/sed/loader/base/loader.py +++ b/sed/loader/base/loader.py @@ -42,7 +42,25 @@ def __init__( self.files: list[str] = [] self.runs: list[str] = [] self.metadata: dict[Any, Any] = {} - self.verbose = verbose + self._verbose = verbose + + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose @abstractmethod def read_dataframe( diff --git a/sed/loader/flash/loader.py b/sed/loader/flash/loader.py index b17621fd..9b3524bc 100644 --- a/sed/loader/flash/loader.py +++ b/sed/loader/flash/loader.py @@ -54,12 +54,31 @@ def __init__(self, config: dict, verbose: bool = True) -> None: """ super().__init__(config=config, verbose=verbose) - set_verbosity(logger, self.verbose) + set_verbosity(logger, self._verbose) self.instrument: str = self._config["core"].get("instrument", "hextof") # default is hextof self.raw_dir: str = None self.processed_dir: str = None + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + def _initialize_dirs(self) -> None: """ Initializes the directories on Maxwell based on configuration. If paths is provided in diff --git a/sed/loader/mpes/loader.py b/sed/loader/mpes/loader.py index c130308a..ebc9a08c 100644 --- a/sed/loader/mpes/loader.py +++ b/sed/loader/mpes/loader.py @@ -570,13 +570,32 @@ def __init__( ): super().__init__(config=config, verbose=verbose) - set_verbosity(logger, self.verbose) + set_verbosity(logger, self._verbose) self.read_timestamps = self._config.get("dataframe", {}).get( "read_timestamps", False, ) + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + def read_dataframe( self, files: str | Sequence[str] = None, diff --git a/sed/loader/sxp/loader.py b/sed/loader/sxp/loader.py index 1c6d625e..a77e8ed6 100644 --- a/sed/loader/sxp/loader.py +++ b/sed/loader/sxp/loader.py @@ -56,7 +56,7 @@ class SXPLoader(BaseLoader): def __init__(self, config: dict, verbose: bool = True) -> None: super().__init__(config=config, verbose=verbose) - set_verbosity(logger, self.verbose) + set_verbosity(logger, self._verbose) self.multi_index = ["trainId", "pulseId", "electronId"] self.index_per_electron: MultiIndex = None @@ -66,6 +66,25 @@ def __init__(self, config: dict, verbose: bool = True) -> None: self.raw_dir: str = None self.processed_dir: str = None + @property + def verbose(self) -> bool: + """Accessor to the verbosity flag. + + Returns: + bool: Verbosity flag. + """ + return self._verbose + + @verbose.setter + def verbose(self, verbose: bool): + """Setter for the verbosity. + + Args: + verbose (bool): Option to turn on verbose output. Sets loglevel to INFO. + """ + self._verbose = verbose + set_verbosity(logger, self._verbose) + def _initialize_dirs(self): """ Initializes the paths based on the configuration.