Skip to content
This repository has been archived by the owner on Sep 2, 2024. It is now read-only.

Commit

Permalink
Merge pull request #842 from DiamondLightSource/835_transmission_bug
Browse files Browse the repository at this point in the history
Fix issue with transmission being set incorrectly
  • Loading branch information
DominicOram authored Aug 3, 2023
2 parents fa6ac93 + c16690d commit f66795f
Show file tree
Hide file tree
Showing 20 changed files with 76 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/artemis/experiment_plans/full_grid_scan.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def start_arming_then_do_grid(
yield from bps.abs_set(eiger.do_arm, 1, group="ready_for_data_collection")
yield from bps.abs_set(
attenuator,
parameters.artemis_params.ispyb_params.transmission,
parameters.artemis_params.ispyb_params.transmission_fraction,
group="ready_for_data_collection",
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,10 @@ def standalone_read_hardware_for_ispyb(und, syn, slits, attn, fl):
assert params.artemis_params.ispyb_params.synchrotron_mode == synchrotron_test_value
assert params.artemis_params.ispyb_params.slit_gap_size_x == xgap_test_value
assert params.artemis_params.ispyb_params.slit_gap_size_y == ygap_test_value
assert params.artemis_params.ispyb_params.transmission == transmission_test_value
assert (
params.artemis_params.ispyb_params.transmission_fraction
== transmission_test_value
)
assert params.artemis_params.ispyb_params.flux == flux_test_value


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -284,5 +284,5 @@ def test_when_start_arming_then_transmission_set(

# Check transmission set
attenuator.set.assert_called_once_with(
test_full_grid_scan_params.artemis_params.ispyb_params.transmission
test_full_grid_scan_params.artemis_params.ispyb_params.transmission_fraction
)
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def event(self, doc: dict):
self.params.artemis_params.ispyb_params.slit_gap_size_y = doc["data"][
"s4_slit_gaps_ygap"
]
self.params.artemis_params.ispyb_params.transmission = doc["data"][
self.params.artemis_params.ispyb_params.transmission_fraction = doc["data"][
"attenuator_actual_transmission"
]

Expand Down
12 changes: 10 additions & 2 deletions src/artemis/external_interaction/ispyb/ispyb_dataclass.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"position": [0, 0, 0],
"xtal_snapshots_omega_start": ["test_1_y", "test_2_y", "test_3_y"],
"xtal_snapshots_omega_end": ["test_1_z", "test_2_z", "test_3_z"],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 0.1,
Expand Down Expand Up @@ -55,7 +55,7 @@ def _parse_position(
return position
return np.array(position)

transmission: float
transmission_fraction: float
wavelength: float
beam_size_x: float
beam_size_y: float
Expand All @@ -76,6 +76,14 @@ def _parse_position(
xtal_snapshots_omega_start: Optional[List[str]] = None
xtal_snapshots_omega_end: Optional[List[str]] = None

@validator("transmission_fraction")
def transmission_not_percentage(cls, transmission_fraction: float):
if transmission_fraction > 1:
raise ValueError(
"Transmission_fraction of >1 given. Did you give a percentage instead of a fraction?"
)
return transmission_fraction


class RotationIspybParams(IspybParams):
...
Expand Down
3 changes: 2 additions & 1 deletion src/artemis/external_interaction/ispyb/store_in_ispyb.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,8 @@ def _store_data_collection_table(
params["slitgap_horizontal"] = self.ispyb_params.slit_gap_size_x
params["beamsize_at_samplex"] = self.ispyb_params.beam_size_x
params["beamsize_at_sampley"] = self.ispyb_params.beam_size_y
params["transmission"] = self.ispyb_params.transmission
# Ispyb wants the transmission in a percentage, we use fractions
params["transmission"] = self.ispyb_params.transmission_fraction * 100
params["comments"] = self._construct_comment()
params["data_collection_number"] = self.run_number
params["detector_distance"] = self.detector_params.detector_distance
Expand Down
2 changes: 1 addition & 1 deletion src/artemis/external_interaction/nexus/nexus_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,5 +114,5 @@ def create_beam_and_attenuator_parameters(
"""
return (
Beam(ispyb_params.wavelength, ispyb_params.flux),
Attenuator(ispyb_params.transmission),
Attenuator(ispyb_params.transmission_fraction),
)
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def test_params():
params.experiment_params.z = 0
params.artemis_params.detector_params.exposure_time = 0.004
params.artemis_params.detector_params.current_energy_ev = 12700
params.artemis_params.ispyb_params.transmission = 0.49118047952
params.artemis_params.ispyb_params.transmission_fraction = 0.49118047952
params.artemis_params.ispyb_params.wavelength = 0.9762535433
return params

Expand Down
4 changes: 2 additions & 2 deletions src/artemis/external_interaction/unit_tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def test_rotation_params():
params.experiment_params.z = 0
params.artemis_params.detector_params.exposure_time = 0.004
params.artemis_params.detector_params.current_energy_ev = 12700
params.artemis_params.ispyb_params.transmission = 0.49118047952
params.artemis_params.ispyb_params.transmission_fraction = 0.49118047952
params.artemis_params.ispyb_params.wavelength = 0.9762535433
return params

Expand All @@ -36,7 +36,7 @@ def test_fgs_params(request):
params = FGSInternalParameters(**default_raw_params())
params.artemis_params.ispyb_params.wavelength = 1.0
params.artemis_params.ispyb_params.flux = 9.0
params.artemis_params.ispyb_params.transmission = 0.5
params.artemis_params.ispyb_params.transmission_fraction = 0.5
params.artemis_params.detector_params.use_roi_mode = True
params.artemis_params.detector_params.num_triggers = request.param
params.artemis_params.detector_params.directory = (
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from copy import deepcopy

import numpy as np
import pytest

from artemis.external_interaction.ispyb.ispyb_dataclass import (
GRIDSCAN_ISPYB_PARAM_DEFAULTS,
IspybParams,
)


def test_given_position_as_list_when_ispyb_params_created_then_converted_to_numpy_array():
params = deepcopy(GRIDSCAN_ISPYB_PARAM_DEFAULTS)
params["position"] = [1, 2, 3]

ispyb_params = IspybParams(**params)

assert isinstance(ispyb_params.position, np.ndarray)
assert np.array_equal(ispyb_params.position, [1, 2, 3])


def test_given_ispyb_params_when_converted_to_dict_then_position_is_a_list():
params = deepcopy(GRIDSCAN_ISPYB_PARAM_DEFAULTS)
params["position"] = [1, 2, 3]

ispyb_params_dict = IspybParams(**params).dict()

assert isinstance(ispyb_params_dict["position"], list)
assert ispyb_params_dict["position"] == [1, 2, 3]


def test_given_transmission_greater_than_1_when_ispyb_params_created_then_throws_exception():
params = deepcopy(GRIDSCAN_ISPYB_PARAM_DEFAULTS)
params["transmission_fraction"] = 20.5

with pytest.raises(ValueError):
IspybParams(**params)
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
"comments": None,
"slitgapvertical": None,
"slitgaphorizontal": None,
"transmission": None,
"transmission_fraction": None,
"synchrotronmode": None,
"xtalsnapshot1": None,
"xtalsnapshot2": None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"type": "object",
"properties": {
"params_version": {
"const": "2.0.0"
"const": "2.1.0"
},
"artemis_params": {
"type": "object",
Expand Down
4 changes: 2 additions & 2 deletions src/artemis/parameters/schemas/ispyb_parameters_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"type": "string"
}
},
"transmission": {
"transmission_fraction": {
"type": "number"
},
"flux": {
Expand Down Expand Up @@ -84,7 +84,7 @@
"microns_per_pixel_x",
"microns_per_pixel_y",
"position",
"transmission",
"transmission_fraction",
"flux",
"wavelength",
"beam_size_x",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
20.0,
30.0
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 1.0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"test_2",
"test_3"
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 1.0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"params_version": "2.0.0",
"params_version": "2.1.0",
"artemis_params": {
"beamline": "BL03S",
"insertion_prefix": "SR03S",
Expand All @@ -23,7 +23,7 @@
20.0,
30.0
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 1.0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"params_version": "2.0.0",
"params_version": "2.1.0",
"artemis_params": {
"beamline": "BL03S",
"insertion_prefix": "SR03S",
Expand Down Expand Up @@ -43,7 +43,7 @@
"test_2",
"test_3"
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 1.0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"params_version": "2.0.0",
"params_version": "2.1.0",
"artemis_params": {
"beamline": "BL03S",
"insertion_prefix": "SR03S",
Expand Down Expand Up @@ -43,7 +43,7 @@
"test_2",
"test_3"
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 1.0,
Expand Down
4 changes: 2 additions & 2 deletions test_parameter_defaults.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"params_version": "2.0.0",
"params_version": "2.1.0",
"artemis_params": {
"zocalo_environment": "dev_artemis",
"beamline": "BL03S",
Expand Down Expand Up @@ -37,7 +37,7 @@
"test_2_z",
"test_3_z"
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 0.1,
Expand Down
4 changes: 2 additions & 2 deletions test_parameters.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"params_version": "2.0.0",
"params_version": "2.1.0",
"artemis_params": {
"beamline": "BL03S",
"insertion_prefix": "SR03S",
Expand Down Expand Up @@ -43,7 +43,7 @@
"test_2",
"test_3"
],
"transmission": 1.0,
"transmission_fraction": 1.0,
"flux": 10.0,
"wavelength": 0.01,
"beam_size_x": 1.0,
Expand Down

0 comments on commit f66795f

Please sign in to comment.