Skip to content

Commit 05691f1

Browse files
committed
Construct OrsoExperiment from generic workflow
1 parent 2df60c2 commit 05691f1

File tree

3 files changed

+35
-14
lines changed

3 files changed

+35
-14
lines changed

src/ess/amor/load.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,24 @@
33
import scipp as sc
44
import scippnexus as snx
55

6+
from ess.reduce.nexus import workflow as nexus_workflow
7+
from ess.reduce.nexus.types import NeXusFileSpec
8+
69
from ..reflectometry.load import load_nx
710
from ..reflectometry.types import (
11+
Beamline,
812
BeamSize,
913
DetectorData,
1014
DetectorRotation,
1115
Filename,
16+
Measurement,
1217
NeXusComponent,
1318
NeXusDetectorName,
1419
ProtonCurrent,
1520
RawSampleRotation,
1621
RunType,
1722
SampleRotation,
23+
SampleRun,
1824
SampleSize,
1925
)
2026
from .geometry import pixel_coordinates_in_detector_system
@@ -127,6 +133,18 @@ def load_amor_proton_current(
127133
return pc
128134

129135

136+
def load_beamline_metadata(filename: Filename[SampleRun]) -> Beamline:
137+
return nexus_workflow.load_beamline_metadata_from_nexus(
138+
NeXusFileSpec[SampleRun](filename)
139+
)
140+
141+
142+
def load_measurement_metadata(filename: Filename[SampleRun]) -> Measurement:
143+
return nexus_workflow.load_measurement_metadata_from_nexus(
144+
NeXusFileSpec[SampleRun](filename)
145+
)
146+
147+
130148
providers = (
131149
load_detector,
132150
load_events,
@@ -138,4 +156,6 @@ def load_amor_proton_current(
138156
load_amor_detector_rotation,
139157
load_amor_proton_current,
140158
amor_chopper,
159+
load_beamline_metadata,
160+
load_measurement_metadata,
141161
)

src/ess/reflectometry/orso.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@
1313

1414
import numpy as np
1515
import scipp as sc
16-
from dateutil.parser import parse as parse_datetime
1716
from orsopy.fileio import base as orso_base
1817
from orsopy.fileio import data_source, orso, reduction
1918
from orsopy.fileio.orso import Column, Orso, OrsoDataset
2019

2120
from .load import load_nx
2221
from .types import (
22+
Beamline,
2323
Filename,
24+
Measurement,
2425
ReducibleData,
2526
ReferenceRun,
2627
ReflectivityOverQ,
@@ -60,21 +61,18 @@
6061
OrsoCorrectionList = NewType("OrsoCorrectionList", list[str])
6162

6263

63-
def parse_orso_experiment(filename: Filename[SampleRun]) -> OrsoExperiment:
64+
def parse_orso_experiment(
65+
beamline: Beamline, measurement: Measurement
66+
) -> OrsoExperiment:
6467
"""Parse ORSO experiment metadata from raw NeXus data."""
65-
title, instrument_name, facility, start_time = load_nx(
66-
filename,
67-
"NXentry/title",
68-
"NXentry/NXinstrument/name",
69-
"NXentry/facility",
70-
"NXentry/start_time",
71-
)
7268
return OrsoExperiment(
7369
data_source.Experiment(
74-
title=title,
75-
instrument=instrument_name,
76-
facility=facility,
77-
start_date=parse_datetime(start_time),
70+
instrument=beamline.name,
71+
facility=beamline.facility,
72+
title=measurement.title,
73+
start_date=measurement.start_time,
74+
proposalID=measurement.experiment_id,
75+
doi=measurement.experiment_doi,
7876
probe="neutron",
7977
)
8078
)
@@ -101,7 +99,7 @@ def parse_orso_sample(filename: Filename[SampleRun]) -> OrsoSample:
10199
data_source.Sample(
102100
name=sample["name"],
103101
model=data_source.SampleModel(
104-
stack=sample["model"],
102+
stack=sample.get("model", ""),
105103
),
106104
)
107105
)

src/ess/reflectometry/types.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,20 @@
44

55
import sciline
66
import scipp as sc
7+
78
from ess.reduce.nexus import types as reduce_t
89

910
SampleRun = reduce_t.SampleRun
1011
# `VanadiumRun` is not the best name, see https://github.com/scipp/essreduce/issues/238
1112
ReferenceRun = reduce_t.VanadiumRun
1213
RunType = TypeVar("RunType", ReferenceRun, SampleRun)
1314

15+
Beamline = reduce_t.Beamline
1416
CalibratedDetector = reduce_t.CalibratedDetector
1517
DetectorData = reduce_t.DetectorData
1618
DetectorPositionOffset = reduce_t.DetectorPositionOffset
1719
Filename = reduce_t.Filename
20+
Measurement = reduce_t.Measurement
1821
NeXusComponent = reduce_t.NeXusComponent
1922
NeXusDetectorName = reduce_t.NeXusDetectorName
2023
Position = reduce_t.Position

0 commit comments

Comments
 (0)