diff --git a/extra_foam/logger.py b/extra_foam/logger.py index 794709582..fe1bcb6ad 100644 --- a/extra_foam/logger.py +++ b/extra_foam/logger.py @@ -49,6 +49,3 @@ def create_logger(name): logger_stream = create_logger("EXtra-foam-stream") logger_stream.setLevel(logging.INFO) - -logger_suite = create_logger("EXtra-foam-special-suite") -logger_suite.setLevel(logging.INFO) diff --git a/extra_foam/special_suite/__init__.py b/extra_foam/special_suite/__init__.py index 658b36ae4..a28f36baa 100644 --- a/extra_foam/special_suite/__init__.py +++ b/extra_foam/special_suite/__init__.py @@ -1 +1,20 @@ -from .facade import SpecialSuiteController \ No newline at end of file +from PyQt5.QtWidgets import QApplication + +import logging + +from extra_foam import __version__ +from extra_foam.logger import create_logger + + +logger = create_logger("EXtra-foam-special-suite") +logger.setLevel(logging.INFO) + + +def mkQApp(args=None): + app = QApplication.instance() + if app is None: + if args is None: + return QApplication([]) + return QApplication(args) + + return app diff --git a/extra_foam/special_suite/cam_view_w.py b/extra_foam/special_suite/cam_view_w.py index a74c0d491..667bdf5b0 100644 --- a/extra_foam/special_suite/cam_view_w.py +++ b/extra_foam/special_suite/cam_view_w.py @@ -13,10 +13,10 @@ from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import QSplitter -from extra_foam.gui.plot_widgets import HistMixin, ImageViewF, PlotWidgetF from extra_foam.gui.ctrl_widgets.smart_widgets import ( SmartBoundaryLineEdit, SmartLineEdit, SmartStringLineEdit ) +from extra_foam.gui.plot_widgets import HistMixin, ImageViewF, PlotWidgetF from .cam_view_proc import ( CamViewProcessor, _DEFAULT_N_BINS, _DEFAULT_BIN_RANGE diff --git a/extra_foam/special_suite/config.py b/extra_foam/special_suite/config.py index c1878b4a8..9da68a77f 100644 --- a/extra_foam/special_suite/config.py +++ b/extra_foam/special_suite/config.py @@ -7,9 +7,56 @@ Copyright (C) European X-Ray Free-Electron Laser Facility GmbH. All rights reserved. """ +import collections + import numpy as np -_MAX_N_PULSES_PER_TRAIN = 2700 +from extra_foam.config import config as _core_config + + +class Config(collections.abc.Mapping): + + __data = { + "TOPIC": "", + "MAX_N_PULSES_PER_TRAIN": 2700, + "EXTENSION_PORT": _core_config["EXTENSION_PORT"], + "USE_KARABO_GATE_CLIENT": False, + "DEFAULT_CLIENT_PORT": 45454, + "CLIENT_TIME_OUT": 0.1, # second + # initial (width, height) of a special analysis window + "GUI_SPECIAL_WINDOW_SIZE": (1680, 1080), + # interval for polling new processed data, in milliseconds + "GUI_PLOT_UPDATE_TIMER": 10, + } + + def __getitem__(self, idx): + """Overload.""" + return self.__data.__getitem__(idx) + + def __iter__(self): + """Overload.""" + return self.__data.__iter__() + + def __len__(self): + """overload.""" + return self.__data.__len__() + + def load(self, topic, **kwargs): + self.__data.__setitem__("TOPIC", topic) + + for k, v in kwargs.items(): + if k in self: + self.__data.__setitem__(k, v) + else: + raise KeyError + + @property + def topics(self): + return _core_config.topics + ('DET',) + + +config = Config() + _MAX_INT32 = np.iinfo(np.int32).max _MIN_INT32 = np.iinfo(np.int32).min @@ -24,12 +71,3 @@ "MID": "MID_EXP_DES/DET/GOTTHARD_RECEIVER:daqOutput", "SCS": "SCS_PAM_XOX/DET/GOTTHARD_RECEIVER1:daqOutput", } - -_DEFAULT_CLIENT_PORT = 45454 - -_CLIENT_TIME_OUT = 0.1 # second - -# initial (width, height) of a special analysis window -_GUI_SPECIAL_WINDOW_SIZE = (1680, 1080) -# interval for polling new processed data, in milliseconds -_GUI_PLOT_UPDATE_TIMER = 10 diff --git a/extra_foam/special_suite/facade.py b/extra_foam/special_suite/facade.py index 95c954aa7..4c27dd33c 100644 --- a/extra_foam/special_suite/facade.py +++ b/extra_foam/special_suite/facade.py @@ -14,6 +14,9 @@ QGridLayout, QLabel, QMainWindow, QVBoxLayout, QWidget ) +from extra_foam.gui.gui_helpers import create_icon_button + +from . import __version__ from .cam_view_w import CamViewWindow from .multicam_view_w import MultiCamViewWindow from .gotthard_w import GotthardWindow @@ -22,8 +25,6 @@ from .xas_tim_w import XasTimWindow from .xas_tim_xmcd_w import XasTimXmcdWindow from .module_scan_w import ModuleScanWindow -from ..gui.gui_helpers import create_icon_button -from .. import __version__ class SpecialSuiteController: diff --git a/extra_foam/special_suite/gotthard_proc.py b/extra_foam/special_suite/gotthard_proc.py index ba9fdf2f6..a34c648ac 100644 --- a/extra_foam/special_suite/gotthard_proc.py +++ b/extra_foam/special_suite/gotthard_proc.py @@ -12,8 +12,8 @@ from extra_foam.algorithms import hist_with_stats from extra_foam.pipeline.data_model import MovingAverageArray -from .special_analysis_base import ProcessingError, profiler, QThreadWorker from .config import _MAX_INT32, _PIXEL_DTYPE +from .special_analysis_base import ProcessingError, profiler, QThreadWorker _DEFAULT_N_BINS = 10 _DEFAULT_BIN_RANGE = "-inf, inf" diff --git a/extra_foam/special_suite/gotthard_pump_probe_proc.py b/extra_foam/special_suite/gotthard_pump_probe_proc.py index f3e7148ab..a3a247666 100644 --- a/extra_foam/special_suite/gotthard_pump_probe_proc.py +++ b/extra_foam/special_suite/gotthard_pump_probe_proc.py @@ -11,8 +11,8 @@ from extra_foam.pipeline.data_model import MovingAverageArray -from .special_analysis_base import profiler, ProcessingError, QThreadWorker from .config import _PIXEL_DTYPE +from .special_analysis_base import profiler, ProcessingError, QThreadWorker class GotthardPpProcessor(QThreadWorker): diff --git a/extra_foam/special_suite/gotthard_pump_probe_w.py b/extra_foam/special_suite/gotthard_pump_probe_w.py index 9bce12816..97c297b30 100644 --- a/extra_foam/special_suite/gotthard_pump_probe_w.py +++ b/extra_foam/special_suite/gotthard_pump_probe_w.py @@ -11,18 +11,18 @@ from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import QSplitter -from extra_foam.gui.plot_widgets import ImageViewF, PlotWidgetF -from extra_foam.gui.misc_widgets import FColor from extra_foam.gui.ctrl_widgets import ( SmartLineEdit, SmartSliceLineEdit, SmartStringLineEdit ) +from extra_foam.gui.misc_widgets import FColor +from extra_foam.gui.plot_widgets import ImageViewF, PlotWidgetF +from .config import _MAX_N_GOTTHARD_PULSES, GOTTHARD_DEVICE from .gotthard_pump_probe_proc import GotthardPpProcessor from .special_analysis_base import ( create_special, QThreadKbClient, _BaseAnalysisCtrlWidgetS, _SpecialAnalysisBase ) -from .config import _MAX_N_GOTTHARD_PULSES, GOTTHARD_DEVICE class GotthardPpCtrlWidget(_BaseAnalysisCtrlWidgetS): diff --git a/extra_foam/special_suite/gotthard_w.py b/extra_foam/special_suite/gotthard_w.py index 64148c94c..aff503dfa 100644 --- a/extra_foam/special_suite/gotthard_w.py +++ b/extra_foam/special_suite/gotthard_w.py @@ -13,15 +13,16 @@ from PyQt5.QtGui import QDoubleValidator, QIntValidator from PyQt5.QtWidgets import QCheckBox, QSplitter -from extra_foam.gui.plot_widgets import ( - HistMixin, ImageViewF, PlotWidgetF -) -from extra_foam.gui.misc_widgets import FColor from extra_foam.gui.ctrl_widgets.smart_widgets import ( SmartBoundaryLineEdit, SmartLineEdit, SmartSliceLineEdit, SmartStringLineEdit ) +from extra_foam.gui.misc_widgets import FColor +from extra_foam.gui.plot_widgets import ( + HistMixin, ImageViewF, PlotWidgetF +) +from .config import _MAX_N_GOTTHARD_PULSES, GOTTHARD_DEVICE from .gotthard_proc import ( GotthardProcessor, _DEFAULT_BIN_RANGE, _DEFAULT_N_BINS ) @@ -29,7 +30,6 @@ create_special, QThreadKbClient, _BaseAnalysisCtrlWidgetS, _SpecialAnalysisBase ) -from .config import _MAX_N_GOTTHARD_PULSES, GOTTHARD_DEVICE _MAX_N_BINS = 999 diff --git a/extra_foam/special_suite/multicam_view_w.py b/extra_foam/special_suite/multicam_view_w.py index 50cd039c7..c6a7834e3 100644 --- a/extra_foam/special_suite/multicam_view_w.py +++ b/extra_foam/special_suite/multicam_view_w.py @@ -11,13 +11,14 @@ from PyQt5.QtWidgets import QGridLayout, QWidget +from extra_foam.gui.ctrl_widgets.smart_widgets import SmartLineEdit +from extra_foam.gui.plot_widgets import ImageViewF + from .multicam_view_proc import MultiCamViewProcessor from .special_analysis_base import ( create_special, QThreadKbClient, _BaseAnalysisCtrlWidgetS, _SpecialAnalysisBase ) -from ..gui.plot_widgets import ImageViewF -from ..gui.ctrl_widgets.smart_widgets import SmartLineEdit _N_CAMERAS = 4 diff --git a/extra_foam/special_services.py b/extra_foam/special_suite/services.py similarity index 86% rename from extra_foam/special_services.py rename to extra_foam/special_suite/services.py index bc19fda32..511a31c83 100644 --- a/extra_foam/special_services.py +++ b/extra_foam/special_suite/services.py @@ -10,11 +10,9 @@ import argparse import faulthandler -from . import __version__ +from . import logger, mkQApp, __version__ from .config import config -from .logger import logger_suite as logger -from .gui import mkQApp -from .special_suite import SpecialSuiteController +from .facade import SpecialSuiteController def application(): @@ -22,7 +20,7 @@ def application(): parser.add_argument('-V', '--version', action='version', version="%(prog)s " + __version__) parser.add_argument("topic", help="Name of the instrument", - choices=config.topics + ('DET',), + choices=config.topics, type=lambda s: s.upper()) parser.add_argument('--debug', action='store_true', help="Run in debug mode") diff --git a/extra_foam/special_suite/special_analysis_base.py b/extra_foam/special_suite/special_analysis_base.py index d214bd257..afba52bce 100644 --- a/extra_foam/special_suite/special_analysis_base.py +++ b/extra_foam/special_suite/special_analysis_base.py @@ -22,31 +22,27 @@ from PyQt5.QtGui import QColor, QIntValidator from PyQt5.QtWidgets import ( QCheckBox, QFileDialog, QFormLayout, QFrame, QGridLayout, QLabel, - QMainWindow, QPushButton, QSizePolicy, QSplitter, QWidget + QMainWindow, QPushButton, QSizePolicy, QSplitter ) from extra_data import RunDirectory from karabo_bridge import Client as KaraboBridgeClient -from extra_foam import __version__ from extra_foam.algorithms import intersection -from extra_foam.config import config as __core_config from extra_foam.database import SourceCatalog from extra_foam.gui.ctrl_widgets import _SingleRoiCtrlWidget, SmartLineEdit from extra_foam.gui.plot_widgets import ImageViewF from extra_foam.gui.misc_widgets import GuiLogger, set_button_color -from extra_foam.logger import logger_suite as logger from extra_foam.pipeline.f_queue import SimpleQueue from extra_foam.pipeline.f_transformer import DataTransformer from extra_foam.pipeline.f_zmq import FoamZmqClient from extra_foam.pipeline.exceptions import ProcessingError -_EXTENSION_PORT = __core_config["EXTENSION_PORT"] +from . import __version__ -from .config import ( - _IMAGE_DTYPE, _DEFAULT_CLIENT_PORT, _CLIENT_TIME_OUT, - _GUI_PLOT_UPDATE_TIMER, _GUI_SPECIAL_WINDOW_SIZE -) + +from . import logger +from .config import _IMAGE_DTYPE, config class _SharedCtrlWidgetS(QFrame): @@ -75,7 +71,7 @@ def __init__(self, parent=None, *, with_dark=True, with_levels=True): self._hostname_le = SmartLineEdit("127.0.0.1") self._hostname_le.setMinimumWidth(100) - self._port_le = SmartLineEdit(str(_DEFAULT_CLIENT_PORT)) + self._port_le = SmartLineEdit(str(config["DEFAULT_CLIENT_PORT"])) self._port_le.setValidator(QIntValidator(0, 65535)) self.start_btn = QPushButton("Start") @@ -573,8 +569,8 @@ def onResetST(self): def updateParamsST(self, params): """Update internal states of the client.""" self._endpoint_st = params["endpoint"] - ctl = self._catalog_st + ctl = self._catalog_st ctl.clear() for name, ppt in params["sources"]: ctl.add_item(None, name, None, ppt, None, None) @@ -588,7 +584,7 @@ def run(self): self.onResetST() with self._client_instance_type( - self._endpoint_st, timeout=_CLIENT_TIME_OUT) as client: + self._endpoint_st, timeout=config["CLIENT_TIME_OUT"]) as client: self.log.info(f"Connected to {self._endpoint_st}") @@ -629,7 +625,7 @@ def run(self): self.onResetST() with self._client_instance_type( - self._endpoint_st, timeout=_CLIENT_TIME_OUT) as client: + self._endpoint_st, timeout=config["CLIENT_TIME_OUT"]) as client: self.log.info(f"Connected to {self._endpoint_st}") correlated = None while not self.isInterruptionRequested(): @@ -676,7 +672,7 @@ class _SpecialAnalysisBase(QMainWindow): It should be inherited by all concrete windows. """ - _TOTAL_W, _TOTAL_H = _GUI_SPECIAL_WINDOW_SIZE + _TOTAL_W, _TOTAL_H = config["GUI_SPECIAL_WINDOW_SIZE"] started_sgn = pyqtSignal() stopped_sgn = pyqtSignal() @@ -690,7 +686,8 @@ def __init__(self, topic, **kwargs): self._topic_st = topic - self.setWindowTitle(f"EXtra-foam {__version__} - {self._title}") + self.setWindowTitle(f"EXtra-foam {__version__} - " + + f"special suite - {self._title}") self._com_ctrl_st = _SharedCtrlWidgetS(**kwargs) @@ -703,10 +700,12 @@ def __init__(self, topic, **kwargs): self._ctrl_widget_st = self._ctrl_instance_type(topic) if isinstance(self._client_st, QThreadFoamClient): - self._com_ctrl_st.updateDefaultPort(_EXTENSION_PORT) + self._com_ctrl_st.updateDefaultPort(config["EXTENSION_PORT"]) - self._plot_widgets_st = WeakKeyDictionary() # book-keeping plot widgets - self._image_views_st = WeakKeyDictionary() # book-keeping ImageView widget + # book-keeping plot widgets + self._plot_widgets_st = WeakKeyDictionary() + # book-keeping ImageView widget + self._image_views_st = WeakKeyDictionary() self._data_st = None @@ -718,7 +717,7 @@ def __init__(self, topic, **kwargs): self.setCentralWidget(self._cw_st) self._plot_timer_st = QTimer() - self._plot_timer_st.setInterval(_GUI_PLOT_UPDATE_TIMER) + self._plot_timer_st.setInterval(config["GUI_PLOT_UPDATE_TIMER"]) self._plot_timer_st.timeout.connect(self.updateWidgetsST) # init UI diff --git a/extra_foam/special_suite/tests/test_camview.py b/extra_foam/special_suite/tests/test_camview.py index 6fb21deff..c2b4094d7 100644 --- a/extra_foam/special_suite/tests/test_camview.py +++ b/extra_foam/special_suite/tests/test_camview.py @@ -9,10 +9,9 @@ from PyQt5.QtCore import Qt from PyQt5.QtTest import QSignalSpy, QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp from extra_foam.pipeline.tests import _RawDataMixin +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.cam_view_proc import CamViewProcessor from extra_foam.special_suite.cam_view_w import ( CamViewWindow, CameraView, CameraViewRoiHist diff --git a/extra_foam/special_suite/tests/test_facade.py b/extra_foam/special_suite/tests/test_facade.py index f389b6d33..33e89c6db 100644 --- a/extra_foam/special_suite/tests/test_facade.py +++ b/extra_foam/special_suite/tests/test_facade.py @@ -1,7 +1,6 @@ import unittest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.facade import _SpecialSuiteFacadeBase diff --git a/extra_foam/special_suite/tests/test_gotthard.py b/extra_foam/special_suite/tests/test_gotthard.py index 3b4495400..02a978d86 100644 --- a/extra_foam/special_suite/tests/test_gotthard.py +++ b/extra_foam/special_suite/tests/test_gotthard.py @@ -9,8 +9,9 @@ from PyQt5.QtCore import Qt from PyQt5.QtTest import QSignalSpy, QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _RawDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.gotthard_proc import GotthardProcessor from extra_foam.special_suite.gotthard_w import ( GotthardWindow, GotthardImageView, GotthardAvgPlot, GotthardPulsePlot, @@ -19,7 +20,6 @@ from extra_foam.special_suite.special_analysis_base import ( ProcessingError ) -from extra_foam.pipeline.tests import _RawDataMixin app = mkQApp() diff --git a/extra_foam/special_suite/tests/test_gotthard_pump_probe.py b/extra_foam/special_suite/tests/test_gotthard_pump_probe.py index f57b9260c..8cbde77f0 100644 --- a/extra_foam/special_suite/tests/test_gotthard_pump_probe.py +++ b/extra_foam/special_suite/tests/test_gotthard_pump_probe.py @@ -8,15 +8,15 @@ from PyQt5.QtCore import Qt from PyQt5.QtTest import QSignalSpy, QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _RawDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.gotthard_pump_probe_proc import GotthardPpProcessor from extra_foam.special_suite.gotthard_pump_probe_w import ( GotthardPumpProbeWindow, GotthardPpImageView, GotthardPpFomMeanPlot, GotthardPpFomPulsePlot, GotthardPpRawPulsePlot, GotthardPpDarkPulsePlot ) from extra_foam.special_suite.special_analysis_base import ProcessingError -from extra_foam.pipeline.tests import _RawDataMixin app = mkQApp() diff --git a/extra_foam/special_suite/tests/test_module_scan.py b/extra_foam/special_suite/tests/test_module_scan.py index a4a8700d1..fbac2941c 100644 --- a/extra_foam/special_suite/tests/test_module_scan.py +++ b/extra_foam/special_suite/tests/test_module_scan.py @@ -6,8 +6,7 @@ import pytest import numpy as np -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.module_scan_proc import ModuleScanProcessor from extra_foam.special_suite.module_scan_w import ( ModuleScanWindow diff --git a/extra_foam/special_suite/tests/test_multicamview.py b/extra_foam/special_suite/tests/test_multicamview.py index 3299f6afb..402125eb0 100644 --- a/extra_foam/special_suite/tests/test_multicamview.py +++ b/extra_foam/special_suite/tests/test_multicamview.py @@ -8,13 +8,13 @@ from PyQt5.QtCore import Qt from PyQt5.QtTest import QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _RawDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.multicam_view_proc import MultiCamViewProcessor from extra_foam.special_suite.multicam_view_w import ( MultiCamViewWindow, CameraView ) -from extra_foam.pipeline.tests import _RawDataMixin app = mkQApp() diff --git a/extra_foam/special_suite/tests/test_special_analysis_base.py b/extra_foam/special_suite/tests/test_special_analysis_base.py index 05269dcf3..cae85749d 100644 --- a/extra_foam/special_suite/tests/test_special_analysis_base.py +++ b/extra_foam/special_suite/tests/test_special_analysis_base.py @@ -8,14 +8,14 @@ from PyQt5.QtTest import QSignalSpy, QTest from PyQt5.QtWidgets import QWidget -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _RawDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.gui.plot_widgets import ImageViewF, PlotWidgetF from extra_foam.special_suite.special_analysis_base import ( _BaseAnalysisCtrlWidgetS, _SpecialAnalysisBase, create_special, QThreadKbClient, QThreadFoamClient, QThreadWorker ) -from extra_foam.pipeline.tests import _RawDataMixin app = mkQApp() diff --git a/extra_foam/special_suite/tests/test_trxas.py b/extra_foam/special_suite/tests/test_trxas.py index b3d3d17e3..7c12a17b3 100644 --- a/extra_foam/special_suite/tests/test_trxas.py +++ b/extra_foam/special_suite/tests/test_trxas.py @@ -7,13 +7,13 @@ from PyQt5.QtCore import Qt from PyQt5.QtTest import QSignalSpy, QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _TestDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.trxas_proc import TrXasProcessor from extra_foam.special_suite.trxas_w import ( TrXasWindow, TrXasSpectraPlot, TrXasRoiImageView, TrXasHeatmap ) -from extra_foam.pipeline.tests import _TestDataMixin from . import _SpecialSuiteWindowTestBase, _SpecialSuiteProcessorTestBase diff --git a/extra_foam/special_suite/tests/test_xas_tim.py b/extra_foam/special_suite/tests/test_xas_tim.py index e7d630dd7..f93adb677 100644 --- a/extra_foam/special_suite/tests/test_xas_tim.py +++ b/extra_foam/special_suite/tests/test_xas_tim.py @@ -7,8 +7,9 @@ from PyQt5.QtCore import Qt, QPoint from PyQt5.QtTest import QSignalSpy, QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _RawDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.xas_tim_proc import ProcessingError, XasTimProcessor from extra_foam.special_suite.xas_tim_w import ( XasTimWindow, XasTimXgmPulsePlot, XasTimDigitizerPulsePlot, XasTimMonoScanPlot, @@ -16,7 +17,6 @@ _DEFAULT_N_PULSES_PER_TRAIN, _DEFAULT_I0_THRESHOLD, _MAX_WINDOW, _MAX_CORRELATION_WINDOW, _DEFAULT_N_BINS ) -from extra_foam.pipeline.tests import _RawDataMixin from . import _SpecialSuiteWindowTestBase, _SpecialSuiteProcessorTestBase diff --git a/extra_foam/special_suite/tests/test_xas_tim_xmcd.py b/extra_foam/special_suite/tests/test_xas_tim_xmcd.py index d2ec468d9..fb6e96b69 100644 --- a/extra_foam/special_suite/tests/test_xas_tim_xmcd.py +++ b/extra_foam/special_suite/tests/test_xas_tim_xmcd.py @@ -7,8 +7,9 @@ from PyQt5.QtCore import Qt, QPoint from PyQt5.QtTest import QSignalSpy, QTest -from extra_foam.logger import logger_suite as logger -from extra_foam.gui import mkQApp +from extra_foam.pipeline.tests import _RawDataMixin + +from extra_foam.special_suite import logger, mkQApp from extra_foam.special_suite.xas_tim_xmcd_proc import XasTimXmcdProcessor from extra_foam.special_suite.xas_tim_proc import ProcessingError from extra_foam.special_suite.xas_tim_xmcd_w import ( @@ -16,7 +17,6 @@ XasTimCorrelationPlot, XasTimXmcdAbsorpPnSpectraPlot, XasTimXmcdSpectraPlot, XasTimXgmSpectrumPlot, _DEFAULT_CURRENT_THRESHOLD ) -from extra_foam.pipeline.tests import _RawDataMixin from . import _SpecialSuiteWindowTestBase, _SpecialSuiteProcessorTestBase diff --git a/extra_foam/special_suite/trxas_w.py b/extra_foam/special_suite/trxas_w.py index dc3f815f2..519669422 100644 --- a/extra_foam/special_suite/trxas_w.py +++ b/extra_foam/special_suite/trxas_w.py @@ -11,22 +11,21 @@ from PyQt5.QtGui import QIntValidator from PyQt5.QtWidgets import QPushButton, QSplitter -from extra_foam.gui.plot_widgets import ( - ImageViewF, TimedImageViewF, TimedPlotWidgetF -) -from extra_foam.gui.misc_widgets import FColor from extra_foam.gui.ctrl_widgets.smart_widgets import ( SmartBoundaryLineEdit, SmartLineEdit, SmartStringLineEdit ) - -from .trxas_proc import ( - TrXasProcessor, _DEFAULT_N_BINS, _DEFAULT_BIN_RANGE +from extra_foam.gui.misc_widgets import FColor +from extra_foam.gui.plot_widgets import ( + ImageViewF, TimedImageViewF, TimedPlotWidgetF ) + from .special_analysis_base import ( create_special, QThreadFoamClient, _BaseAnalysisCtrlWidgetS, _SpecialAnalysisBase ) - +from .trxas_proc import ( + TrXasProcessor, _DEFAULT_N_BINS, _DEFAULT_BIN_RANGE +) _MAX_N_BINS = 999 diff --git a/extra_foam/special_suite/xas_tim_proc.py b/extra_foam/special_suite/xas_tim_proc.py index 7d41a9c59..6faa66716 100644 --- a/extra_foam/special_suite/xas_tim_proc.py +++ b/extra_foam/special_suite/xas_tim_proc.py @@ -9,10 +9,10 @@ """ import numpy as np +from extra_foam.algorithms import compute_spectrum_1d from extra_foam.pipeline.processors.base_processor import ( SimpleSequence, SimplePairSequence ) -from extra_foam.algorithms import compute_spectrum_1d from .special_analysis_base import ProcessingError, profiler, QThreadWorker diff --git a/extra_foam/special_suite/xas_tim_w.py b/extra_foam/special_suite/xas_tim_w.py index 0bb4d5a93..8fe20c3da 100644 --- a/extra_foam/special_suite/xas_tim_w.py +++ b/extra_foam/special_suite/xas_tim_w.py @@ -16,10 +16,10 @@ ) from extra_foam.gui.ctrl_widgets import SmartLineEdit, SmartStringLineEdit -from extra_foam.gui.plot_widgets import PlotWidgetF, TimedPlotWidgetF from extra_foam.gui.misc_widgets import FColor +from extra_foam.gui.plot_widgets import PlotWidgetF, TimedPlotWidgetF -from .config import _MAX_N_PULSES_PER_TRAIN +from .config import config from .xas_tim_proc import ( XasTimProcessor, _DEFAULT_N_PULSES_PER_TRAIN, _DEFAULT_I0_THRESHOLD, _MAX_WINDOW, _MAX_CORRELATION_WINDOW, _DIGITIZER_CHANNEL_NAMES, @@ -64,7 +64,7 @@ def __init__(self, *args, **kwargs): self.n_pulses_per_train_le = SmartLineEdit( str(_DEFAULT_N_PULSES_PER_TRAIN)) self.n_pulses_per_train_le.setValidator( - QIntValidator(1, _MAX_N_PULSES_PER_TRAIN)) + QIntValidator(1, config["MAX_N_PULSES_PER_TRAIN"])) self.apd_stride_le = SmartLineEdit("1") diff --git a/extra_foam/special_suite/xas_tim_xmcd_proc.py b/extra_foam/special_suite/xas_tim_xmcd_proc.py index a218f1dea..c84c1a250 100644 --- a/extra_foam/special_suite/xas_tim_xmcd_proc.py +++ b/extra_foam/special_suite/xas_tim_xmcd_proc.py @@ -9,10 +9,10 @@ """ import numpy as np +from extra_foam.algorithms import compute_spectrum_1d from extra_foam.pipeline.processors.base_processor import ( SimpleSequence, SimplePairSequence ) -from extra_foam.algorithms import compute_spectrum_1d from .special_analysis_base import profiler from .xas_tim_proc import XasTimProcessor, _MAX_WINDOW diff --git a/extra_foam/special_suite/xas_tim_xmcd_w.py b/extra_foam/special_suite/xas_tim_xmcd_w.py index 3b01ab286..47567efe4 100644 --- a/extra_foam/special_suite/xas_tim_xmcd_w.py +++ b/extra_foam/special_suite/xas_tim_xmcd_w.py @@ -17,10 +17,10 @@ from extra_foam.gui.plot_widgets import TimedPlotWidgetF from extra_foam.gui.misc_widgets import FColor -from .xas_tim_xmcd_proc import XasTimXmcdProcessor, _DEFAULT_CURRENT_THRESHOLD from .special_analysis_base import ( create_special, QThreadKbClient, _SpecialAnalysisBase ) +from .xas_tim_xmcd_proc import XasTimXmcdProcessor, _DEFAULT_CURRENT_THRESHOLD from .xas_tim_w import ( XasTimCtrlWidget, XasTimCorrelationPlot, XasTimXgmPulsePlot, XasTimDigitizerPulsePlot, XasTimXgmSpectrumPlot diff --git a/setup.py b/setup.py index b14ee4b30..b34aec671 100644 --- a/setup.py +++ b/setup.py @@ -279,7 +279,7 @@ def has_ext_modules(self): entry_points={ 'console_scripts': [ 'extra-foam=extra_foam.services:application', - 'extra-foam-special-suite=extra_foam.special_services:application', + 'extra-foam-special-suite=extra_foam.special_suite.services:application', 'extra-foam-kill=extra_foam.services:kill_application', 'extra-foam-stream=extra_foam.services:stream_file', 'extra-foam-redis-cli=extra_foam.services:start_redis_client',