Skip to content

Commit a187443

Browse files
committed
Move data registries into tests
1 parent 59fa877 commit a187443

File tree

4 files changed

+143
-118
lines changed

4 files changed

+143
-118
lines changed

src/ess/reduce/data/__init__.py

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -6,103 +6,12 @@
66
It has to be installed separately with either pip or conda.
77
"""
88

9-
from pathlib import Path
10-
119
from ._registry import Entry, LocalRegistry, PoochRegistry, Registry, make_registry
1210

13-
_bifrost_registry = make_registry(
14-
'ess/bifrost',
15-
files={
16-
"BIFROST_20240914T053723.h5": "md5:0f2fa5c9a851f8e3a4fa61defaa3752e",
17-
},
18-
version='1',
19-
)
20-
21-
22-
_dream_registry = make_registry(
23-
'ess/dream',
24-
files={
25-
"TEST_977695_00068064.hdf": "md5:9e6ee9ec70d7c5e8c0c93b9e07e8949f",
26-
},
27-
version='2',
28-
)
29-
30-
31-
_loki_registry = make_registry(
32-
'ess/loki',
33-
files={
34-
# Files from LoKI@Larmor detector test experiment
35-
#
36-
# Background run 1 (no sample, sample holder/can only, no transmission monitor)
37-
'60248-2022-02-28_2215.nxs': 'md5:d9f17b95274a0fc6468df7e39df5bf03',
38-
# Sample run 1 (sample + sample holder/can, no transmission monitor in beam)
39-
'60250-2022-02-28_2215.nxs': 'md5:6a519ceaacbae702a6d08241e86799b1',
40-
# Sample run 2 (sample + sample holder/can, no transmission monitor in beam)
41-
'60339-2022-02-28_2215.nxs': 'md5:03c86f6389566326bb0cbbd80b8f8c4f',
42-
# Background transmission run (sample holder/can + transmission monitor)
43-
'60392-2022-02-28_2215.nxs': 'md5:9ecc1a9a2c05a880144afb299fc11042',
44-
# Background run 2 (no sample, sample holder/can only, no transmission monitor)
45-
'60393-2022-02-28_2215.nxs': 'md5:bf550d0ba29931f11b7450144f658652',
46-
# Sample transmission run (sample + sample holder/can + transmission monitor)
47-
'60394-2022-02-28_2215.nxs': 'md5:c40f38a62337d86957af925296c4c615',
48-
# Analytical model for the I(Q) of the Poly-Gauss sample
49-
'PolyGauss_I0-50_Rg-60.h5': 'md5:f5d60d9c2286cb197b8cd4dc82db3d7e',
50-
# XML file for the pixel mask
51-
'mask_new_July2022.xml': 'md5:421b6dc9db74126ffbc5d88164d017b0',
52-
},
53-
version='2',
54-
)
55-
56-
57-
def bifrost_simulated_elastic() -> Path:
58-
"""McStas simulation with elastic incoherent scattering + phonon."""
59-
return _bifrost_registry.get_path('BIFROST_20240914T053723.h5')
60-
61-
62-
def loki_tutorial_sample_run_60250() -> Path:
63-
"""Sample run with sample and sample holder/can, no transmission monitor in beam."""
64-
return _loki_registry.get_path('60250-2022-02-28_2215.nxs')
65-
66-
67-
def loki_tutorial_sample_run_60339() -> Path:
68-
"""Sample run with sample and sample holder/can, no transmission monitor in beam."""
69-
return _loki_registry.get_path('60339-2022-02-28_2215.nxs')
70-
71-
72-
def loki_tutorial_background_run_60248() -> Path:
73-
"""Background run with sample holder/can only, no transmission monitor."""
74-
return _loki_registry.get_path('60248-2022-02-28_2215.nxs')
75-
76-
77-
def loki_tutorial_background_run_60393() -> Path:
78-
"""Background run with sample holder/can only, no transmission monitor."""
79-
return _loki_registry.get_path('60393-2022-02-28_2215.nxs')
80-
81-
82-
def loki_tutorial_sample_transmission_run() -> Path:
83-
"""Sample transmission run (sample + sample holder/can + transmission monitor)."""
84-
return _loki_registry.get_path('60394-2022-02-28_2215.nxs')
85-
86-
87-
def dream_coda_test_file() -> Path:
88-
"""CODA file for DREAM where most pulses have been removed.
89-
90-
See ``tools/shrink_nexus.py``.
91-
"""
92-
return _dream_registry.get_path('TEST_977695_00068064.hdf')
93-
94-
9511
__all__ = [
9612
'Entry',
9713
'LocalRegistry',
9814
'PoochRegistry',
9915
'Registry',
100-
'bifrost_simulated_elastic',
101-
'dream_coda_test_file',
102-
'loki_tutorial_background_run_60248',
103-
'loki_tutorial_background_run_60393',
104-
'loki_tutorial_sample_run_60250',
105-
'loki_tutorial_sample_run_60339',
106-
'loki_tutorial_sample_transmission_run',
10716
'make_registry',
10817
]

tests/conftest.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# SPDX-License-Identifier: BSD-3-Clause
2+
# Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
3+
4+
from pathlib import Path
5+
6+
import pytest
7+
8+
from ess.reduce.data import Registry, make_registry
9+
10+
11+
@pytest.fixture(scope='session')
12+
def bifrost_registry() -> Registry:
13+
return make_registry(
14+
'ess/bifrost',
15+
files={
16+
"BIFROST_20240914T053723.h5": "md5:0f2fa5c9a851f8e3a4fa61defaa3752e",
17+
},
18+
version='1',
19+
)
20+
21+
22+
@pytest.fixture(scope='session')
23+
def dream_registry() -> Registry:
24+
return make_registry(
25+
'ess/dream',
26+
files={
27+
"TEST_977695_00068064.hdf": "md5:9e6ee9ec70d7c5e8c0c93b9e07e8949f",
28+
},
29+
version='2',
30+
)
31+
32+
33+
@pytest.fixture(scope='session')
34+
def loki_registry() -> Registry:
35+
return make_registry(
36+
'ess/loki',
37+
files={
38+
# Files from LoKI@Larmor detector test experiment
39+
#
40+
# Background run 1 (no sample, sample holder/can only, no transmission monitor) # noqa: E501
41+
'60248-2022-02-28_2215.nxs': 'md5:d9f17b95274a0fc6468df7e39df5bf03',
42+
# Sample run 1 (sample + sample holder/can, no transmission monitor in beam)
43+
'60250-2022-02-28_2215.nxs': 'md5:6a519ceaacbae702a6d08241e86799b1',
44+
# Sample run 2 (sample + sample holder/can, no transmission monitor in beam)
45+
'60339-2022-02-28_2215.nxs': 'md5:03c86f6389566326bb0cbbd80b8f8c4f',
46+
# Background transmission run (sample holder/can + transmission monitor)
47+
'60392-2022-02-28_2215.nxs': 'md5:9ecc1a9a2c05a880144afb299fc11042',
48+
# Background run 2 (no sample, sample holder/can only, no transmission monitor) # noqa: E501
49+
'60393-2022-02-28_2215.nxs': 'md5:bf550d0ba29931f11b7450144f658652',
50+
# Sample transmission run (sample + sample holder/can + transmission monitor) # noqa: E501
51+
'60394-2022-02-28_2215.nxs': 'md5:c40f38a62337d86957af925296c4c615',
52+
# Analytical model for the I(Q) of the Poly-Gauss sample
53+
'PolyGauss_I0-50_Rg-60.h5': 'md5:f5d60d9c2286cb197b8cd4dc82db3d7e',
54+
# XML file for the pixel mask
55+
'mask_new_July2022.xml': 'md5:421b6dc9db74126ffbc5d88164d017b0',
56+
},
57+
version='2',
58+
)
59+
60+
61+
@pytest.fixture(scope='session')
62+
def bifrost_simulated_elastic(bifrost_registry: Registry) -> Path:
63+
"""McStas simulation with elastic incoherent scattering + phonon."""
64+
return bifrost_registry.get_path('BIFROST_20240914T053723.h5')
65+
66+
67+
@pytest.fixture(scope='session')
68+
def loki_tutorial_sample_run_60250(loki_registry: Registry) -> Path:
69+
"""Sample run with sample and sample holder/can, no transmission monitor in beam."""
70+
return loki_registry.get_path('60250-2022-02-28_2215.nxs')
71+
72+
73+
@pytest.fixture(scope='session')
74+
def loki_tutorial_sample_run_60339(loki_registry: Registry) -> Path:
75+
"""Sample run with sample and sample holder/can, no transmission monitor in beam."""
76+
return loki_registry.get_path('60339-2022-02-28_2215.nxs')
77+
78+
79+
@pytest.fixture(scope='session')
80+
def loki_tutorial_background_run_60248(loki_registry: Registry) -> Path:
81+
"""Background run with sample holder/can only, no transmission monitor."""
82+
return loki_registry.get_path('60248-2022-02-28_2215.nxs')
83+
84+
85+
@pytest.fixture(scope='session')
86+
def loki_tutorial_background_run_60393(loki_registry: Registry) -> Path:
87+
"""Background run with sample holder/can only, no transmission monitor."""
88+
return loki_registry.get_path('60393-2022-02-28_2215.nxs')
89+
90+
91+
@pytest.fixture(scope='session')
92+
def loki_tutorial_sample_transmission_run(loki_registry: Registry) -> Path:
93+
"""Sample transmission run (sample + sample holder/can + transmission monitor)."""
94+
return loki_registry.get_path('60394-2022-02-28_2215.nxs')
95+
96+
97+
@pytest.fixture(scope='session')
98+
def dream_coda_test_file(dream_registry: Registry) -> Path:
99+
"""CODA file for DREAM where most pulses have been removed.
100+
101+
See ``tools/shrink_nexus.py``.
102+
"""
103+
return dream_registry.get_path('TEST_977695_00068064.hdf')

tests/nexus/json_generator_test.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
# SPDX-License-Identifier: BSD-3-Clause
22
# Copyright (c) 2024 Scipp contributors (https://github.com/scipp)
3+
from pathlib import Path
4+
35
import pytest
46
import scippnexus as snx
57
from scipp.testing import assert_identical
68

7-
from ess.reduce import data
89
from ess.reduce.nexus.json_generator import event_data_generator
910
from ess.reduce.nexus.json_nexus import json_nexus_group
1011

1112

12-
def test_event_data_generator_monitor_events_round_trip() -> None:
13-
filename = data.loki_tutorial_sample_run_60250()
13+
def test_event_data_generator_monitor_events_round_trip(
14+
loki_tutorial_sample_run_60250: Path,
15+
) -> None:
16+
filename = loki_tutorial_sample_run_60250
1417
monitor = snx.load(filename, root='entry/instrument/monitor_1/monitor_1_events')
1518
generator = event_data_generator(monitor)
1619
for i in range(len(monitor)):
@@ -20,8 +23,10 @@ def test_event_data_generator_monitor_events_round_trip() -> None:
2023
next(generator)
2124

2225

23-
def test_event_data_generator_detector_events_round_trip() -> None:
24-
filename = data.loki_tutorial_sample_run_60250()
26+
def test_event_data_generator_detector_events_round_trip(
27+
loki_tutorial_sample_run_60250: Path,
28+
) -> None:
29+
filename = loki_tutorial_sample_run_60250
2530
detector = snx.load(
2631
filename, root='entry/instrument/larmor_detector/larmor_detector_events'
2732
)
@@ -31,8 +36,10 @@ def test_event_data_generator_detector_events_round_trip() -> None:
3136
assert_identical(group[()], detector[i : i + 1])
3237

3338

34-
def test_event_data_generator_without_event_id_yields_ones() -> None:
35-
filename = data.loki_tutorial_sample_run_60250()
39+
def test_event_data_generator_without_event_id_yields_ones(
40+
loki_tutorial_sample_run_60250: Path,
41+
) -> None:
42+
filename = loki_tutorial_sample_run_60250
3643
base = snx.load(filename, root='entry/instrument/monitor_1/monitor_1_events')
3744
monitor = base.bins.drop_coords('event_id')
3845
generator = event_data_generator(monitor)

tests/nexus/workflow_test.py

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# SPDX-License-Identifier: BSD-3-Clause
22
# Copyright (c) 2024 Scipp contributors (https://github.com/scipp)
33
from datetime import UTC, datetime
4+
from pathlib import Path
45

56
import pytest
67
import scipp as sc
78
import scippnexus as snx
89
from scipp.testing import assert_identical
910

10-
from ess.reduce import data
1111
from ess.reduce.nexus import compute_component_position, workflow
1212
from ess.reduce.nexus.types import (
1313
BackgroundRun,
@@ -176,11 +176,11 @@ def test_to_transform_raises_if_interval_does_not_yield_unique_value(
176176
)
177177

178178

179-
def test_given_no_sample_load_nexus_sample_returns_group_with_origin_depends_on() -> (
180-
None
181-
):
179+
def test_given_no_sample_load_nexus_sample_returns_group_with_origin_depends_on(
180+
loki_tutorial_sample_run_60250: Path,
181+
) -> None:
182182
filespec = workflow.file_path_to_file_spec(
183-
data.loki_tutorial_sample_run_60250(), preopen=True
183+
loki_tutorial_sample_run_60250, preopen=True
184184
)
185185
spec = workflow.unique_component_spec(filespec)
186186
assert spec.filename['/entry'][snx.NXsample] == {}
@@ -549,9 +549,9 @@ def test_assemble_monitor_preserves_masks(calibrated_monitor, monitor_event_data
549549
assert 'mymask' in monitor_data.masks
550550

551551

552-
def test_load_event_monitor_workflow() -> None:
552+
def test_load_event_monitor_workflow(loki_tutorial_sample_run_60250: Path) -> None:
553553
wf = LoadMonitorWorkflow(run_types=[SampleRun], monitor_types=[FrameMonitor1])
554-
wf[Filename[SampleRun]] = data.loki_tutorial_sample_run_60250()
554+
wf[Filename[SampleRun]] = loki_tutorial_sample_run_60250
555555
wf[NeXusName[FrameMonitor1]] = 'monitor_1'
556556
da = wf.compute(MonitorData[SampleRun, FrameMonitor1])
557557
assert 'position' in da.coords
@@ -561,9 +561,9 @@ def test_load_event_monitor_workflow() -> None:
561561
assert da.bins.constituents['data'].variances is not None
562562

563563

564-
def test_load_histogram_monitor_workflow() -> None:
564+
def test_load_histogram_monitor_workflow(dream_coda_test_file: Path) -> None:
565565
wf = LoadMonitorWorkflow(run_types=[SampleRun], monitor_types=[FrameMonitor1])
566-
wf[Filename[SampleRun]] = data.dream_coda_test_file()
566+
wf[Filename[SampleRun]] = dream_coda_test_file
567567
wf[NeXusName[FrameMonitor1]] = 'monitor_bunker'
568568
da = wf.compute(MonitorData[SampleRun, FrameMonitor1])
569569
assert 'position' in da.coords
@@ -575,9 +575,9 @@ def test_load_histogram_monitor_workflow() -> None:
575575
assert da.variances is not None
576576

577577

578-
def test_load_detector_workflow() -> None:
578+
def test_load_detector_workflow(loki_tutorial_sample_run_60250: Path) -> None:
579579
wf = LoadDetectorWorkflow(run_types=[SampleRun], monitor_types=[])
580-
wf[Filename[SampleRun]] = data.loki_tutorial_sample_run_60250()
580+
wf[Filename[SampleRun]] = loki_tutorial_sample_run_60250
581581
wf[NeXusName[snx.NXdetector]] = 'larmor_detector'
582582
da = wf.compute(DetectorData[SampleRun])
583583
assert 'position' in da.coords
@@ -588,9 +588,11 @@ def test_load_detector_workflow() -> None:
588588

589589

590590
@pytest.mark.parametrize('preopen', [True, False])
591-
def test_generic_nexus_workflow(preopen: bool) -> None:
591+
def test_generic_nexus_workflow(
592+
preopen: bool, loki_tutorial_sample_run_60250: Path
593+
) -> None:
592594
wf = GenericNeXusWorkflow(run_types=[SampleRun], monitor_types=[FrameMonitor1])
593-
wf[Filename[SampleRun]] = data.loki_tutorial_sample_run_60250()
595+
wf[Filename[SampleRun]] = loki_tutorial_sample_run_60250
594596
wf[NeXusName[FrameMonitor1]] = 'monitor_1'
595597
wf[NeXusName[snx.NXdetector]] = 'larmor_detector'
596598
wf[PreopenNeXusFile] = preopen
@@ -607,9 +609,9 @@ def test_generic_nexus_workflow(preopen: bool) -> None:
607609
assert da.dims == ('event_time_zero',)
608610

609611

610-
def test_generic_nexus_workflow_load_choppers() -> None:
612+
def test_generic_nexus_workflow_load_choppers(bifrost_simulated_elastic: Path) -> None:
611613
wf = GenericNeXusWorkflow(run_types=[SampleRun], monitor_types=[])
612-
wf[Filename[SampleRun]] = data.bifrost_simulated_elastic()
614+
wf[Filename[SampleRun]] = bifrost_simulated_elastic
613615
choppers = wf.compute(RawChoppers[SampleRun])
614616

615617
assert choppers.keys() == {
@@ -626,20 +628,24 @@ def test_generic_nexus_workflow_load_choppers() -> None:
626628
assert chopper['slit_edges'].shape == (2,)
627629

628630

629-
def test_generic_nexus_workflow_load_beamline_metadata() -> None:
631+
def test_generic_nexus_workflow_load_beamline_metadata(
632+
bifrost_simulated_elastic: Path,
633+
) -> None:
630634
wf = GenericNeXusWorkflow(run_types=[SampleRun], monitor_types=[])
631-
wf[Filename[SampleRun]] = data.bifrost_simulated_elastic()
635+
wf[Filename[SampleRun]] = bifrost_simulated_elastic
632636
beamline = wf.compute(Beamline)
633637

634638
assert beamline.name == 'BIFROST'
635639
assert beamline.facility == 'ESS'
636640
assert beamline.site == 'ESS'
637641

638642

639-
def test_generic_nexus_workflow_load_measurement_metadata() -> None:
643+
def test_generic_nexus_workflow_load_measurement_metadata(
644+
loki_tutorial_sample_run_60250: Path, loki_tutorial_background_run_60248: Path
645+
) -> None:
640646
wf = GenericNeXusWorkflow(run_types=[SampleRun], monitor_types=[])
641-
wf[Filename[SampleRun]] = data.loki_tutorial_sample_run_60250()
642-
wf[Filename[BackgroundRun]] = data.loki_tutorial_background_run_60248()
647+
wf[Filename[SampleRun]] = loki_tutorial_sample_run_60250
648+
wf[Filename[BackgroundRun]] = loki_tutorial_background_run_60248
643649
measurement = wf.compute(Measurement)
644650

645651
assert measurement.title == 'My experiment'

0 commit comments

Comments
 (0)