Source code for ess.isissans.io

# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2024 Scipp contributors (https://github.com/scipp)
"""
File loading functions for ISIS data, NOT using Mantid.
"""

from typing import NewType

import sciline
import scipp as sc

from ess.sans.types import (
    BackgroundRun,
    DirectBeam,
    DirectBeamFilename,
    Filename,
    RunType,
    SampleRun,
    TransmissionRun,
)

CalibrationFilename = NewType('CalibrationFilename', str)


[docs] class LoadedFileContents(sciline.Scope[RunType, sc.DataGroup], sc.DataGroup): """Contents of a loaded file."""
[docs] def load_tutorial_run(filename: Filename[RunType]) -> LoadedFileContents[RunType]: return LoadedFileContents[RunType](sc.io.load_hdf5(filename))
[docs] def load_tutorial_direct_beam(filename: DirectBeamFilename) -> DirectBeam: return DirectBeam(sc.io.load_hdf5(filename))
[docs] def transmission_from_sample_run( data: LoadedFileContents[SampleRun], ) -> LoadedFileContents[TransmissionRun[SampleRun]]: """ Use transmission from a sample run, instead of dedicated run. """ return LoadedFileContents[TransmissionRun[SampleRun]](data)
[docs] def transmission_from_background_run( data: LoadedFileContents[BackgroundRun], ) -> LoadedFileContents[TransmissionRun[BackgroundRun]]: """ Use transmission from a background run, instead of dedicated run. """ return LoadedFileContents[TransmissionRun[BackgroundRun]](data)