Source code for ess.beer.data

# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
"""Data for tests and documentation with BEER."""

import scipp as sc

_version = "1"

__all__ = ["mcstas_duplex", "mcstas_silicon_medium_resolution"]


def _make_pooch():
    import pooch

    return pooch.create(
        path=pooch.os_cache("ess/beer"),
        env="ESS_DATA_DIR",
        base_url="https://public.esss.dk/groups/scipp/ess/beer/{version}/",
        version=_version,
        retry_if_failed=3,
        registry={
            "duplex-mode07.h5": "md5:e8d44197e4bc6a84ab9265bfabd96efe",
            "duplex-mode08.h5": "md5:7cd2cf86d5d98fe07097ff98b250ba9b",
            "duplex-mode09.h5": "md5:ebb3f9694ffdd0949f342bd0deaaf627",
            "duplex-mode10.h5": "md5:559e7fc0cce265f5102520e382ee5b26",
            "duplex-mode16.h5": "md5:2ccd05832bbc8a087a731b37364b995d",
            "silicon-mode09.h5": "md5:aa068d46dc7efc303b68a13e527e2607",
            "mccode_quartz_mode10.h5": "md5:fd6ea529cad7cefdcb57bf57bc27668c",
            "mccode_quartz_mode16.h5": "md5:b9bef04bd6e4c60a8a0d55d4d6ebb89f",
            "mccode_quartz_mode7.h5": "md5:24c7006336f58c26689abec1645cfba1",
            "mccode_quartz_mode8.h5": "md5:9a4606ce56a6397d05d70246d54407d6",
            "mccode_quartz_mode9.h5": "md5:1394df47287ecd62bfa62c200203f214",
            "silicon-dhkl.tab": "md5:90bedceb23245b045ce1ed0170c1313b",
            "duplex-dhkl.tab": "md5:b4c6c2fcd66466ad291f306b2d6b346e",
            "dhkl_quartz_nc.tab": "md5:40887d736e3acf859e44488bfd9a9213",
        },
    )


_pooch = _make_pooch()


[docs] def mcstas_duplex(mode: int) -> str: """ Simulated intensity from duplex sample with ``mode`` chopper configuration. """ return _pooch.fetch(f'duplex-mode{mode:02}.h5')
[docs] def mcstas_quartz(mode: int) -> str: """ Simulated intensity from quartz sample with ``mode`` chopper configuration. """ return _pooch.fetch(f'mccode_quartz_mode{mode}.h5')
[docs] def mcstas_silicon_medium_resolution() -> str: """ Simulated intensity from silicon sample with medium resolution chopper configuration. """ return _pooch.fetch('silicon-mode09.h5')
[docs] def duplex_peaks() -> str: return _pooch.fetch('duplex-dhkl.tab')
[docs] def quartz_peaks() -> str: return _pooch.fetch('dhkl_quartz_nc.tab')
[docs] def silicon_peaks() -> str: return _pooch.fetch('silicon-dhkl.tab')
def _read_peak_file_to_dataarray(name: str): with open(name) as f: return sc.array( dims='d', values=sorted([float(x) for x in f.read().split('\n') if x != '']), unit='angstrom', )
[docs] def duplex_peaks_array() -> sc.Variable: return _read_peak_file_to_dataarray(duplex_peaks())
[docs] def silicon_peaks_array() -> sc.Variable: return _read_peak_file_to_dataarray(silicon_peaks())
[docs] def quartz_peaks_array() -> sc.Variable: return _read_peak_file_to_dataarray(quartz_peaks())