Skip to content

Commit 59cdc6f

Browse files
committed
Support older scipp versions
1 parent d608563 commit 59cdc6f

File tree

5 files changed

+50
-10
lines changed

5 files changed

+50
-10
lines changed

src/ess/_migration.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# SPDX-License-Identifier: BSD-3-Clause
2+
# Copyright (c) 2023 Scipp contributors (https://github.com/scipp)
3+
4+
from typing import MutableMapping
5+
6+
import scipp as sc
7+
8+
9+
def get_attrs(da: sc.DataArray) -> MutableMapping[str, sc.Variable]:
10+
try:
11+
# During deprecation phase
12+
return da.deprecated_attrs
13+
except AttributeError:
14+
try:
15+
# Before deprecation phase
16+
return da.attrs
17+
except AttributeError:
18+
# After deprecation phase / removal of attrs
19+
return da.coords
20+
21+
22+
def get_meta(da: sc.DataArray) -> MutableMapping[str, sc.Variable]:
23+
try:
24+
# During deprecation phase
25+
return da.deprecated_meta
26+
except AttributeError:
27+
try:
28+
# Before deprecation phase
29+
return da.meta
30+
except AttributeError:
31+
# After deprecation phase / removal of attrs
32+
return da.coords

src/ess/diffraction/powder/conversions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import scipp as sc
1111

12+
from ..._migration import get_attrs
1213
from ...logging import get_logger
1314
from .corrections import merge_calibration
1415

@@ -153,7 +154,7 @@ def to_dspacing_with_calibration(
153154
# should be able to remove this.
154155
for key in ('difc', 'difa', 'tzero'):
155156
if key not in out.coords:
156-
out.coords[key] = out.deprecated_attrs.pop(key)
157+
out.coords[key] = get_attrs(out).pop(key)
157158

158159
out = out.transform_coords('dspacing', graph=graph, keep_intermediate=False)
159160
out.coords.pop('_tag_positions_consumed', None)

src/ess/sans/beam_center_finder.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import numpy as np
77
import scipp as sc
88

9+
from .._migration import get_meta
910
from ..logging import get_logger
1011
from . import i_of_q
1112
from .common import gravity_vector
@@ -28,9 +29,9 @@ def center_of_mass(data: sc.DataArray) -> sc.Variable:
2829
:
2930
The position of the center-of-mass, as a vector.
3031
"""
31-
summed = data.sum(list(set(data.dims) - set(data.deprecated_meta['position'].dims)))
32+
summed = data.sum(list(set(data.dims) - set(get_meta(data)['position'].dims)))
3233
v = sc.values(summed.data)
33-
return sc.sum(summed.deprecated_meta['position'] * v) / v.sum()
34+
return sc.sum(get_meta(summed)['position'] * v) / v.sum()
3435

3536

3637
def _offsets_to_vector(data: sc.DataArray, xy: List[float], graph: dict) -> sc.Variable:
@@ -339,7 +340,7 @@ def beam_center(
339340
This is what is now implemented in this version of the algorithm.
340341
""" # noqa: E501
341342
logger = get_logger('sans')
342-
if 'gravity' not in data.deprecated_meta:
343+
if 'gravity' not in get_meta(data):
343344
data = data.copy(deep=False)
344345
data.coords['gravity'] = gravity_vector()
345346
# Use center of mass to get initial guess for beam center

src/ess/sans/i_of_q.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import scipp as sc
77
from scipp.scipy.interpolate import interp1d
88

9+
from .._migration import get_meta
910
from ..logging import get_logger
1011
from . import conversions, normalization
1112
from .common import gravity_vector, mask_range
@@ -160,7 +161,7 @@ def convert_to_q_and_merge_spectra(
160161
:
161162
The input data converted to Q and then summed over all detector pixels.
162163
"""
163-
if gravity and ('gravity' not in data.deprecated_meta):
164+
if gravity and ('gravity' not in get_meta(data)):
164165
data = data.copy(deep=False)
165166
data.coords["gravity"] = gravity_vector()
166167

@@ -329,7 +330,7 @@ def to_I_of_Q(
329330
# Insert a copy of coords needed for conversion to Q.
330331
# TODO: can this be avoided by copying the Q coords from the converted numerator?
331332
for coord in ['position', 'sample_position', 'source_position']:
332-
denominator.coords[coord] = data.deprecated_meta[coord]
333+
denominator.coords[coord] = get_meta(data)[coord]
333334

334335
# In the case where no wavelength bands are requested, we create a single wavelength
335336
# band to make sure we select the correct wavelength range that corresponds to

src/ess/wfm/stitch.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import scipp as sc
66

7+
from .._migration import get_attrs
8+
79

810
def _stitch_dense_data(
911
item: sc.DataArray,
@@ -47,10 +49,13 @@ def _stitch_dense_data(
4749
),
4850
coords={new_dim: new_coord},
4951
)
50-
for group in ["coords", "deprecated_attrs"]:
51-
for key in getattr(item, group):
52-
if key != dim:
53-
getattr(out, group)[key] = getattr(item, group)[key].copy()
52+
53+
for key in item.coords:
54+
if key != dim:
55+
out.coords[key] = item.coords[key].copy()
56+
for key in get_attrs(item):
57+
if key != dim:
58+
get_attrs(out)[key] = get_attrs(item)[key].copy()
5459

5560
for i in range(frames.sizes["frame"]):
5661
section = item[

0 commit comments

Comments
 (0)