diff --git a/src/aare/gui/panels/smart_rotation_panel.py b/src/aare/gui/panels/smart_rotation_panel.py index 94fcc9fb..2b1e6d95 100644 --- a/src/aare/gui/panels/smart_rotation_panel.py +++ b/src/aare/gui/panels/smart_rotation_panel.py @@ -27,16 +27,6 @@ logger = setup_logger(LOGGER_NAME) # absorb more than this, so use RADDOSE-3D for those. KDOSE_1A_PH_UM2_GY = 2000.0 -# Howells et al. put the half-dose at 10 MGy per A of resolution; we budget -# half of that, so the target resolution keeps roughly 70% of its intensity. -CRYO_DOSE_PER_ANGSTROM_MGY = 10.0 -# Above the glass transition the crystal dies ~2 orders of magnitude faster. -# Owen et al. measured D(1/2) ~ 0.38 MGy at room temperature and Holton's -# lifetime calculator defaults to 0.2 MGy; 0.1 MGy/A with the same safety -# factor sits just below both. -RT_DOSE_PER_ANGSTROM_MGY = 0.1 -DOSE_SAFETY_FACTOR = 2.0 - # Protein-solvent glass transition. Warkentin & Thorne fit two Arrhenius # regimes either side of ~200 K: below it damage is athermal (Ea ~ 1 kJ/mol), # above it diffusion-dominated (Ea ~ 18 kJ/mol) and the cryo budget no longer @@ -120,7 +110,6 @@ class SimpleRotationSettingsPanel(QWidget): self.dtz = 120 self.image_time_s = 0.1 self._d = None - self._temperature = 100 self._omega = 0 self.total_time_s = 0 self.parameters = SimpleScanParameters() @@ -178,13 +167,13 @@ class SimpleRotationSettingsPanel(QWidget): self._layout.addWidget(QLabel("°", parent=self), 3, 4) self.image_angle_enter.newValue.connect(self.set_image_angle) - self._layout.addWidget(QLabel("Temperature", parent=self), 4, 0) - self.temp_enter = NumberLineEdit( - 80, 330, decimals=2, default=100.0, parent=self, track_pending=True + self._layout.addWidget(QLabel("Dose 1 Å res.", parent=self), 4, 0) + self.dose_ang_enter = NumberLineEdit( + 0.01, 20.0, decimals=2, default=5.0, parent=self, track_pending=True ) - self._layout.addWidget(self.temp_enter, 4, 1, 1, 3) - self._layout.addWidget(QLabel("K", parent=self), 4, 4) - self.temp_enter.newValue.connect(self.set_temperature) + self._layout.addWidget(self.dose_ang_enter, 4, 1, 1, 3) + self._layout.addWidget(QLabel("MGy/Å", parent=self), 4, 4) + self.dose_ang_enter.newValue.connect(self.set_dose_ang) # Run + Abort directly under the last configurable row; the read-only # block below is reference info, not something to scroll past to act. @@ -342,7 +331,7 @@ class SimpleRotationSettingsPanel(QWidget): self.update_calculated_labels() @Slot(float) - def set_temperature(self, v: float): + def set_dose_ang(self, v: float): self.update_calculated_labels() @Slot(float) @@ -438,11 +427,7 @@ class SimpleRotationSettingsPanel(QWidget): else: self.dose_rate_MGy_s = 0.0 - if self.temp_enter.value > GLASS_TRANSITION_K: - dose_per_angstrom = RT_DOSE_PER_ANGSTROM_MGY - else: - dose_per_angstrom = CRYO_DOSE_PER_ANGSTROM_MGY - self.target_dose_MGy = dose_per_angstrom * d_tar / DOSE_SAFETY_FACTOR + self.target_dose_MGy = self.dose_ang_enter.value * d_tar self.n_images = max(1, round(total_angle / image_angle))