Skip to content

Commit 0ff8738

Browse files
committed
Use custom run and monitor types
1 parent 8aced2a commit 0ff8738

File tree

12 files changed

+56
-53
lines changed

12 files changed

+56
-53
lines changed

docs/user-guide/dream/dream-advanced-powder-reduction.ipynb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,12 @@
5656
"\n",
5757
"workflow[Filename[SampleRun]] = dream.data.simulated_diamond_sample()\n",
5858
"workflow[Filename[VanadiumRun]] = dream.data.simulated_vanadium_sample()\n",
59-
"workflow[Filename[BackgroundRun]] = dream.data.simulated_empty_can()\n",
59+
"workflow[Filename[EmptyCanRun]] = dream.data.simulated_empty_can()\n",
6060
"workflow[CalibrationFilename] = None\n",
6161
"\n",
6262
"workflow[MonitorFilename[SampleRun]] = dream.data.simulated_monitor_diamond_sample()\n",
6363
"workflow[MonitorFilename[VanadiumRun]] = dream.data.simulated_monitor_vanadium_sample()\n",
64-
"workflow[MonitorFilename[BackgroundRun]] = dream.data.simulated_monitor_empty_can()\n",
64+
"workflow[MonitorFilename[EmptyCanRun]] = dream.data.simulated_monitor_empty_can()\n",
6565
"workflow[CaveMonitorPosition] = sc.vector([0.0, 0.0, -4220.0], unit=\"mm\")\n",
6666
"\n",
6767
"workflow[dream.InstrumentConfiguration] = dream.InstrumentConfiguration.high_flux\n",
@@ -174,12 +174,12 @@
174174
"\n",
175175
"workflow[Filename[SampleRun]] = dream.data.simulated_diamond_sample()\n",
176176
"workflow[Filename[VanadiumRun]] = dream.data.simulated_vanadium_sample()\n",
177-
"workflow[Filename[BackgroundRun]] = dream.data.simulated_empty_can()\n",
177+
"workflow[Filename[EmptyCanRun]] = dream.data.simulated_empty_can()\n",
178178
"workflow[CalibrationFilename] = None\n",
179179
"\n",
180180
"workflow[MonitorFilename[SampleRun]] = dream.data.simulated_monitor_diamond_sample()\n",
181181
"workflow[MonitorFilename[VanadiumRun]] = dream.data.simulated_monitor_vanadium_sample()\n",
182-
"workflow[MonitorFilename[BackgroundRun]] = dream.data.simulated_monitor_empty_can()\n",
182+
"workflow[MonitorFilename[EmptyCanRun]] = dream.data.simulated_monitor_empty_can()\n",
183183
"workflow[CaveMonitorPosition] = sc.vector([0.0, 0.0, -4220.0], unit=\"mm\")\n",
184184
"\n",
185185
"workflow[dream.InstrumentConfiguration] = dream.InstrumentConfiguration.high_flux\n",
@@ -254,7 +254,7 @@
254254
"\n",
255255
"workflow[Filename[SampleRun]] = dream.data.simulated_diamond_sample()\n",
256256
"workflow[Filename[VanadiumRun]] = dream.data.simulated_vanadium_sample()\n",
257-
"workflow[Filename[BackgroundRun]] = dream.data.simulated_empty_can()\n",
257+
"workflow[Filename[EmptyCanRun]] = dream.data.simulated_empty_can()\n",
258258
"workflow[CalibrationFilename] = None\n",
259259
"\n",
260260
"workflow[dream.InstrumentConfiguration] = dream.InstrumentConfiguration.high_flux\n",
@@ -374,7 +374,7 @@
374374
"\n",
375375
"workflow[Filename[SampleRun]] = dream.data.simulated_diamond_sample()\n",
376376
"workflow[Filename[VanadiumRun]] = dream.data.simulated_vanadium_sample()\n",
377-
"workflow[Filename[BackgroundRun]] = dream.data.simulated_empty_can()\n",
377+
"workflow[Filename[EmptyCanRun]] = dream.data.simulated_empty_can()\n",
378378
"workflow[CalibrationFilename] = None\n",
379379
"\n",
380380
"workflow[dream.InstrumentConfiguration] = dream.InstrumentConfiguration.high_flux\n",

docs/user-guide/dream/dream-powder-reduction.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@
7979
"source": [
8080
"workflow[Filename[SampleRun]] = dream.data.simulated_diamond_sample()\n",
8181
"workflow[Filename[VanadiumRun]] = dream.data.simulated_vanadium_sample()\n",
82-
"workflow[Filename[BackgroundRun]] = dream.data.simulated_empty_can()\n",
82+
"workflow[Filename[EmptyCanRun]] = dream.data.simulated_empty_can()\n",
8383
"workflow[CalibrationFilename] = None\n",
8484
"\n",
8585
"workflow[MonitorFilename[SampleRun]] = dream.data.simulated_monitor_diamond_sample()\n",
8686
"workflow[MonitorFilename[VanadiumRun]] = dream.data.simulated_monitor_vanadium_sample()\n",
87-
"workflow[MonitorFilename[BackgroundRun]] = dream.data.simulated_monitor_empty_can()\n",
87+
"workflow[MonitorFilename[EmptyCanRun]] = dream.data.simulated_monitor_empty_can()\n",
8888
"workflow[CaveMonitorPosition] = sc.vector([0.0, 0.0, -4220.0], unit=\"mm\")\n",
8989
"\n",
9090
"workflow[dream.InstrumentConfiguration] = dream.InstrumentConfiguration.high_flux\n",

src/ess/dream/io/cif.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def prepare_reduced_empty_can_subtracted_tof_cif(
7171
authors: CIFAuthors,
7272
beamline: Beamline,
7373
source: Source,
74-
reducers: ReducerSoftwares,
74+
reducers: ReducerSoftware,
7575
calibration: OutputCalibrationData,
7676
) -> ReducedEmptyCanSubtractedTofCIF:
7777
"""Construct a CIF builder with reduced data in d-spacing.
@@ -117,7 +117,7 @@ def _prepare_reduced_tof_cif_impl(
117117
authors: CIFAuthors,
118118
beamline: Beamline,
119119
source: Source,
120-
reducers: ReducerSoftwares,
120+
reducers: ReducerSoftware,
121121
calibration: OutputCalibrationData,
122122
) -> ReducedTofCIF:
123123
to_save = _prepare_data(da)

src/ess/dream/io/geant4.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from scippneutron.metadata import ESS_SOURCE
99

1010
from ess.powder.types import (
11-
BackgroundRun,
1211
Beamline,
1312
CalibratedBeamline,
1413
CalibratedDetector,
@@ -18,6 +17,7 @@
1817
CaveMonitor,
1918
CaveMonitorPosition,
2019
DetectorData,
20+
EmptyCanRun,
2121
Filename,
2222
MonitorData,
2323
MonitorFilename,
@@ -321,7 +321,7 @@ def LoadGeant4Workflow() -> sciline.Pipeline:
321321
Workflow for loading NeXus data.
322322
"""
323323
wf = GenericTofWorkflow(
324-
run_types=[SampleRun, VanadiumRun, BackgroundRun], monitor_types=[CaveMonitor]
324+
run_types=[SampleRun, VanadiumRun, EmptyCanRun], monitor_types=[CaveMonitor]
325325
)
326326
wf.insert(extract_geant4_detector)
327327
wf.insert(load_geant4_csv)

src/ess/dream/io/nexus.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@
1515

1616
import sciline
1717

18-
from ess.powder.types import BunkerMonitor, CaveMonitor
18+
from ess.powder.types import (
19+
BunkerMonitor,
20+
CaveMonitor,
21+
EmptyCanRun,
22+
SampleRun,
23+
VanadiumRun,
24+
)
1925
from ess.reduce.nexus.types import DetectorBankSizes, NeXusName
2026
from ess.reduce.nexus.workflow import GenericNeXusWorkflow
2127

@@ -50,7 +56,10 @@ def LoadNeXusWorkflow() -> sciline.Pipeline:
5056
"""
5157
Workflow for loading NeXus data.
5258
"""
53-
wf = GenericNeXusWorkflow()
59+
wf = GenericNeXusWorkflow(
60+
run_types=(SampleRun, VanadiumRun, EmptyCanRun),
61+
monitor_types=(BunkerMonitor, CaveMonitor),
62+
)
5463
wf[DetectorBankSizes] = DETECTOR_BANK_SIZES
5564
wf[NeXusName[BunkerMonitor]] = "monitor_bunker"
5665
wf[NeXusName[CaveMonitor]] = "monitor_cave"

src/ess/dream/parameters.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
from __future__ import annotations
66

77
from ess.powder.types import (
8-
BackgroundRun,
98
CalibrationFilename,
109
DspacingBins,
10+
EmptyCanRun,
1111
Filename,
1212
IofDspacing,
1313
IofDspacingTwoTheta,
@@ -36,8 +36,8 @@
3636
parameter_registry[Filename[VanadiumRun]] = FilenameParameter.from_type(
3737
Filename[VanadiumRun]
3838
)
39-
parameter_registry[Filename[BackgroundRun]] = FilenameParameter.from_type(
40-
Filename[BackgroundRun]
39+
parameter_registry[Filename[EmptyCanRun]] = FilenameParameter.from_type(
40+
Filename[EmptyCanRun]
4141
)
4242
parameter_registry[CalibrationFilename] = FilenameParameter.from_type(
4343
CalibrationFilename

src/ess/dream/workflow.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
)
2020
from ess.powder.types import (
2121
AccumulatedProtonCharge,
22-
BackgroundRun,
2322
CaveMonitorPosition, # Should this be a DREAM-only parameter?
23+
EmptyCanRun,
2424
MonitorType,
2525
PixelMaskFilename,
2626
Position,
@@ -81,13 +81,13 @@ def default_parameters() -> dict:
8181
return {
8282
Position[snx.NXsample, SampleRun]: sample_position,
8383
Position[snx.NXsample, VanadiumRun]: sample_position,
84-
Position[snx.NXsample, BackgroundRun]: sample_position,
84+
Position[snx.NXsample, EmptyCanRun]: sample_position,
8585
Position[snx.NXsource, SampleRun]: source_position,
8686
Position[snx.NXsource, VanadiumRun]: source_position,
87-
Position[snx.NXsource, BackgroundRun]: source_position,
87+
Position[snx.NXsource, EmptyCanRun]: source_position,
8888
AccumulatedProtonCharge[SampleRun]: charge,
8989
AccumulatedProtonCharge[VanadiumRun]: charge,
90-
AccumulatedProtonCharge[BackgroundRun]: charge,
90+
AccumulatedProtonCharge[EmptyCanRun]: charge,
9191
TofMask: None,
9292
WavelengthMask: None,
9393
TwoThetaMask: None,

src/ess/powder/correction.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
from ._util import event_or_outer_coord
1414
from .types import (
1515
AccumulatedProtonCharge,
16-
BackgroundRun,
1716
CaveMonitor,
1817
DataWithScatteringCoordinates,
18+
EmptyCanRun,
1919
EmptyCanSubtractedIofDspacing,
2020
EmptyCanSubtractedIofDspacingTwoTheta,
2121
FocussedDataDspacing,
@@ -342,16 +342,16 @@ def _shallow_copy(da: sc.DataArray) -> sc.DataArray:
342342
return out
343343

344344

345-
def subtract_background(
345+
def subtract_empty_can(
346346
data: IofDspacing[SampleRun],
347-
background: IofDspacing[BackgroundRun],
347+
background: IofDspacing[EmptyCanRun],
348348
) -> EmptyCanSubtractedIofDspacing[SampleRun]:
349349
return EmptyCanSubtractedIofDspacing(data.bins.concatenate(-background))
350350

351351

352-
def subtract_background_two_theta(
352+
def subtract_empty_can_two_theta(
353353
data: IofDspacingTwoTheta[SampleRun],
354-
background: IofDspacingTwoTheta[BackgroundRun],
354+
background: IofDspacingTwoTheta[EmptyCanRun],
355355
) -> EmptyCanSubtractedIofDspacingTwoTheta[SampleRun]:
356356
return EmptyCanSubtractedIofDspacingTwoTheta(data.bins.concatenate(-background))
357357

@@ -381,7 +381,7 @@ def insert_run_normalization(
381381
normalize_by_proton_charge,
382382
normalize_by_vanadium_dspacing,
383383
normalize_by_vanadium_dspacing_and_two_theta,
384-
subtract_background,
385-
subtract_background_two_theta,
384+
subtract_empty_can,
385+
subtract_empty_can_two_theta,
386386
)
387387
"""Sciline providers for powder diffraction corrections."""

src/ess/powder/types.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,18 @@
2020
from ess.reduce.time_of_flight import types as tof_t
2121
from ess.reduce.uncertainty import UncertaintyBroadcastMode as _UncertaintyBroadcastMode
2222

23-
# 1 TypeVars used to parametrize the generic parts of the workflow
24-
25-
BackgroundRun = reduce_t.BackgroundRun
26-
BunkerMonitor = reduce_t.Monitor2
2723
CalibratedBeamline = reduce_t.CalibratedBeamline
2824
CalibratedDetector = reduce_t.CalibratedDetector
29-
CalibratedBeamline = reduce_t.CalibratedBeamline
3025
CalibratedMonitor = reduce_t.CalibratedMonitor
3126
DetectorData = reduce_t.DetectorData
3227
DetectorPositionOffset = reduce_t.DetectorPositionOffset
33-
EmptyBeamRun = reduce_t.EmptyBeamRun
3428
Filename = reduce_t.Filename
35-
CaveMonitor = reduce_t.Monitor1
3629
MonitorData = reduce_t.MonitorData
3730
MonitorPositionOffset = reduce_t.MonitorPositionOffset
3831
NeXusDetectorName = reduce_t.NeXusDetectorName
3932
NeXusMonitorName = reduce_t.NeXusName
4033
NeXusComponent = reduce_t.NeXusComponent
41-
SampleRun = reduce_t.SampleRun
4234
Position = reduce_t.Position
43-
VanadiumRun = reduce_t.VanadiumRun
4435

4536
DetectorBankSizes = reduce_t.DetectorBankSizes
4637

@@ -58,20 +49,23 @@
5849
TimeOfFlightLookupTableFilename = tof_t.TimeOfFlightLookupTableFilename
5950
SimulationResults = tof_t.SimulationResults
6051

61-
RunType = TypeVar("RunType", SampleRun, VanadiumRun, BackgroundRun)
62-
MonitorType = TypeVar("MonitorType", CaveMonitor, BunkerMonitor)
52+
SampleRun = reduce_t.SampleRun
53+
VanadiumRun = reduce_t.VanadiumRun
54+
EmptyCanRun = NewType("EmptyCanRun", int)
55+
56+
CaveMonitor = reduce_t.CaveMonitor
57+
BunkerMonitor = NewType("BunkerMonitor", int)
6358

59+
RunType = TypeVar("RunType", SampleRun, VanadiumRun, EmptyCanRun)
60+
MonitorType = TypeVar("MonitorType", CaveMonitor, BunkerMonitor)
6461

65-
# 2 Workflow parameters
6662

6763
CalibrationFilename = NewType("CalibrationFilename", str | None)
6864
"""Filename of the instrument calibration file."""
6965

70-
7166
DspacingBins = NewType("DspacingBins", sc.Variable)
7267
"""Bin edges for d-spacing."""
7368

74-
7569
OutFilename = NewType("OutFilename", str)
7670
"""Filename of the output."""
7771

tests/dream/geant4_reduction_test.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
)
2222
from ess.powder.types import (
2323
AccumulatedProtonCharge,
24-
BackgroundRun,
2524
CalibrationFilename,
2625
CaveMonitorPosition,
2726
CIFAuthors,
2827
DistanceResolution,
2928
DspacingBins,
3029
DspacingData,
30+
EmptyCanRun,
3131
EmptyCanSubtractedIofDspacing,
3232
Filename,
3333
FocussedDataDspacing,
@@ -64,10 +64,10 @@
6464
params = {
6565
Filename[SampleRun]: dream.data.simulated_diamond_sample(small=True),
6666
Filename[VanadiumRun]: dream.data.simulated_vanadium_sample(small=True),
67-
Filename[BackgroundRun]: dream.data.simulated_empty_can(small=True),
67+
Filename[EmptyCanRun]: dream.data.simulated_empty_can(small=True),
6868
MonitorFilename[SampleRun]: dream.data.simulated_monitor_diamond_sample(),
6969
MonitorFilename[VanadiumRun]: dream.data.simulated_monitor_vanadium_sample(),
70-
MonitorFilename[BackgroundRun]: dream.data.simulated_monitor_empty_can(),
70+
MonitorFilename[EmptyCanRun]: dream.data.simulated_monitor_empty_can(),
7171
dream.InstrumentConfiguration: dream.beamline.InstrumentConfiguration.high_flux,
7272
CalibrationFilename: None,
7373
UncertaintyBroadcastMode: UncertaintyBroadcastMode.drop,
@@ -122,8 +122,8 @@ def test_pipeline_can_compute_dspacing_result(workflow):
122122

123123

124124
def test_pipeline_can_compute_dspacing_result_without_empty_can(workflow):
125-
workflow[Filename[BackgroundRun]] = None
126-
workflow[MonitorFilename[BackgroundRun]] = None
125+
workflow[Filename[EmptyCanRun]] = None
126+
workflow[MonitorFilename[EmptyCanRun]] = None
127127
workflow = powder.with_pixel_mask_filenames(workflow, [])
128128
result = workflow.compute(IofDspacing[SampleRun])
129129
assert result.sizes == {'dspacing': len(params[DspacingBins]) - 1}
@@ -352,4 +352,4 @@ def test_dream_workflow_parameters_returns_filtered_params():
352352
wf = DreamGeant4ProtonChargeWorkflow()
353353
parameters = reduce_workflow.get_parameters(wf, (DspacingData[SampleRun],))
354354
assert Filename[SampleRun] in parameters
355-
assert Filename[BackgroundRun] not in parameters
355+
assert Filename[EmptyCanRun] not in parameters

0 commit comments

Comments
 (0)