GUI: Data collection running works
This commit is contained in:
1 parent
0d63d920d2
commit
3988c345c9
9 files changed
+141
-332
No files matched your search
@@ -173,16 +173,8 @@ class MainWindow(QMainWindow):
|
||||
# )
|
||||
#
|
||||
|
||||
self.data_collection.standard_data_collection.connect(self.daq.standard_scan)
|
||||
|
||||
self.data_collection.helical.show_helical_start.connect(self.camera_image.show_helical_start)
|
||||
self.data_collection.helical.show_helical_end.connect(self.camera_image.show_helical_end)
|
||||
|
||||
self.camera_image.autofocus.connect(self.daq.autofocus)
|
||||
|
||||
self.camera_image.set_helical_start.connect(self.data_collection.helical.set_start_point)
|
||||
self.camera_image.set_helical_end.connect(self.data_collection.helical.set_end_point)
|
||||
|
||||
self.camera_image.evaluate_grid.connect(self.raster.run_grid_scan)
|
||||
self.data_collection.raster.evaluate_grid.connect(self.raster.run_grid_scan)
|
||||
|
||||
@@ -201,10 +193,8 @@ class MainWindow(QMainWindow):
|
||||
self.data_collection.raster.transmission_updated.connect(self.raster.update_transmission)
|
||||
self.data_collection.raster.dtz_updated.connect(self.raster.update_dtz)
|
||||
|
||||
self.data_collection.file_path_panel.set_file_prefix(self.raster.update_filename)
|
||||
self.raster.update_filename(self.data_collection.file_path_panel.filename)
|
||||
|
||||
self.raster.grid_scan.connect(self.daq.raster_scan)
|
||||
self.data_collection.screening.rotation_scan.connect(self.daq.standard_scan)
|
||||
|
||||
self.raster.grid_scan_size_changed.connect(self.data_collection.raster.grid_scan_size_change)
|
||||
self.status_bar.set_pgroup.connect(self.daq.set_pgroup)
|
||||
|
||||
@@ -14,10 +14,8 @@ from aaredaqlib.rotation_scan import RotationScanRequest
|
||||
from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
|
||||
from aaregui.panels.file_path_panel import FilePathPanel
|
||||
from aaregui.panels.helical_scan_panel import HelicalDataCollectionPanel
|
||||
from aaregui.panels.raster_data_collection import RasterDataCollectionPanel
|
||||
from aaregui.panels.screening_data_collection import ScreeningDataCollectionPanel
|
||||
from aaregui.panels.standard_data_collection import StandardDataCollectionPanel
|
||||
from aaregui.panels.rotation_data_collection import RotationDataCollectionPanel
|
||||
from aaregui.scan_logic.raster_grid_manager import RasterGridManager
|
||||
from aaregui.widgets.title_label import TitleLabel
|
||||
|
||||
@@ -36,81 +34,32 @@ class DataCollectionSettings(QFrame):
|
||||
self.setFrameShape(QFrame.Shape.StyledPanel)
|
||||
self.setFrameShadow(QFrame.Shadow.Raised)
|
||||
|
||||
self.grid_layout = QGridLayout(self)
|
||||
v_layout = QVBoxLayout(self)
|
||||
self.file_path_panel = FilePathPanel(self)
|
||||
self.grid_layout.addWidget(self.file_path_panel, 0, 0, 1, 2)
|
||||
v_layout.addWidget(self.file_path_panel)
|
||||
|
||||
widget = QWidget(self)
|
||||
v_layout = QVBoxLayout(widget)
|
||||
widget.setLayout(v_layout)
|
||||
v_layout.addWidget(TitleLabel("Grid scan"))
|
||||
|
||||
v_layout.addWidget(TitleLabel("Data collection settings"))
|
||||
self.raster = RasterDataCollectionPanel(parent=self, raster_mgr=raster_mgr, diffraction=diffraction)
|
||||
|
||||
self.tab_widget = QTabWidget(parent=widget)
|
||||
v_layout.addWidget(self.raster)
|
||||
|
||||
self.raster = RasterDataCollectionPanel(parent=self.tab_widget, raster_mgr=raster_mgr,
|
||||
diffraction=diffraction)
|
||||
self.tab_widget.addTab(self.raster, "Raster")
|
||||
v_layout.addWidget(TitleLabel("Data collection"))
|
||||
|
||||
self.screening = ScreeningDataCollectionPanel(parent=self.tab_widget,
|
||||
diffraction=diffraction,)
|
||||
self.tab_widget.addTab(self.screening, "Screening")
|
||||
self.screening = RotationDataCollectionPanel(parent=self, diffraction=diffraction)
|
||||
v_layout.addWidget(self.screening)
|
||||
|
||||
self.standard = StandardDataCollectionPanel(parent=self.tab_widget)
|
||||
self.tab_widget.addTab(self.standard, "Standard")
|
||||
|
||||
self.helical = HelicalDataCollectionPanel(s=s, parent=self.tab_widget)
|
||||
self.tab_widget.addTab(self.helical, "Helical")
|
||||
|
||||
v_layout.addWidget(self.tab_widget)
|
||||
v_layout.addStretch()
|
||||
self.grid_layout.addWidget(widget, 1, 0, 1, 2)
|
||||
|
||||
def run_data_collection(self):
|
||||
current_tab = self.tab_widget.currentWidget()
|
||||
self.abort_button = QPushButton("Abort measurement", parent=self)
|
||||
self.abort_button.setStyleSheet("color: rgb(164, 0, 0);")
|
||||
v_layout.addWidget(self.abort_button)
|
||||
|
||||
if current_tab == self.screening:
|
||||
data = self.screening.screening_type.itemData(
|
||||
self.screening.screening_type.currentIndex()
|
||||
)
|
||||
|
||||
if data is None:
|
||||
print("No screening type selected.")
|
||||
return
|
||||
|
||||
r = RotationScanRequest(
|
||||
start_omega_deg=self.screening.start_angle.value,
|
||||
exp_time_s=self.screening.image_time_enter.value,
|
||||
incr_omega_deg=data["omega_step_deg"],
|
||||
wedge_omega_deg=0.1,
|
||||
steps=data["steps"],
|
||||
screening=True
|
||||
)
|
||||
self.standard_data_collection.emit(r)
|
||||
elif current_tab == self.standard:
|
||||
total_angle = self.standard.total_angle.value
|
||||
image_angle = self.standard.image_angle.value
|
||||
if total_angle <= 0 or total_angle < image_angle:
|
||||
print("Total angle is not valid.")
|
||||
return
|
||||
|
||||
image_number = round(total_angle / image_angle)
|
||||
|
||||
r = RotationScanRequest(
|
||||
start_omega_deg=self.standard.start_angle.value,
|
||||
incr_omega_deg=self.standard.image_angle.value,
|
||||
steps=image_number,
|
||||
exp_time_s=self.standard.image_time_enter.value,
|
||||
)
|
||||
self.standard_data_collection.emit(r)
|
||||
elif current_tab == self.helical:
|
||||
r = self.helical.get_request()
|
||||
if r is not None:
|
||||
self.standard_data_collection.emit(r)
|
||||
else:
|
||||
print("No matching tab found.")
|
||||
raster_mgr.update_filename(self.file_path_panel.filename)
|
||||
self.screening.update_filename(self.file_path_panel.filename)
|
||||
self.file_path_panel.path_updated.connect(raster_mgr.update_filename)
|
||||
self.file_path_panel.path_updated.connect(self.screening.update_filename)
|
||||
|
||||
@Slot(DAQStatusModel)
|
||||
def update_daq_status(self, s: DAQStatusModel):
|
||||
self.raster.update_daq_status(s)
|
||||
self.helical.update_daq_status(s)
|
||||
@@ -1,133 +0,0 @@
|
||||
from PySide6.QtCore import Signal, Slot
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QGridLayout,
|
||||
QLabel,
|
||||
QSizePolicy,
|
||||
QSpacerItem,
|
||||
QPushButton,
|
||||
)
|
||||
from aaredaqlib.coordinate import SmargonCoordinate
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest
|
||||
from aaredaqlib.models import DAQStatusModel
|
||||
from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
|
||||
class HelicalDataCollectionPanel(QWidget):
|
||||
helical_scan = Signal(RotationScanRequest)
|
||||
show_helical_start = Signal(SmargonCoordinate)
|
||||
show_helical_end = Signal(SmargonCoordinate)
|
||||
|
||||
def __init__(self, s: SampleGeometryModel, parent=None):
|
||||
super().__init__(parent)
|
||||
grid_layout = QGridLayout(self)
|
||||
|
||||
self.__geom = s
|
||||
self.__steps = 100
|
||||
|
||||
self.__image_time = 0.005
|
||||
self.__image_angle = 0.1
|
||||
self.__total_angle = 360.0
|
||||
|
||||
self.__start = SmargonCoordinate()
|
||||
self.__end = SmargonCoordinate()
|
||||
|
||||
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)
|
||||
grid_layout.addWidget(QLabel("Å", parent=self), 0, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Detector distance", parent=self), 1, 0)
|
||||
self.dtz_enter = NumberLineEdit(60, 1000, decimals=2, default=120, parent=self)
|
||||
grid_layout.addWidget(self.dtz_enter, 1, 1)
|
||||
grid_layout.addWidget(QLabel("mm", parent=self), 1, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Beam transmission", parent=self), 2, 0)
|
||||
self.transmission_enter = NumberLineEdit(
|
||||
0, 1.0, decimals=4, default=1.0, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.transmission_enter, 2, 1)
|
||||
|
||||
grid_layout.addWidget(QLabel("Start angle", parent=self), 3, 0)
|
||||
self.start_angle = NumberLineEdit(-720, 719.0, 0, decimals=3, parent=self)
|
||||
grid_layout.addWidget(self.start_angle, 3, 1)
|
||||
grid_layout.addWidget(QLabel("°", parent=self), 3, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Total angle", parent=self), 4, 0)
|
||||
self.total_angle = NumberLineEdit(
|
||||
0, 999.0, self.__total_angle, decimals=3, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.total_angle, 4, 1)
|
||||
grid_layout.addWidget(QLabel("°", parent=self), 4, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Image angle", parent=self), 5, 0)
|
||||
self.image_angle = NumberLineEdit(
|
||||
0, 10.0, self.__image_angle, decimals=3, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.image_angle, 5, 1)
|
||||
grid_layout.addWidget(QLabel("°", parent=self), 5, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Image time", parent=self), 6, 0)
|
||||
self.image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, self.__image_time, decimals=4, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.image_time_enter, 6, 1)
|
||||
grid_layout.addWidget(QLabel("s", parent=self), 6, 2)
|
||||
|
||||
start_button = QPushButton("Save start point", parent=self)
|
||||
start_button.clicked.connect(self.set_start_point_curr)
|
||||
grid_layout.addWidget(start_button, 7, 0, 1, 3)
|
||||
|
||||
end_button = QPushButton("Save end point", parent=self)
|
||||
end_button.clicked.connect(self.set_end_point_curr)
|
||||
grid_layout.addWidget(end_button, 8, 0, 1, 3)
|
||||
|
||||
horizontal_spacer = QSpacerItem(
|
||||
40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding
|
||||
)
|
||||
grid_layout.addItem(horizontal_spacer, 9, 0, 1, 3)
|
||||
|
||||
@Slot(DAQStatusModel)
|
||||
def update_daq_status(self, s: DAQStatusModel):
|
||||
self.__geom = s.geom
|
||||
|
||||
@Slot()
|
||||
def set_end_point_curr(self):
|
||||
self.set_end_point(self.__geom.smargon)
|
||||
|
||||
@Slot()
|
||||
def set_start_point_curr(self):
|
||||
self.set_start_point(self.__geom.smargon)
|
||||
|
||||
@Slot(SmargonCoordinate)
|
||||
def set_start_point(self, s: SmargonCoordinate):
|
||||
self.__start = s
|
||||
if s.sh_mm is not None:
|
||||
self.start_angle.update_value(self.__geom.omega_deg)
|
||||
self.show_helical_start.emit(self.__start)
|
||||
|
||||
@Slot(SmargonCoordinate)
|
||||
def set_end_point(self, s: SmargonCoordinate):
|
||||
self.__end = s
|
||||
self.show_helical_end.emit(self.__end)
|
||||
|
||||
|
||||
def get_request(self) -> RotationScanRequest | None:
|
||||
if self.__start.sh_mm is None or self.__end.sh_mm is None:
|
||||
return
|
||||
|
||||
image_number = round(self.total_angle.value / self.image_angle.value)
|
||||
|
||||
h = RotationScanRequest(
|
||||
start=self.__start,
|
||||
end=self.__end,
|
||||
start_omega_deg=self.start_angle.value,
|
||||
incr_omega_deg=self.image_angle.value,
|
||||
exp_time_s=self.image_time_enter.value,
|
||||
steps=image_number,
|
||||
)
|
||||
return h
|
||||
@@ -77,19 +77,10 @@ class RasterDataCollectionPanel(ScanSettingsPanel):
|
||||
)
|
||||
self._layout.addItem(horizontal_spacer, 7, 0, 1, 4)
|
||||
|
||||
button_layout = QHBoxLayout()
|
||||
|
||||
self.start_button = QPushButton("Start")
|
||||
self.start_button = QPushButton("Evaluate grid")
|
||||
self.start_button.setStyleSheet("color: rgb(78, 154, 6);")
|
||||
button_layout.addWidget(self.start_button)
|
||||
self.start_button.clicked.connect(self.evaluate_grid)
|
||||
|
||||
self.abort_button = QPushButton("Abort")
|
||||
self.abort_button.setStyleSheet("color: rgb(164, 0, 0);")
|
||||
button_layout.addWidget(self.abort_button)
|
||||
|
||||
# Add the button layout to the main layout
|
||||
self._layout.addLayout(button_layout, 8, 0, 1, 5)
|
||||
self._layout.addWidget(self.start_button, 8, 0, 1, 5)
|
||||
|
||||
self.update_grid_scan_size()
|
||||
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
from PySide6.QtCore import Slot, Signal
|
||||
from PySide6.QtWidgets import QLabel, QComboBox, QPushButton
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest
|
||||
from aaregui.panels.scan_settings_panel import ScanSettingsPanel
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
|
||||
class RotationDataCollectionPanel(ScanSettingsPanel):
|
||||
rotation_scan = Signal(RotationScanRequest)
|
||||
|
||||
def __init__(self, diffraction: DiffractionGeometry,
|
||||
default_dtz: float = 200.0,
|
||||
default_transmission: float = 1.0,
|
||||
parent=None):
|
||||
super().__init__(parent=parent,
|
||||
diffraction=diffraction,
|
||||
default_dtz=default_dtz,
|
||||
default_transmission=default_transmission)
|
||||
|
||||
self._filename = ""
|
||||
|
||||
self._layout.addWidget(QLabel("Start angle", parent=self), 3, 0)
|
||||
self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self)
|
||||
self._layout.addWidget(self.start_angle, 3, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 3, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("<br/><center><B><u>Screening</u></B></center>", parent=self), 4, 0, 1,5)
|
||||
|
||||
self._layout.addWidget(QLabel("Image time", parent=self), 5, 0)
|
||||
self.screening_image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, 0.005, decimals=4, parent=self
|
||||
)
|
||||
self._layout.addWidget(self.screening_image_time_enter, 5, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("s", parent=self), 5, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Image angle", parent=self), 6, 0)
|
||||
self.screening_image_angle = NumberLineEdit(0, 10.0, 0.5, decimals=3, parent=self)
|
||||
self._layout.addWidget(self.screening_image_angle, 6, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 6, 4)
|
||||
|
||||
self.screening_type = QComboBox(parent=self)
|
||||
self.screening_type.addItem("1 image", {"steps": 1, "omega_step_deg": 0})
|
||||
self.screening_type.addItem("2 images every 90°", {"steps": 2, "omega_step_deg": 90})
|
||||
self.screening_type.addItem("4 images every 90°", {"steps": 4, "omega_step_deg": 90})
|
||||
self.screening_type.addItem("3 images every 60°", {"steps": 3, "omega_step_deg": 60})
|
||||
self.screening_type.addItem("2 images every 45°", {"steps": 2, "omega_step_deg": 45})
|
||||
self.screening_type.addItem("4 images every 45°", {"steps": 4, "omega_step_deg": 45})
|
||||
|
||||
self._layout.addWidget(self.screening_type, 7, 0, 1, 5)
|
||||
|
||||
self.screening_button = QPushButton("Run screening")
|
||||
self.screening_button.setStyleSheet("color: rgb(78, 154, 6);")
|
||||
self.screening_button.clicked.connect(self.run_screening)
|
||||
self._layout.addWidget(self.screening_button, 8, 0, 1, 5)
|
||||
|
||||
self._layout.addWidget(QLabel("<br/><center><B><u>Rotation</u></B></center>", parent=self), 9, 0, 1,5)
|
||||
|
||||
self._layout.addWidget(QLabel("Total angle", parent=self), 10, 0)
|
||||
self.total_angle = NumberLineEdit(0, 999.0, 180.0, decimals=3, parent=self)
|
||||
self._layout.addWidget(self.total_angle, 10, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 10, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Image angle", parent=self), 11, 0)
|
||||
self.image_angle = NumberLineEdit(0, 10.0, 0.1, decimals=3, parent=self)
|
||||
self._layout.addWidget(self.image_angle, 11, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 11, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("Image time", parent=self), 12, 0)
|
||||
self.image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, 0.005, decimals=4, parent=self
|
||||
)
|
||||
self._layout.addWidget(self.image_time_enter, 12, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("s", parent=self), 12, 4)
|
||||
|
||||
self.measurement_button = QPushButton("Run rotation")
|
||||
self.measurement_button.setStyleSheet("color: rgb(78, 154, 6);")
|
||||
self.measurement_button.clicked.connect(self.run_measurement)
|
||||
self._layout.addWidget(self.measurement_button, 13, 0, 1, 5)
|
||||
|
||||
@Slot()
|
||||
def run_screening(self):
|
||||
screening_settings = self.screening_type.currentData()
|
||||
r = RotationScanRequest(
|
||||
file_prefix=self._filename,
|
||||
start_omega_deg=self.start_angle.value,
|
||||
wedge_omega_deg=self.screening_image_angle.value,
|
||||
incr_omega_deg=screening_settings["omega_step_deg"],
|
||||
steps=screening_settings["steps"],
|
||||
dtz=self._dtz,
|
||||
transmission=self._transmission,
|
||||
screening=True,
|
||||
exp_time_s=self.screening_image_time_enter.value)
|
||||
self.rotation_scan.emit(r)
|
||||
|
||||
@Slot()
|
||||
def run_measurement(self):
|
||||
total_angle = self.total_angle.value
|
||||
image_angle = self.image_angle.value
|
||||
if total_angle <= 0 or total_angle < image_angle:
|
||||
print("Total angle is not valid.")
|
||||
return
|
||||
|
||||
image_number = round(total_angle / image_angle)
|
||||
|
||||
r = RotationScanRequest(
|
||||
file_prefix=self._filename,
|
||||
start_omega_deg=self.start_angle.value,
|
||||
steps=image_number,
|
||||
incr_omega_deg=self.image_angle.value,
|
||||
dtz=self._dtz,
|
||||
transmission=self._transmission,
|
||||
screening=False,
|
||||
exp_time_s=self.image_time_enter.value)
|
||||
self.rotation_scan.emit(r)
|
||||
|
||||
@Slot(str)
|
||||
def update_filename(self, filename: str):
|
||||
self._filename = filename
|
||||
@@ -1,5 +1,5 @@
|
||||
from PySide6.QtCore import Slot, Signal
|
||||
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel
|
||||
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QFrame
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.models import DAQStatusModel
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
from PySide6.QtWidgets import (
|
||||
QWidget,
|
||||
QGridLayout,
|
||||
QLabel,
|
||||
QComboBox,
|
||||
QSizePolicy,
|
||||
QSpacerItem,
|
||||
)
|
||||
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaregui.panels.scan_settings_panel import ScanSettingsPanel
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
|
||||
class ScreeningDataCollectionPanel(ScanSettingsPanel):
|
||||
def __init__(self, diffraction: DiffractionGeometry,
|
||||
default_dtz: float = 200.0,
|
||||
default_transmission: float = 1.0,
|
||||
parent=None):
|
||||
super().__init__(parent=parent,
|
||||
diffraction=diffraction,
|
||||
default_dtz=default_dtz,
|
||||
default_transmission=default_transmission)
|
||||
|
||||
self._layout.addWidget(QLabel("Start angle", parent=self), 3, 0)
|
||||
self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self)
|
||||
self._layout.addWidget(self.start_angle, 3, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("°", parent=self), 3, 4)
|
||||
|
||||
self._layout.addWidget(QLabel("<B>Screening</B>", parent=self), 4, 0, 1,5)
|
||||
|
||||
self._layout.addWidget(QLabel("Image time", parent=self), 5, 0)
|
||||
self.screening_image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, 0.005, decimals=4, parent=self
|
||||
)
|
||||
self._layout.addWidget(self.screening_image_time_enter, 5, 1, 1, 3)
|
||||
self._layout.addWidget(QLabel("s", parent=self), 5, 4)
|
||||
|
||||
self.screening_type = QComboBox(parent=self)
|
||||
self.screening_type.addItem("1 image", {"steps": 1, "omega_step_deg": 0})
|
||||
self.screening_type.addItem("2 images every 90°", {"steps": 2, "omega_step_deg": 90})
|
||||
self.screening_type.addItem("4 images every 90°", {"steps": 4, "omega_step_deg": 90})
|
||||
self.screening_type.addItem("3 images every 60°", {"steps": 3, "omega_step_deg": 60})
|
||||
self.screening_type.addItem("2 images every 45°", {"steps": 2, "omega_step_deg": 45})
|
||||
self.screening_type.addItem("4 images every 45°", {"steps": 4, "omega_step_deg": 45})
|
||||
|
||||
self._layout.addWidget(self.screening_type, 6, 0, 1, 5)
|
||||
|
||||
self._layout.addWidget(QLabel("<B>Measurement</B>", parent=self), 8, 0, 1, 5)
|
||||
|
||||
|
||||
horizontal_spacer = QSpacerItem(
|
||||
40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding
|
||||
)
|
||||
self._layout.addItem(horizontal_spacer, 9, 0, 1, 5)
|
||||
@@ -1,54 +0,0 @@
|
||||
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSpacerItem, QSizePolicy
|
||||
|
||||
from aaregui.widgets.number_line_edit import NumberLineEdit
|
||||
|
||||
|
||||
class StandardDataCollectionPanel(QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
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)
|
||||
grid_layout.addWidget(QLabel("Å", parent=self), 0, 2)
|
||||
grid_layout.addWidget(QLabel("Detector distance", parent=self), 1, 0)
|
||||
self.dtz_enter = NumberLineEdit(60, 1000, decimals=2, default=120, parent=self)
|
||||
grid_layout.addWidget(self.dtz_enter, 1, 1)
|
||||
grid_layout.addWidget(QLabel("mm", parent=self), 1, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Beam transmission", parent=self), 2, 0)
|
||||
self.transmission_enter = NumberLineEdit(
|
||||
0, 1.0, decimals=4, default=1.0, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.transmission_enter, 2, 1)
|
||||
|
||||
grid_layout.addWidget(QLabel("Start angle", parent=self), 3, 0)
|
||||
self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self)
|
||||
grid_layout.addWidget(self.start_angle, 3, 1)
|
||||
grid_layout.addWidget(QLabel("°", parent=self), 3, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Total angle", parent=self), 4, 0)
|
||||
self.total_angle = NumberLineEdit(0, 999.0, 180.0, decimals=3, parent=self)
|
||||
grid_layout.addWidget(self.total_angle, 4, 1)
|
||||
grid_layout.addWidget(QLabel("°", parent=self), 4, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Image angle", parent=self), 5, 0)
|
||||
self.image_angle = NumberLineEdit(0, 10.0, 0.1, decimals=3, parent=self)
|
||||
grid_layout.addWidget(self.image_angle, 5, 1)
|
||||
grid_layout.addWidget(QLabel("°", parent=self), 5, 2)
|
||||
|
||||
grid_layout.addWidget(QLabel("Image time", parent=self), 6, 0)
|
||||
self.image_time_enter = NumberLineEdit(
|
||||
0.0005, 10.0, 0.005, decimals=4, parent=self
|
||||
)
|
||||
grid_layout.addWidget(self.image_time_enter, 6, 1)
|
||||
grid_layout.addWidget(QLabel("s", parent=self), 6, 2)
|
||||
|
||||
|
||||
horizontal_spacer = QSpacerItem(
|
||||
40, 20, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding
|
||||
)
|
||||
grid_layout.addItem(horizontal_spacer, 7, 0, 1, 3)
|
||||
@@ -183,6 +183,7 @@ class DAQWorker(QObject):
|
||||
|
||||
@Slot(RotationScanRequest)
|
||||
def standard_scan(self, r: RotationScanRequest):
|
||||
self.run_number_incremented.emit()
|
||||
self.generic_post("scan/rotation", r.model_dump_json())
|
||||
|
||||
@Slot(RasterGridRequest)
|
||||
|
||||
Reference in new issue
Block a user