Skip to content

Commit 5b4b6a7

Browse files
Add 'ispyb_detectorname' for use in fast feedback service (#328)
1 parent 6330d6a commit 5b4b6a7

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

src/dlstbx/ispybtbx/__init__.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,22 @@ def dc_info_to_detectorclass(
194194
elif template.endswith(".cbf"):
195195
return "pilatus"
196196

197+
def dc_info_to_detectorname(
198+
self, dc_info, session: sqlalchemy.orm.session.Session
199+
):
200+
## Get a detector name if it is one of a set of allowed values for fast feedback service.
201+
det_id = dc_info.get("detectorId")
202+
if det_id is not None and (det := crud.get_detector(det_id, session)):
203+
if det.detectorModel == "Eiger2 XE 16M":
204+
return "Eiger16M"
205+
elif det.detectorModel == "Eiger2 X 4M":
206+
return "Eiger4M"
207+
elif det.detectorModel == "Eiger2 X CdTe 9M":
208+
return "Eiger9MCdTe"
209+
210+
# Not one of the set of detectors allowed for fast feedback service.
211+
return None
212+
197213
def get_sample_group_dcids(
198214
self,
199215
ispyb_info,
@@ -847,6 +863,7 @@ def ispyb_filter(
847863
parameters["ispyb_beamline"] = i.get_beamline_from_dcid(dc_id, session)
848864

849865
parameters["ispyb_detectorclass"] = i.dc_info_to_detectorclass(dc_info, session)
866+
parameters["ispyb_detectorname"] = i.dc_info_to_detectorname(dc_info, session)
850867
parameters["ispyb_dc_info"] = dc_info
851868
parameters["ispyb_dc_info"]["gridinfo"] = i.get_gridscan_info(
852869
dc_info.get("dataCollectionId"), dc_info.get("dataCollectionGroupId"), session

tests/ispybtbx/test_ispyb.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,16 @@ def test_filter_function(db_session):
362362
param = {"ispyb_dcid": ds["i19_screening"]}
363363
msg, param = ispyb_filter(msg, param, db_session)
364364

365+
def test_get_detectorname(db_session):
366+
test_data = {
367+
"i03" : {"dcid" : 19714078, "expected" : "Eiger16M"},
368+
"i24" : {"dcid" : 16030696, "expected" : "Eiger9MCdTe"}
369+
}
370+
for d in test_data.values():
371+
message = {}
372+
parameters = {"ispyb_dcid": d["dcid"]}
373+
message, parameters = ispyb_filter(message, parameters, db_session)
374+
assert parameters["ispyb_detectorname"] == d["expected"]
365375

366376
def test_filter_function_with_load_config_file_timeout(monkeypatch, db_session):
367377
def mock_load_config_file(*args, **kwargs):

0 commit comments

Comments
 (0)