Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 9d1182a

Browse files
author
ahmedk
committedAug 1, 2024·
test: Refactor full_path to file_path and add test for better change coverage.
1 parent acd9a6c commit 9d1182a

File tree

3 files changed

+685
-11
lines changed

3 files changed

+685
-11
lines changed
 

‎src/extra/calibration.py

+10-11
Original file line numberDiff line numberDiff line change
@@ -277,15 +277,15 @@ def from_response(cls, ccv: dict) -> "SingleConstant":
277277
_have_calcat_metadata=True,
278278
)
279279

280-
def full_path(self, caldb_root=None):
280+
def file_path(self, caldb_root=None) -> Path:
281281
if caldb_root is not None:
282282
caldb_root = Path(caldb_root)
283283
else:
284284
caldb_root = _get_default_caldb_root()
285285
return caldb_root / self.path
286286

287287
def dataset_obj(self, caldb_root=None) -> h5py.Dataset:
288-
calpath = self.full_path(caldb_root)
288+
calpath = self.file_path(caldb_root)
289289
f = h5py.File(calpath, "r")
290290
return f[self.dataset]["data"]
291291

@@ -545,15 +545,14 @@ def to_float_or_string(value):
545545
}
546546

547547
@classmethod
548-
def from_condition(
549-
cls,
550-
condition: "ConditionsBase",
551-
detector_name,
552-
calibrations=None,
553-
client=None,
554-
event_at=None,
555-
pdu_snapshot_at=None,
556-
begin_at_strategy="closest",
548+
def from_condition(cls,
549+
condition: "ConditionsBase",
550+
detector_name,
551+
calibrations=None,
552+
client=None,
553+
event_at=None,
554+
pdu_snapshot_at=None,
555+
begin_at_strategy="closest",
557556

558557
):
559558
"""Look up constants for the given detector conditions & timestamp.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,639 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
Accept:
6+
- application/json; version=2
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Connection:
10+
- keep-alive
11+
User-Agent:
12+
- EXtra/2024.1.2.3+acd9a6c
13+
content-type:
14+
- application/json
15+
method: GET
16+
uri: http://exflcalproxy.desy.de:8080/api/me
17+
response:
18+
body:
19+
string: '{"id":-9,"email":"admin@example.com","created_at":"2015-03-12T17:02:47.000+01:00","updated_at":"2024-06-26T11:38:56.000+02:00","provider":"local","uid":null,"name":"Admin
20+
User","first_name":"Admin","last_name":"User","nickname":null,"contact_email":"admin@example.com","ldap_synced_at":null,"flg_ldap_account_valid":false,"flg_service_account":true}'
21+
headers:
22+
Cache-Control:
23+
- max-age=0, private, must-revalidate
24+
Content-Length:
25+
- '349'
26+
Content-Type:
27+
- application/json; charset=utf-8
28+
Date:
29+
- Thu, 01 Aug 2024 05:57:33 GMT
30+
Etag:
31+
- W/"4bf159598242c25bb9fb5b1598d140b2"
32+
Keep-Alive:
33+
- timeout=5, max=100
34+
Referrer-Policy:
35+
- strict-origin-when-cross-origin
36+
Server:
37+
- Apache
38+
Status:
39+
- 200 OK
40+
Strict-Transport-Security:
41+
- max-age=16070400; includeSubDomains
42+
Vary:
43+
- Origin
44+
Via:
45+
- HTTP/1.1 xfel_oauth_proxy
46+
X-Content-Type-Options:
47+
- nosniff
48+
X-Download-Options:
49+
- noopen
50+
X-Frame-Options:
51+
- SAMEORIGIN
52+
X-Permitted-Cross-Domain-Policies:
53+
- none
54+
X-Powered-By:
55+
- Phusion Passenger(R)
56+
X-Request-Id:
57+
- d7880a7a-9ce3-4889-bcfa-dda9182aa501
58+
X-Runtime:
59+
- '0.029956'
60+
X-Xss-Protection:
61+
- '0'
62+
status:
63+
code: 200
64+
message: OK
65+
- request:
66+
body: null
67+
headers:
68+
Accept:
69+
- application/json; version=2
70+
Accept-Encoding:
71+
- gzip, deflate
72+
Connection:
73+
- keep-alive
74+
User-Agent:
75+
- EXtra/2024.1.2.3+acd9a6c
76+
content-type:
77+
- application/json
78+
method: GET
79+
uri: http://exflcalproxy.desy.de:8080/api/detectors?identifier=FXE_XAD_JF1M
80+
response:
81+
body:
82+
string: '[{"id":21,"name":"FXE_XAD_JF1M","identifier":"FXE_XAD_JF1M","karabo_name":"FXE_XAD_JF1M","karabo_id_control":"CONTROL","source_name_pattern":null,"number_of_modules":null,"first_module_index":null,"flg_available":true,"description":null,"detectors_instruments":[{"instrument_id":6,"detector_id":21},{"instrument_id":7,"detector_id":21}]}]'
83+
headers:
84+
Cache-Control:
85+
- max-age=0, private, must-revalidate
86+
Content-Length:
87+
- '338'
88+
Content-Type:
89+
- application/json; charset=utf-8
90+
Date:
91+
- Thu, 01 Aug 2024 05:57:33 GMT
92+
Etag:
93+
- W/"16a0e3c141b2b17791194a1bd40b762b"
94+
Keep-Alive:
95+
- timeout=5, max=100
96+
Referrer-Policy:
97+
- strict-origin-when-cross-origin
98+
Server:
99+
- Apache
100+
Status:
101+
- 200 OK
102+
Strict-Transport-Security:
103+
- max-age=16070400; includeSubDomains
104+
Vary:
105+
- Origin
106+
Via:
107+
- HTTP/1.1 xfel_oauth_proxy
108+
X-Content-Type-Options:
109+
- nosniff
110+
X-Count-Per-Page:
111+
- '100'
112+
X-Current-Page:
113+
- '1'
114+
X-Download-Options:
115+
- noopen
116+
X-Frame-Options:
117+
- SAMEORIGIN
118+
X-Permitted-Cross-Domain-Policies:
119+
- none
120+
X-Powered-By:
121+
- Phusion Passenger(R)
122+
X-Request-Id:
123+
- f1bcb6c5-49b2-4d43-a128-7d5398bc8751
124+
X-Runtime:
125+
- '0.372589'
126+
X-Total-Count:
127+
- '1'
128+
X-Total-Pages:
129+
- '1'
130+
X-Xss-Protection:
131+
- '0'
132+
status:
133+
code: 200
134+
message: OK
135+
- request:
136+
body: null
137+
headers:
138+
Accept:
139+
- application/json; version=2
140+
Accept-Encoding:
141+
- gzip, deflate
142+
Connection:
143+
- keep-alive
144+
User-Agent:
145+
- EXtra/2024.1.2.3+acd9a6c
146+
content-type:
147+
- application/json
148+
method: GET
149+
uri: http://exflcalproxy.desy.de:8080/api/physical_detector_units/get_all_by_detector?detector_id=21&pdu_snapshot_at=2024-03-04T13%3A33%3A28.000%2B01%3A00
150+
response:
151+
body:
152+
string: '[{"id":190,"physical_name":"Jungfrau_M530","karabo_da":"JNGFR01","virtual_device_name":null,"uuid":800000000010,"float_uuid":3.95252516678e-312,"detector_type_id":4,"detector_id":21,"module_number":null,"flg_available":true,"description":null,"detector":{"id":21,"name":"FXE_XAD_JF1M","identifier":"FXE_XAD_JF1M","karabo_name":"FXE_XAD_JF1M","karabo_id_control":"CONTROL","source_name_pattern":null,"number_of_modules":null,"first_module_index":null,"flg_available":true,"description":null},"detector_type":{"id":4,"name":"jungfrau-Type","flg_available":true,"description":"The
153+
Jungfrau detector type"}},{"id":179,"physical_name":"Jungfrau_M512","karabo_da":"JNGFR02","virtual_device_name":null,"uuid":1120000000002,"float_uuid":5.53353523343e-312,"detector_type_id":4,"detector_id":21,"module_number":null,"flg_available":true,"description":null,"detector":{"id":21,"name":"FXE_XAD_JF1M","identifier":"FXE_XAD_JF1M","karabo_name":"FXE_XAD_JF1M","karabo_id_control":"CONTROL","source_name_pattern":null,"number_of_modules":null,"first_module_index":null,"flg_available":true,"description":null},"detector_type":{"id":4,"name":"jungfrau-Type","flg_available":true,"description":"The
154+
Jungfrau detector type"}}]'
155+
headers:
156+
Cache-Control:
157+
- max-age=0, private, must-revalidate
158+
Content-Length:
159+
- '1208'
160+
Content-Type:
161+
- application/json; charset=utf-8
162+
Date:
163+
- Thu, 01 Aug 2024 05:57:34 GMT
164+
Etag:
165+
- W/"d80d897dbca1d5fad7ec2faa80f6a711"
166+
Keep-Alive:
167+
- timeout=5, max=100
168+
Referrer-Policy:
169+
- strict-origin-when-cross-origin
170+
Server:
171+
- Apache
172+
Status:
173+
- 200 OK
174+
Strict-Transport-Security:
175+
- max-age=16070400; includeSubDomains
176+
Vary:
177+
- Origin
178+
Via:
179+
- HTTP/1.1 xfel_oauth_proxy
180+
X-Content-Type-Options:
181+
- nosniff
182+
X-Download-Options:
183+
- noopen
184+
X-Frame-Options:
185+
- SAMEORIGIN
186+
X-Permitted-Cross-Domain-Policies:
187+
- none
188+
X-Powered-By:
189+
- Phusion Passenger(R)
190+
X-Request-Id:
191+
- d92939f0-48ee-422f-850b-d5c019d5549a
192+
X-Runtime:
193+
- '0.377337'
194+
X-Xss-Protection:
195+
- '0'
196+
status:
197+
code: 200
198+
message: OK
199+
- request:
200+
body: null
201+
headers:
202+
Accept:
203+
- application/json; version=2
204+
Accept-Encoding:
205+
- gzip, deflate
206+
Connection:
207+
- keep-alive
208+
User-Agent:
209+
- EXtra/2024.1.2.3+acd9a6c
210+
content-type:
211+
- application/json
212+
method: GET
213+
uri: http://exflcalproxy.desy.de:8080/api/calibrations?name=Offset10Hz
214+
response:
215+
body:
216+
string: '[{"id":21,"name":"Offset10Hz","unit_id":1,"max_value":null,"min_value":null,"allowed_deviation":null,"description":""}]'
217+
headers:
218+
Cache-Control:
219+
- max-age=0, private, must-revalidate
220+
Content-Length:
221+
- '119'
222+
Content-Type:
223+
- application/json; charset=utf-8
224+
Date:
225+
- Thu, 01 Aug 2024 05:57:34 GMT
226+
Etag:
227+
- W/"e4e40d978bd2a78e470e9960fbecbcb0"
228+
Keep-Alive:
229+
- timeout=5, max=100
230+
Referrer-Policy:
231+
- strict-origin-when-cross-origin
232+
Server:
233+
- Apache
234+
Status:
235+
- 200 OK
236+
Strict-Transport-Security:
237+
- max-age=16070400; includeSubDomains
238+
Vary:
239+
- Origin
240+
Via:
241+
- HTTP/1.1 xfel_oauth_proxy
242+
X-Content-Type-Options:
243+
- nosniff
244+
X-Count-Per-Page:
245+
- '100'
246+
X-Current-Page:
247+
- '1'
248+
X-Download-Options:
249+
- noopen
250+
X-Frame-Options:
251+
- SAMEORIGIN
252+
X-Permitted-Cross-Domain-Policies:
253+
- none
254+
X-Powered-By:
255+
- Phusion Passenger(R)
256+
X-Request-Id:
257+
- 52cc46c1-d5e6-4306-9615-0e38b7351ddc
258+
X-Runtime:
259+
- '0.032869'
260+
X-Total-Count:
261+
- '1'
262+
X-Total-Pages:
263+
- '1'
264+
X-Xss-Protection:
265+
- '0'
266+
status:
267+
code: 200
268+
message: OK
269+
- request:
270+
body: null
271+
headers:
272+
Accept:
273+
- application/json; version=2
274+
Accept-Encoding:
275+
- gzip, deflate
276+
Connection:
277+
- keep-alive
278+
User-Agent:
279+
- EXtra/2024.1.2.3+acd9a6c
280+
content-type:
281+
- application/json
282+
method: GET
283+
uri: http://exflcalproxy.desy.de:8080/api/calibrations?name=Noise10Hz
284+
response:
285+
body:
286+
string: '[{"id":22,"name":"Noise10Hz","unit_id":1,"max_value":null,"min_value":null,"allowed_deviation":null,"description":""}]'
287+
headers:
288+
Cache-Control:
289+
- max-age=0, private, must-revalidate
290+
Content-Length:
291+
- '118'
292+
Content-Type:
293+
- application/json; charset=utf-8
294+
Date:
295+
- Thu, 01 Aug 2024 05:57:34 GMT
296+
Etag:
297+
- W/"9c65a34a136fcfe8638c7a6397d873ff"
298+
Keep-Alive:
299+
- timeout=5, max=100
300+
Referrer-Policy:
301+
- strict-origin-when-cross-origin
302+
Server:
303+
- Apache
304+
Status:
305+
- 200 OK
306+
Strict-Transport-Security:
307+
- max-age=16070400; includeSubDomains
308+
Vary:
309+
- Origin
310+
Via:
311+
- HTTP/1.1 xfel_oauth_proxy
312+
X-Content-Type-Options:
313+
- nosniff
314+
X-Count-Per-Page:
315+
- '100'
316+
X-Current-Page:
317+
- '1'
318+
X-Download-Options:
319+
- noopen
320+
X-Frame-Options:
321+
- SAMEORIGIN
322+
X-Permitted-Cross-Domain-Policies:
323+
- none
324+
X-Powered-By:
325+
- Phusion Passenger(R)
326+
X-Request-Id:
327+
- 12351ddb-d149-4c89-8351-48152aea398e
328+
X-Runtime:
329+
- '0.028758'
330+
X-Total-Count:
331+
- '1'
332+
X-Total-Pages:
333+
- '1'
334+
X-Xss-Protection:
335+
- '0'
336+
status:
337+
code: 200
338+
message: OK
339+
- request:
340+
body: null
341+
headers:
342+
Accept:
343+
- application/json; version=2
344+
Accept-Encoding:
345+
- gzip, deflate
346+
Connection:
347+
- keep-alive
348+
User-Agent:
349+
- EXtra/2024.1.2.3+acd9a6c
350+
content-type:
351+
- application/json
352+
method: GET
353+
uri: http://exflcalproxy.desy.de:8080/api/calibrations?name=BadPixelsDark10Hz
354+
response:
355+
body:
356+
string: '[{"id":23,"name":"BadPixelsDark10Hz","unit_id":19,"max_value":null,"min_value":null,"allowed_deviation":null,"description":""}]'
357+
headers:
358+
Cache-Control:
359+
- max-age=0, private, must-revalidate
360+
Content-Length:
361+
- '127'
362+
Content-Type:
363+
- application/json; charset=utf-8
364+
Date:
365+
- Thu, 01 Aug 2024 05:57:34 GMT
366+
Etag:
367+
- W/"6f72b3ba4656468787f92060cded8b97"
368+
Keep-Alive:
369+
- timeout=5, max=100
370+
Referrer-Policy:
371+
- strict-origin-when-cross-origin
372+
Server:
373+
- Apache
374+
Status:
375+
- 200 OK
376+
Strict-Transport-Security:
377+
- max-age=16070400; includeSubDomains
378+
Vary:
379+
- Origin
380+
Via:
381+
- HTTP/1.1 xfel_oauth_proxy
382+
X-Content-Type-Options:
383+
- nosniff
384+
X-Count-Per-Page:
385+
- '100'
386+
X-Current-Page:
387+
- '1'
388+
X-Download-Options:
389+
- noopen
390+
X-Frame-Options:
391+
- SAMEORIGIN
392+
X-Permitted-Cross-Domain-Policies:
393+
- none
394+
X-Powered-By:
395+
- Phusion Passenger(R)
396+
X-Request-Id:
397+
- 1f74f3be-bc12-4a75-bb01-dde601612319
398+
X-Runtime:
399+
- '0.029698'
400+
X-Total-Count:
401+
- '1'
402+
X-Total-Pages:
403+
- '1'
404+
X-Xss-Protection:
405+
- '0'
406+
status:
407+
code: 200
408+
message: OK
409+
- request:
410+
body: null
411+
headers:
412+
Accept:
413+
- application/json; version=2
414+
Accept-Encoding:
415+
- gzip, deflate
416+
Connection:
417+
- keep-alive
418+
User-Agent:
419+
- EXtra/2024.1.2.3+acd9a6c
420+
content-type:
421+
- application/json
422+
method: GET
423+
uri: http://exflcalproxy.desy.de:8080/api/calibrations?name=RelativeGain10Hz
424+
response:
425+
body:
426+
string: '[{"id":30,"name":"RelativeGain10Hz","unit_id":3,"max_value":null,"min_value":null,"allowed_deviation":null,"description":""}]'
427+
headers:
428+
Cache-Control:
429+
- max-age=0, private, must-revalidate
430+
Content-Length:
431+
- '125'
432+
Content-Type:
433+
- application/json; charset=utf-8
434+
Date:
435+
- Thu, 01 Aug 2024 05:57:34 GMT
436+
Etag:
437+
- W/"88a34ea66bac3eb83982e16bd86f3b77"
438+
Keep-Alive:
439+
- timeout=5, max=100
440+
Referrer-Policy:
441+
- strict-origin-when-cross-origin
442+
Server:
443+
- Apache
444+
Status:
445+
- 200 OK
446+
Strict-Transport-Security:
447+
- max-age=16070400; includeSubDomains
448+
Vary:
449+
- Origin
450+
Via:
451+
- HTTP/1.1 xfel_oauth_proxy
452+
X-Content-Type-Options:
453+
- nosniff
454+
X-Count-Per-Page:
455+
- '100'
456+
X-Current-Page:
457+
- '1'
458+
X-Download-Options:
459+
- noopen
460+
X-Frame-Options:
461+
- SAMEORIGIN
462+
X-Permitted-Cross-Domain-Policies:
463+
- none
464+
X-Powered-By:
465+
- Phusion Passenger(R)
466+
X-Request-Id:
467+
- 6182c56d-505a-4b80-ae78-d860133fd5fa
468+
X-Runtime:
469+
- '0.035398'
470+
X-Total-Count:
471+
- '1'
472+
X-Total-Pages:
473+
- '1'
474+
X-Xss-Protection:
475+
- '0'
476+
status:
477+
code: 200
478+
message: OK
479+
- request:
480+
body: null
481+
headers:
482+
Accept:
483+
- application/json; version=2
484+
Accept-Encoding:
485+
- gzip, deflate
486+
Connection:
487+
- keep-alive
488+
User-Agent:
489+
- EXtra/2024.1.2.3+acd9a6c
490+
content-type:
491+
- application/json
492+
method: GET
493+
uri: http://exflcalproxy.desy.de:8080/api/calibrations?name=BadPixelsFF10Hz
494+
response:
495+
body:
496+
string: '[{"id":39,"name":"BadPixelsFF10Hz","unit_id":19,"max_value":null,"min_value":null,"allowed_deviation":null,"description":null}]'
497+
headers:
498+
Cache-Control:
499+
- max-age=0, private, must-revalidate
500+
Content-Length:
501+
- '127'
502+
Content-Type:
503+
- application/json; charset=utf-8
504+
Date:
505+
- Thu, 01 Aug 2024 05:57:35 GMT
506+
Etag:
507+
- W/"963375627e36b9ff3d2cb9feb4cbad38"
508+
Keep-Alive:
509+
- timeout=5, max=100
510+
Referrer-Policy:
511+
- strict-origin-when-cross-origin
512+
Server:
513+
- Apache
514+
Status:
515+
- 200 OK
516+
Strict-Transport-Security:
517+
- max-age=16070400; includeSubDomains
518+
Vary:
519+
- Origin
520+
Via:
521+
- HTTP/1.1 xfel_oauth_proxy
522+
X-Content-Type-Options:
523+
- nosniff
524+
X-Count-Per-Page:
525+
- '100'
526+
X-Current-Page:
527+
- '1'
528+
X-Download-Options:
529+
- noopen
530+
X-Frame-Options:
531+
- SAMEORIGIN
532+
X-Permitted-Cross-Domain-Policies:
533+
- none
534+
X-Powered-By:
535+
- Phusion Passenger(R)
536+
X-Request-Id:
537+
- 41419fe6-84de-44c7-948e-2800b6c37eec
538+
X-Runtime:
539+
- '0.032259'
540+
X-Total-Count:
541+
- '1'
542+
X-Total-Pages:
543+
- '1'
544+
X-Xss-Protection:
545+
- '0'
546+
status:
547+
code: 200
548+
message: OK
549+
- request:
550+
body: '{"parameters_conditions_attributes": [{"parameter_name": "Sensor Bias Voltage",
551+
"value": 90.0}, {"parameter_name": "Memory Cells", "value": 1.0}, {"parameter_name":
552+
"Pixels X", "value": 1024.0}, {"parameter_name": "Pixels Y", "value": 512.0},
553+
{"parameter_name": "Integration Time", "value": 400.0}, {"parameter_name": "Sensor
554+
temperature", "value": 291.0}, {"parameter_name": "Gain Setting", "value": 0.0}]}'
555+
headers:
556+
Accept:
557+
- application/json; version=2
558+
Accept-Encoding:
559+
- gzip, deflate
560+
Connection:
561+
- keep-alive
562+
Content-Length:
563+
- '407'
564+
User-Agent:
565+
- EXtra/2024.1.2.3+acd9a6c
566+
content-type:
567+
- application/json
568+
method: GET
569+
uri: http://exflcalproxy.desy.de:8080/api/calibration_constant_versions/get_by_detector_conditions?detector_identifier=FXE_XAD_JF1M&calibration_id=%5B21%2C+22%2C+23%2C+30%2C+39%5D&karabo_da=&event_at=2024-03-04T13%3A33%3A28.000%2B01%3A00&pdu_snapshot_at=2024-03-04T13%3A33%3A28.000%2B01%3A00&begin_at_strategy=prior
570+
response:
571+
body:
572+
string: '[{"id":146431,"name":"20221007_074817_sIdx=0","file_name":"cal.1665128895.3412874.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m530/","data_set_name":"/Jungfrau_M530/Offset10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2022-10-07T09:34:19.000+02:00","end_validity_at":null,"begin_at":"2022-10-07T09:34:19.000+02:00","start_idx":0,"end_idx":0,"raw_data_location":"proposal:p002983
573+
runs:2 3 4","report_id":2743,"description":"","created_at":"2022-10-07T09:48:17.000+02:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/146431","calibration_constant":{"id":21220,"name":"jungfrau-Type_Offset10Hz_Jungfrau
574+
Def+1h1pMpTF4lds41GmnG3qw==\n","detector_type_id":4,"calibration_id":21,"condition_id":6598,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
575+
(per-memory cell) offset","created_at":"2022-10-04T10:48:59.000+02:00","updated_at":"2022-10-04T10:48:59.000+02:00"},"physical_detector_unit":{"id":190,"physical_name":"Jungfrau_M530","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-07-18T17:07:34.000+02:00","updated_at":"2022-07-18T17:07:34.000+02:00","karabo_da":"JNGFR01","detector_id":21,"virtual_device_name":null,"uuid":800000000010,"float_uuid":3.95252516678e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR01","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":146432,"name":"20221007_074818_sIdx=0","file_name":"cal.1665128897.2662423.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m530/","data_set_name":"/Jungfrau_M530/Noise10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2022-10-07T09:34:19.000+02:00","end_validity_at":null,"begin_at":"2022-10-07T09:34:19.000+02:00","start_idx":0,"end_idx":0,"raw_data_location":"proposal:p002983
576+
runs:2 3 4","report_id":2743,"description":"","created_at":"2022-10-07T09:48:18.000+02:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/146432","calibration_constant":{"id":21221,"name":"jungfrau-Type_Noise10Hz_Jungfrau
577+
Def+1h1pMpTF4lds41GmnG3qw==\n","detector_type_id":4,"calibration_id":22,"condition_id":6598,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
578+
(per-memory cell) noise","created_at":"2022-10-04T10:49:01.000+02:00","updated_at":"2022-10-04T10:49:01.000+02:00"},"physical_detector_unit":{"id":190,"physical_name":"Jungfrau_M530","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-07-18T17:07:34.000+02:00","updated_at":"2022-07-18T17:07:34.000+02:00","karabo_da":"JNGFR01","detector_id":21,"virtual_device_name":null,"uuid":800000000010,"float_uuid":3.95252516678e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR01","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":146433,"name":"20221007_074820_sIdx=0","file_name":"cal.1665128898.9255517.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m530/","data_set_name":"/Jungfrau_M530/BadPixelsDark10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2022-10-07T09:34:19.000+02:00","end_validity_at":null,"begin_at":"2022-10-07T09:34:19.000+02:00","start_idx":0,"end_idx":0,"raw_data_location":"proposal:p002983
579+
runs:2 3 4","report_id":2743,"description":"","created_at":"2022-10-07T09:48:20.000+02:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/146433","calibration_constant":{"id":21222,"name":"jungfrau-Type_BadPixelsDark10Hz_Jungfrau
580+
Def+1h1pMpTF4lds41GmnG3qw==\n","detector_type_id":4,"calibration_id":23,"condition_id":6598,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
581+
(per-memory cell) dark pixels","created_at":"2022-10-04T10:49:03.000+02:00","updated_at":"2022-10-04T10:49:03.000+02:00"},"physical_detector_unit":{"id":190,"physical_name":"Jungfrau_M530","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-07-18T17:07:34.000+02:00","updated_at":"2022-07-18T17:07:34.000+02:00","karabo_da":"JNGFR01","detector_id":21,"virtual_device_name":null,"uuid":800000000010,"float_uuid":3.95252516678e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR01","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":155619,"name":"20230208_154420_sIdx=0","file_name":"cal.1675871058.9999344.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m530/","data_set_name":"/Jungfrau_M530/RelativeGain10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2023-02-05T16:20:13.000+01:00","end_validity_at":null,"begin_at":"2023-02-05T16:20:13.000+01:00","start_idx":0,"end_idx":0,"raw_data_location":"/gpfs/exfel/data/user/mramilli/jungfrau/module_PSI_gainmaps/M530/R0108_gainMaps_Single_JNGFR01_20230208.h5","report_id":null,"description":"","created_at":"2023-02-08T16:44:20.000+01:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/155619","calibration_constant":{"id":22321,"name":"jungfrau-Type_RelativeGain10Hz_Jungfrau
582+
Def6ZDmZnWxgj/CqE1zI2MusA==\n","detector_type_id":4,"calibration_id":30,"condition_id":6921,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
583+
(per-memory cell) relative gain","created_at":"2023-02-08T16:44:20.000+01:00","updated_at":"2023-02-08T16:44:20.000+01:00"},"physical_detector_unit":{"id":190,"physical_name":"Jungfrau_M530","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-07-18T17:07:34.000+02:00","updated_at":"2022-07-18T17:07:34.000+02:00","karabo_da":"JNGFR01","detector_id":21,"virtual_device_name":null,"uuid":800000000010,"float_uuid":3.95252516678e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR01","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":146434,"name":"20221007_074824_sIdx=0","file_name":"cal.1665128902.5447981.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m512/","data_set_name":"/Jungfrau_M512/Offset10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2022-10-07T09:34:19.000+02:00","end_validity_at":null,"begin_at":"2022-10-07T09:34:19.000+02:00","start_idx":0,"end_idx":0,"raw_data_location":"proposal:p002983
584+
runs:2 3 4","report_id":2743,"description":"","created_at":"2022-10-07T09:48:24.000+02:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/146434","calibration_constant":{"id":17690,"name":"jungfrau-Type_Offset10Hz_Jungfrau
585+
Defh6crsohUwkMEbcdHWxdT5Q==\n","detector_type_id":4,"calibration_id":21,"condition_id":5454,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
586+
(per-memory cell) offset","created_at":"2022-04-13T10:07:32.000+02:00","updated_at":"2022-04-13T10:07:32.000+02:00"},"physical_detector_unit":{"id":179,"physical_name":"Jungfrau_M512","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-01-20T15:15:31.000+01:00","updated_at":"2022-01-20T15:15:31.000+01:00","karabo_da":"JNGFR02","detector_id":21,"virtual_device_name":null,"uuid":1120000000002,"float_uuid":5.53353523343e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR02","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":146435,"name":"20221007_074826_sIdx=0","file_name":"cal.1665128904.5357594.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m512/","data_set_name":"/Jungfrau_M512/Noise10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2022-10-07T09:34:19.000+02:00","end_validity_at":null,"begin_at":"2022-10-07T09:34:19.000+02:00","start_idx":0,"end_idx":0,"raw_data_location":"proposal:p002983
587+
runs:2 3 4","report_id":2743,"description":"","created_at":"2022-10-07T09:48:26.000+02:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/146435","calibration_constant":{"id":17691,"name":"jungfrau-Type_Noise10Hz_Jungfrau
588+
Defh6crsohUwkMEbcdHWxdT5Q==\n","detector_type_id":4,"calibration_id":22,"condition_id":5454,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
589+
(per-memory cell) noise","created_at":"2022-04-13T10:07:34.000+02:00","updated_at":"2022-04-13T10:07:34.000+02:00"},"physical_detector_unit":{"id":179,"physical_name":"Jungfrau_M512","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-01-20T15:15:31.000+01:00","updated_at":"2022-01-20T15:15:31.000+01:00","karabo_da":"JNGFR02","detector_id":21,"virtual_device_name":null,"uuid":1120000000002,"float_uuid":5.53353523343e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR02","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":146436,"name":"20221007_074828_sIdx=0","file_name":"cal.1665128906.481502.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m512/","data_set_name":"/Jungfrau_M512/BadPixelsDark10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2022-10-07T09:34:19.000+02:00","end_validity_at":null,"begin_at":"2022-10-07T09:34:19.000+02:00","start_idx":0,"end_idx":0,"raw_data_location":"proposal:p002983
590+
runs:2 3 4","report_id":2743,"description":"","created_at":"2022-10-07T09:48:28.000+02:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/146436","calibration_constant":{"id":17692,"name":"jungfrau-Type_BadPixelsDark10Hz_Jungfrau
591+
Defh6crsohUwkMEbcdHWxdT5Q==\n","detector_type_id":4,"calibration_id":23,"condition_id":5454,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
592+
(per-memory cell) dark pixels","created_at":"2022-04-13T10:07:36.000+02:00","updated_at":"2022-04-13T10:07:36.000+02:00"},"physical_detector_unit":{"id":179,"physical_name":"Jungfrau_M512","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-01-20T15:15:31.000+01:00","updated_at":"2022-01-20T15:15:31.000+01:00","karabo_da":"JNGFR02","detector_id":21,"virtual_device_name":null,"uuid":1120000000002,"float_uuid":5.53353523343e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR02","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}},{"id":155621,"name":"20230208_155627_sIdx=0","file_name":"cal.1675871786.3909953.h5","path_to_file":"xfel/cal/jungfrau-type/jungfrau_m512/","data_set_name":"/Jungfrau_M512/RelativeGain10Hz/0","flg_deployed":true,"flg_good_quality":true,"begin_validity_at":"2023-02-05T16:20:13.000+01:00","end_validity_at":null,"begin_at":"2023-02-05T16:20:13.000+01:00","start_idx":0,"end_idx":0,"raw_data_location":"/gpfs/exfel/data/user/mramilli/jungfrau/module_PSI_gainmaps/M512/R0108_gainMaps_Single_JNGFR02_20230208.h5","report_id":null,"description":"","created_at":"2023-02-08T16:56:27.000+01:00","view_url":"https://in.xfel.eu/calibration/calibration_constant_versions/155621","calibration_constant":{"id":22323,"name":"jungfrau-Type_RelativeGain10Hz_Jungfrau
593+
DefoxQ/O4yIBXEWX5X5myc8cw==\n","detector_type_id":4,"calibration_id":30,"condition_id":6923,"flg_auto_approve":true,"flg_available":true,"description":"Per-pixel
594+
(per-memory cell) relative gain","created_at":"2023-02-08T16:56:27.000+01:00","updated_at":"2023-02-08T16:56:27.000+01:00"},"physical_detector_unit":{"id":179,"physical_name":"Jungfrau_M512","detector_type_id":4,"flg_available":true,"description":null,"created_at":"2022-01-20T15:15:31.000+01:00","updated_at":"2022-01-20T15:15:31.000+01:00","karabo_da":"JNGFR02","detector_id":21,"virtual_device_name":null,"uuid":1120000000002,"float_uuid":5.53353523343e-312,"module_number":null,"karabo_da_at_ccv_begin_at":"JNGFR02","detector_id_at_ccv_begin_at":21,"virtual_device_name_at_ccv_begin_at":null,"module_number_at_ccv_begin_at":null}}]'
595+
headers:
596+
Cache-Control:
597+
- max-age=0, private, must-revalidate
598+
Content-Length:
599+
- '11832'
600+
Content-Type:
601+
- application/json; charset=utf-8
602+
Date:
603+
- Thu, 01 Aug 2024 05:57:35 GMT
604+
Etag:
605+
- W/"1115a54f4f7819df886984a1b4e11a5f"
606+
Keep-Alive:
607+
- timeout=5, max=100
608+
Referrer-Policy:
609+
- strict-origin-when-cross-origin
610+
Server:
611+
- Apache
612+
Status:
613+
- 200 OK
614+
Strict-Transport-Security:
615+
- max-age=16070400; includeSubDomains
616+
Vary:
617+
- Origin
618+
Via:
619+
- HTTP/1.1 xfel_oauth_proxy
620+
X-Content-Type-Options:
621+
- nosniff
622+
X-Download-Options:
623+
- noopen
624+
X-Frame-Options:
625+
- SAMEORIGIN
626+
X-Permitted-Cross-Domain-Policies:
627+
- none
628+
X-Powered-By:
629+
- Phusion Passenger(R)
630+
X-Request-Id:
631+
- db06bd1c-e3ac-4e95-ab81-43f5ddf99723
632+
X-Runtime:
633+
- '0.639828'
634+
X-Xss-Protection:
635+
- '0'
636+
status:
637+
code: 200
638+
message: OK
639+
version: 1

‎tests/test_calibration.py

+36
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,42 @@ def test_JUNGFRAU_constant():
226226
assert set(jf_cd) >= {"Offset10Hz", "BadPixelsDark10Hz", "RelativeGain10Hz"}
227227

228228

229+
@pytest.mark.vcr
230+
def test_JUNGFRAU_constant_prior_strategy():
231+
cond = JUNGFRAUConditions(
232+
sensor_bias_voltage=90.,
233+
memory_cells=1,
234+
integration_time=400.,
235+
gain_setting=0,
236+
sensor_temperature=291.,
237+
)
238+
jf_cd = CalibrationData.from_condition(
239+
cond,
240+
"FXE_XAD_JF1M",
241+
event_at="2024-03-04T13:33:28.000+01:00",
242+
begin_at_strategy="prior",
243+
)
244+
assert jf_cd.aggregator_names == ["JNGFR01", "JNGFR02"]
245+
assert set(jf_cd) >= {"Offset10Hz", "BadPixelsDark10Hz", "RelativeGain10Hz"}
246+
assert jf_cd["Noise10Hz"].constants["JNGFR01"]._metadata["begin_at"] == '2022-10-07T09:34:19.000+02:00' # noqa
247+
248+
def test_raise_invalid_begin_at_strategy():
249+
cond = JUNGFRAUConditions(
250+
sensor_bias_voltage=90.,
251+
memory_cells=1,
252+
integration_time=400.,
253+
gain_setting=0,
254+
sensor_temperature=291.,
255+
)
256+
with pytest.raises(ValueError):
257+
CalibrationData.from_condition(
258+
cond,
259+
"FXE_XAD_JF1M",
260+
event_at="2024-03-04 17:56:05.172132+00:00",
261+
begin_at_strategy="INVALID_STRATEGY"
262+
)
263+
264+
229265
@pytest.mark.vcr
230266
def test_AGIPD_CalibrationData_report():
231267
"""Test CalibrationData with data from report"""

0 commit comments

Comments
 (0)
Please sign in to comment.