Skip to content

Commit 2e50d3b

Browse files
committed
feat: draft sciline domain types
1 parent e3bb2c1 commit 2e50d3b

File tree

2 files changed

+63
-1
lines changed

2 files changed

+63
-1
lines changed

src/ess/estia/calibration.py

+39
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@
66
reduce_from_events_to_q,
77
reduce_from_lz_to_q,
88
)
9+
from ..reflectometry.types import QBins, WavelengthBins
10+
from .types import (
11+
Intensity,
12+
MagneticReference,
13+
MagneticSample,
14+
NonMagneticReference,
15+
OffOff,
16+
OffOn,
17+
OnOff,
18+
OnOn,
19+
PolarizedReflectivityOverQ,
20+
)
921

1022

1123
def solve_for_calibration_parameters(Io, Is):
@@ -157,3 +169,30 @@ def compute_reflectivity_calibrate_on_lz(
157169
sample = [reduce_from_lz_to_q(s, qbins) for s in sample]
158170
I0 = reduce_from_lz_to_q(I0, qbins)
159171
return [i / I0 for i in sample]
172+
173+
174+
def reflectivity_provider(
175+
i000: Intensity[NonMagneticReference, OffOff],
176+
i001: Intensity[NonMagneticReference, OffOn],
177+
i010: Intensity[NonMagneticReference, OnOff],
178+
i011: Intensity[NonMagneticReference, OnOn],
179+
im00: Intensity[MagneticReference, OffOff],
180+
im01: Intensity[MagneticReference, OffOn],
181+
im10: Intensity[MagneticReference, OnOff],
182+
im11: Intensity[MagneticReference, OnOn],
183+
is00: Intensity[MagneticSample, OffOff],
184+
is01: Intensity[MagneticSample, OffOn],
185+
is10: Intensity[MagneticSample, OnOff],
186+
is11: Intensity[MagneticSample, OnOn],
187+
wbins: WavelengthBins,
188+
qbins: QBins,
189+
) -> PolarizedReflectivityOverQ:
190+
return compute_reflectivity_calibrate_on_q(
191+
[i000, i001, i010, i011],
192+
[im00, im01, im10, im11],
193+
[is00, is01, is10, is11],
194+
qbins,
195+
)
196+
197+
198+
providers = (reflectivity_provider,)

src/ess/estia/types.py

+24-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,33 @@
11
# Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
2-
from typing import NewType
2+
from typing import NewType, TypeVar
33

4+
import sciline
45
import scipp as sc
56

67
WavelengthResolution = NewType("WavelengthResolution", sc.Variable)
78
AngularResolution = NewType("AngularResolution", sc.Variable)
89
SampleSizeResolution = NewType("SampleSizeResolution", sc.Variable)
910

1011
CoordTransformationGraph = NewType("CoordTransformationGraph", dict)
12+
13+
OffOff = NewType("OffOff", str)
14+
OffOn = NewType("OffOn", str)
15+
OnOff = NewType("OnOff", str)
16+
OnOn = NewType("OnOn", str)
17+
FlipperSetting = TypeVar("FlipperSetting", OffOff, OffOn, OnOff, OnOn)
18+
19+
MagneticSample = NewType("MagneticSample", str)
20+
MagneticReference = NewType("MagneticReference", str)
21+
NonMagneticReference = NewType("NonMagneticReference", str)
22+
PolarizedRunType = TypeVar(
23+
"PolarizedRunType", MagneticSample, MagneticReference, NonMagneticReference
24+
)
25+
26+
27+
class Intensity(
28+
sciline.ScopeTwoParams[PolarizedRunType, FlipperSetting, sc.DataArray], sc.DataArray
29+
):
30+
"""Intensity distribution"""
31+
32+
33+
PolarizedReflectivityOverQ = NewType("PolarizedReflectivityOverQ", list[sc.DataArray])

0 commit comments

Comments
 (0)