-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconftest.py
143 lines (123 loc) · 6.26 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
from __future__ import annotations
import h5py
import numpy as np
import pytest
def pytest_configure():
"""Incantations to create an in-memory file in h5py."""
pytest.h5_in_memory = {"driver": "core", "backing_store": False}
@pytest.fixture
def nxmx_example():
with h5py.File(" ", mode="w", **pytest.h5_in_memory) as f:
entry = f.create_group("/entry")
entry.attrs["NX_class"] = "NXentry"
entry["definition"] = "NXmx"
entry["start_time"] = "2021-09-10T06:54:37Z"
entry["end_time"] = "2021-09-10T06:55:09Z"
entry["end_time_estimated"] = "2021-09-10T06:55:09Z"
source = entry.create_group("source")
source.attrs["NX_class"] = "NXsource"
source_name = source.create_dataset("name", data="Diamond")
source_name.attrs["short_name"] = "DLS"
instrument = entry.create_group("instrument")
instrument.attrs["NX_class"] = "NXinstrument"
name = instrument.create_dataset(
"name", data=np.string_("DIAMOND BEAMLINE I03")
)
name.attrs["short_name"] = "I03"
beam = instrument.create_group("beam")
beam.attrs["NX_class"] = "NXbeam"
beam.create_dataset("incident_beam_size", data=np.array([3e-5, 3e-5]))
beam["incident_beam_size"].attrs["units"] = b"m"
beam["incident_wavelength"] = 0.976223
beam["incident_wavelength"].attrs["units"] = b"angstrom"
beam["total_flux"] = 1e12
beam["total_flux"].attrs["units"] = b"Hz"
detector = instrument.create_group("detector")
detector.attrs["NX_class"] = "NXdetector"
detector["beam_center_x"] = 2079.79727597266
detector["beam_center_y"] = 2225.38773853771
detector["count_time"] = 0.00285260857097799
detector["depends_on"] = "/entry/instrument/detector/transformations/det_z"
detector["description"] = "Eiger 16M"
detector["distance"] = 0.237015940260233
detector.create_dataset("data", data=np.zeros((100, 100)))
detector["sensor_material"] = "Silicon"
detector["sensor_thickness"] = 0.00045
detector["sensor_thickness"].attrs["units"] = b"m"
detector["x_pixel_size"] = 7.5e-05
detector["y_pixel_size"] = 7.5e-05
detector["underload_value"] = 0
detector["saturation_value"] = 9266
detector["frame_time"] = 0.1
detector["frame_time"].attrs["units"] = "s"
detector["bit_depth_readout"] = np.array(32)
detector["bit_depth_image"] = np.array(32)
detector_transformations = detector.create_group("transformations")
detector_transformations.attrs["NX_class"] = "NXtransformations"
det_z = detector_transformations.create_dataset("det_z", data=np.array([289.3]))
det_z.attrs["depends_on"] = b"."
det_z.attrs["transformation_type"] = b"translation"
det_z.attrs["units"] = b"mm"
det_z.attrs["vector"] = np.array([0.0, 0.0, 1.0])
module = detector.create_group("module")
module.attrs["NX_class"] = "NXdetector_module"
module.create_dataset("data_origin", data=np.array([0.0, 0.0]))
module.create_dataset("data_size", data=np.array([4362, 4148]))
fast_pixel_direction = module.create_dataset(
"fast_pixel_direction", data=7.5e-5
)
fast_pixel_direction.attrs["transformation_type"] = "translation"
fast_pixel_direction.attrs["depends_on"] = (
"/entry/instrument/detector/module/module_offset"
)
fast_pixel_direction.attrs["vector"] = np.array([-1.0, 0.0, 0.0])
fast_pixel_direction.attrs["offset"] = np.array([0.0, 0.0, 0.0])
fast_pixel_direction.attrs["offset_units"] = b"m"
fast_pixel_direction.attrs["units"] = b"m"
slow_pixel_direction = module.create_dataset(
"slow_pixel_direction", data=7.5e-5
)
slow_pixel_direction.attrs["transformation_type"] = "translation"
slow_pixel_direction.attrs["depends_on"] = (
"/entry/instrument/detector/module/module_offset"
)
slow_pixel_direction.attrs["vector"] = np.array([0.0, -1.0, 0.0])
slow_pixel_direction.attrs["offset"] = np.array([0.0, 0.0, 0.0])
slow_pixel_direction.attrs["offset_units"] = b"m"
slow_pixel_direction.attrs["units"] = b"m"
module_offset = module.create_dataset("module_offset", data=0)
module_offset.attrs["transformation_type"] = "translation"
module_offset.attrs["depends_on"] = detector["depends_on"]
module_offset.attrs["vector"] = np.array([1.0, 0.0, 0.0])
module_offset.attrs["offset"] = np.array([0.155985, 0.166904, -0])
module_offset.attrs["offset_units"] = b"m"
module_offset.attrs["units"] = b"m"
sample = entry.create_group("sample")
sample.attrs["NX_class"] = "NXsample"
sample["name"] = "mysample"
sample["depends_on"] = b"/entry/sample/transformations/phi"
sample["temperature"] = 273
sample["temperature"].attrs["units"] = b"K"
transformations = sample.create_group("transformations")
transformations.attrs["NX_class"] = "NXtransformations"
omega = transformations.create_dataset("omega", data=np.arange(0, 1, 0.1))
omega.attrs["depends_on"] = b"."
omega.attrs["transformation_type"] = b"rotation"
omega.attrs["units"] = b"deg"
omega.attrs["vector"] = np.array([-1.0, 0.0, 0.0])
omega.attrs["omega_offset"] = np.array([0.0, 0.0, 0.0])
transformations.create_dataset("omega_end", data=np.arange(0.1, 1.1, 0.1))
transformations.create_dataset("omega_increment_set", data=0.1)
phi = transformations.create_dataset("phi", data=np.array([0.0]))
phi.attrs["depends_on"] = b"/entry/sample/transformations/chi"
phi.attrs["transformation_type"] = b"rotation"
phi.attrs["units"] = b"deg"
phi.attrs["vector"] = np.array([-1.0, 0, 0])
chi = transformations.create_dataset("chi", data=0.0) # scalar dataset
chi.attrs["depends_on"] = b"/entry/sample/transformations/omega"
chi.attrs["transformation_type"] = b"rotation"
chi.attrs["units"] = b"deg"
chi.attrs["vector"] = np.array([0, 0, 1])
data = entry.create_group("data")
data.attrs["NX_class"] = "NXdata"
yield f