GUI: Raster is using more generalized DTZ/transmission settings
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import math
|
||||
from typing import Annotated, List
|
||||
|
||||
from pydantic import Field, AfterValidator, BaseModel
|
||||
|
||||
@@ -68,7 +68,10 @@ class MainWindow(QMainWindow):
|
||||
)
|
||||
|
||||
self.raster = RasterGridManager(geom=geom)
|
||||
self.data_collection = DataCollectionSettings(s=geom, parent=top_widget, raster_mgr=self.raster)
|
||||
self.data_collection = DataCollectionSettings(s=geom,
|
||||
parent=top_widget,
|
||||
raster_mgr=self.raster,
|
||||
diffraction=diffraction)
|
||||
top_widget_layout.addWidget(self.data_collection)
|
||||
|
||||
self.camera_image = SampleCameraImageLabel(geom=geom, raster=self.raster, parent=top_widget, default_image=default_image)
|
||||
|
||||
@@ -7,6 +7,8 @@ from PySide6.QtWidgets import (
|
||||
QPushButton,
|
||||
QWidget,
|
||||
)
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest
|
||||
from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
|
||||
@@ -23,8 +25,11 @@ class DataCollectionSettings(QFrame):
|
||||
standard_data_collection = Signal(RotationScanRequest)
|
||||
evaluate_grid = Signal()
|
||||
|
||||
def __init__(self, s: SampleGeometryModel,
|
||||
raster_mgr: RasterGridManager, parent=None):
|
||||
def __init__(self,
|
||||
s: SampleGeometryModel,
|
||||
raster_mgr: RasterGridManager,
|
||||
diffraction: DiffractionGeometry,
|
||||
parent=None):
|
||||
super().__init__(parent)
|
||||
self.setFixedWidth(400)
|
||||
self.setFrameShape(QFrame.Shape.StyledPanel)
|
||||
@@ -42,7 +47,8 @@ class DataCollectionSettings(QFrame):
|
||||
|
||||
self.tab_widget = QTabWidget(parent=widget)
|
||||
|
||||
self.raster = RasterDataCollectionPanel(parent=self.tab_widget, raster_mgr=raster_mgr)
|
||||
self.raster = RasterDataCollectionPanel(parent=self.tab_widget, raster_mgr=raster_mgr,
|
||||
diffraction=diffraction)
|
||||
self.tab_widget.addTab(self.raster, "Raster")
|
||||
|
||||
self.screening = ScreeningDataCollectionPanel(parent=self.tab_widget)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime
|
||||
|
||||
from PySide6.QtCore import Signal, Slot
|
||||
from PySide6.QtCore import Signal, Slot, Qt
|
||||
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QLineEdit, QSpinBox, QCheckBox
|
||||
|
||||
from aaregui.widgets.title_label import TitleLabel
|
||||
@@ -39,6 +39,7 @@ class FilePathPanel(QWidget):
|
||||
self.run_number_edit.setStyleSheet("background-color: rgb(255, 255, 255);")
|
||||
self.run_number_edit.setValue(1)
|
||||
self.run_number_edit.setRange(1, 999)
|
||||
self.run_number_edit.setAlignment(Qt.AlignmentFlag.AlignRight)
|
||||
grid_layout.addWidget(self.run_number_edit, 4, 1)
|
||||
|
||||
grid_layout.addWidget(QLabel("File name", parent=self), 5, 0)
|
||||
|
||||
@@ -1,94 +1,80 @@
|
||||
from PySide6.QtCore import Signal, Slot, Qt
|
||||
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSizePolicy, QSpacerItem
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaregui.panels.scan_settings_panel import ScanSettingsPanel
|
||||
from aaregui.scan_logic.raster_grid_manager import RasterGridManager
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
|
||||
class RasterDataCollectionPanel(QWidget):
|
||||
class RasterDataCollectionPanel(ScanSettingsPanel):
|
||||
grid_size_updated = Signal(float, float)
|
||||
exp_time_updated = Signal(float)
|
||||
transmission_updated = Signal(float)
|
||||
dtz_updated = Signal(float)
|
||||
|
||||
def __init__(self, raster_mgr :RasterGridManager, parent=None):
|
||||
super().__init__(parent)
|
||||
def __init__(self, raster_mgr :RasterGridManager,
|
||||
diffraction: DiffractionGeometry,
|
||||
default_dtz: float = 200.0,
|
||||
default_transmission: float = 1.0,
|
||||
parent=None):
|
||||
super().__init__(diffraction, default_dtz, default_transmission, parent)
|
||||
|
||||
self.__n_x = raster_mgr.active_grid.n_x
|
||||
self.__n_y = raster_mgr.active_grid.n_y
|
||||
self.__size_x = raster_mgr.active_grid.grid_size_mm.x * 1000.0
|
||||
self.__size_y = raster_mgr.active_grid.grid_size_mm.y * 1000.0
|
||||
|
||||
grid_layout = QGridLayout(self)
|
||||
|
||||
grid_layout.addWidget(QLabel("High resolution", parent=self), 0, 0)
|
||||
self.high_res_enter = NumberLineEdit(
|
||||
0.5, 10, decimals=2, default=2.0, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.high_res_enter, 0, 1, 1, 3)
|
||||
grid_layout.addWidget(QLabel("Å", parent=self), 0, 4)
|
||||
grid_layout.addWidget(QLabel("Detector distance", parent=self), 1, 0)
|
||||
self.dtz_enter = NumberLineEdit(60, 1000, decimals=2, default=raster_mgr.active_grid.dtz, parent=self)
|
||||
grid_layout.addWidget(self.dtz_enter, 1, 1, 1, 3)
|
||||
grid_layout.addWidget(QLabel("mm", parent=self), 1, 4)
|
||||
self.dtz_enter.newValue.connect(self.dtz)
|
||||
|
||||
grid_layout.addWidget(QLabel("Beam transmission", parent=self), 2, 0)
|
||||
self.transmission_enter = NumberLineEdit(
|
||||
0, 1.0, decimals=4, default=raster_mgr.active_grid.transmission, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.transmission_enter, 2, 1,1,3)
|
||||
self.transmission_enter.newValue.connect(self.transmission)
|
||||
|
||||
grid_layout.addWidget(QLabel("Grid element size", parent=self), 3, 0)
|
||||
self._layout.addWidget(QLabel("Grid element size", parent=self), 3, 0)
|
||||
|
||||
self.width_enter = NumberLineEdit(5, 100, decimals=0, default=self.__size_x, parent=self)
|
||||
self.width_enter.newValue.connect(self.grid_size)
|
||||
grid_layout.addWidget(self.width_enter, 3, 1)
|
||||
self._layout.addWidget(self.width_enter, 3, 1)
|
||||
|
||||
grid_layout.addWidget(QLabel(" x ", parent=self), 3, 2)
|
||||
self._layout.addWidget(QLabel(" x ", parent=self), 3, 2)
|
||||
|
||||
self.height_enter = NumberLineEdit(5, 100, decimals=0, default=self.__size_y, parent=self)
|
||||
self.height_enter.newValue.connect(self.grid_size)
|
||||
grid_layout.addWidget(self.height_enter, 3, 3)
|
||||
|
||||
grid_layout.addWidget(QLabel("μm", parent=self), 3, 4)
|
||||
|
||||
grid_layout.addWidget(QLabel("Image time", parent=self), 4, 0)
|
||||
self._layout.addWidget(self.height_enter, 3, 3)
|
||||
|
||||
self._layout.addWidget(QLabel("μm", parent=self), 3, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Image time", parent=self), 4, 0)
|
||||
self.image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, raster_mgr.active_grid.exp_time_s, decimals=4, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.image_time_enter, 4, 1, 1, 3)
|
||||
grid_layout.addWidget(QLabel("s", parent=self), 4, 4)
|
||||
self._layout.addWidget(self.image_time_enter, 4, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("s", parent=self), 4, 4)
|
||||
self.image_time_enter.newValue.connect(self.exp_time_s)
|
||||
|
||||
grid_layout.addWidget(QLabel("Grid elements", parent=self), 5, 0)
|
||||
self._layout.addWidget(QLabel("Grid elements", parent=self), 5, 0)
|
||||
|
||||
self.n_x_label = QLabel("-", parent=self)
|
||||
self.n_x_label.setAlignment(Qt.AlignmentFlag.AlignRight)
|
||||
grid_layout.addWidget(self.n_x_label, 5, 1)
|
||||
grid_layout.addWidget(QLabel(" x ", parent=self), 5, 2)
|
||||
self._layout.addWidget(self.n_x_label, 5, 1)
|
||||
self._layout.addWidget(QLabel(" x ", parent=self), 5, 2)
|
||||
|
||||
self.n_y_label = QLabel("-", parent=self)
|
||||
self.n_y_label.setAlignment(Qt.AlignmentFlag.AlignRight)
|
||||
grid_layout.addWidget(self.n_y_label, 5, 3)
|
||||
self._layout.addWidget(self.n_y_label, 5, 3)
|
||||
|
||||
grid_layout.addWidget(QLabel("Grid size", parent=self), 6, 0)
|
||||
self._layout.addWidget(QLabel("Grid size", parent=self), 6, 0)
|
||||
|
||||
self.size_x_label = QLabel("-", parent=self)
|
||||
self.size_x_label.setAlignment(Qt.AlignmentFlag.AlignRight)
|
||||
grid_layout.addWidget(self.size_x_label, 6, 1)
|
||||
grid_layout.addWidget(QLabel(" x ", parent=self), 6, 2)
|
||||
self._layout.addWidget(self.size_x_label, 6, 1)
|
||||
self._layout.addWidget(QLabel(" x ", parent=self), 6, 2)
|
||||
|
||||
self.size_y_label = QLabel("-", parent=self)
|
||||
self.size_y_label.setAlignment(Qt.AlignmentFlag.AlignRight)
|
||||
grid_layout.addWidget(self.size_y_label, 6, 3)
|
||||
self._layout.addWidget(self.size_y_label, 6, 3)
|
||||
|
||||
grid_layout.addWidget(QLabel("μm", parent=self), 6, 4)
|
||||
self._layout.addWidget(QLabel("μm", parent=self), 6, 4)
|
||||
|
||||
horizontal_spacer = QSpacerItem(
|
||||
40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding
|
||||
)
|
||||
grid_layout.addItem(horizontal_spacer, 7, 0, 1, 4)
|
||||
self._layout.addItem(horizontal_spacer, 7, 0, 1, 4)
|
||||
self.update_grid_scan_size()
|
||||
|
||||
@Slot(float)
|
||||
@@ -103,14 +89,6 @@ class RasterDataCollectionPanel(QWidget):
|
||||
def exp_time_s(self, inp: float):
|
||||
self.exp_time_updated.emit(inp)
|
||||
|
||||
@Slot(float)
|
||||
def dtz(self, inp: float):
|
||||
self.dtz_updated.emit(inp)
|
||||
|
||||
@Slot(float)
|
||||
def transmission(self, inp: float):
|
||||
self.transmission_updated.emit(inp)
|
||||
|
||||
@Slot(int, int)
|
||||
def grid_scan_size_change(self, n_x: int, n_y: int):
|
||||
self.__n_x = n_x
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
from PySide6.QtCore import Slot, Signal
|
||||
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.models import DAQStatusModel
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
|
||||
class ScanSettingsPanel(QWidget):
|
||||
dtz_updated = Signal(float)
|
||||
dtz_move = Signal(float)
|
||||
transmission_updated = Signal(float)
|
||||
|
||||
def __init__(self, diffraction: DiffractionGeometry,
|
||||
default_dtz: float = 200.0,
|
||||
default_transmission: float = 1.0,
|
||||
parent=None):
|
||||
super().__init__(parent)
|
||||
self.__diffraction = diffraction
|
||||
|
||||
self._transmission = default_transmission
|
||||
self._dtz = default_dtz
|
||||
self._high_res = diffraction.resolution_angstrom(self._dtz)
|
||||
|
||||
self._layout = QGridLayout(self)
|
||||
|
||||
self._layout.addWidget(QLabel("High resolution", parent=self), 0, 0)
|
||||
self.high_res_enter = NumberLineEdit(
|
||||
0.5, 10, decimals=2, default=self._high_res, parent=self
|
||||
)
|
||||
self._layout.addWidget(self.high_res_enter, 0, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("Å", parent=self), 0, 4)
|
||||
|
||||
self.high_res_enter.newValue.connect(self.set_high_res)
|
||||
|
||||
self._layout.addWidget(QLabel("Detector distance", parent=self), 1, 0)
|
||||
self.dtz_enter = NumberLineEdit(60, 1000, decimals=2, default=self._dtz, parent=self)
|
||||
self._layout.addWidget(self.dtz_enter, 1, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("mm", parent=self), 1, 4)
|
||||
|
||||
self.dtz_enter.newValue.connect(self.set_dtz)
|
||||
|
||||
self._layout.addWidget(QLabel("Beam transmission", parent=self), 2, 0)
|
||||
self.transmission_enter = NumberLineEdit(
|
||||
0, 1.0, decimals=4, default=self._transmission, parent=self
|
||||
)
|
||||
self._layout.addWidget(self.transmission_enter, 2, 1, 1, 3)
|
||||
self.transmission_enter.newValue.connect(self.set_transmission)
|
||||
|
||||
@Slot(DAQStatusModel)
|
||||
def update_daq_status(self, s: DAQStatusModel):
|
||||
self.__diffraction = s.diffraction
|
||||
|
||||
@Slot(float)
|
||||
def set_dtz(self, v: float):
|
||||
self._dtz = v
|
||||
self._high_res = self.__diffraction.resolution_angstrom(self._dtz)
|
||||
self.high_res_enter.update_value(self._high_res)
|
||||
self.dtz_updated.emit(self._dtz)
|
||||
|
||||
@Slot(float)
|
||||
def set_high_res(self, v: float):
|
||||
self._high_res = v
|
||||
self._dtz = self.__diffraction.calc_dtz_mm(v)
|
||||
self.dtz_enter.update_value(self._dtz)
|
||||
self.dtz_updated.emit(self._dtz)
|
||||
|
||||
@Slot(float)
|
||||
def set_transmission(self, v: float):
|
||||
self._transmission = v
|
||||
self.transmission_enter.update_value(self._transmission)
|
||||
self.transmission_updated.emit(self._transmission)
|
||||
@@ -0,0 +1,6 @@
|
||||
from PySide6.QtCore import QObject
|
||||
|
||||
|
||||
class RotationScanManager(QObject):
|
||||
|
||||
pass
|
||||
Reference in New Issue
Block a user