Source code for est.tests.data

from typing import Tuple

import numpy
from numpy.typing import ArrayLike

from ..resources import resource_path


[docs] def example_spectrum(*args) -> Tuple[ArrayLike, ArrayLike]: if not args: args = "exafs", "EXAFS_Ge.dat" if isinstance(args[0], str): with resource_path(*args) as path: energy, mu, *_ = numpy.loadtxt(path).T else: energy = numpy.linspace(*args) # eV mi, ma = energy.min(), energy.max() edge = mi + (ma - mi) * 0.08 mu = numpy.linspace(0.6, 0.1, energy.size) + (energy > edge).astype(int) return energy, mu
[docs] def example_spectra( *args, shape: Tuple[int] = (0, 1, 1), noise: bool = False, ) -> Tuple[ArrayLike, ArrayLike]: """Replicate a single spectrum to a nD dataset with optional noise addition.""" energy, mu = example_spectrum(*args) nenergy = shape[0] if shape[0]: assert nenergy <= len(energy) energy = energy[:nenergy] mu = mu[:nenergy] else: nenergy = len(energy) mu = mu.reshape((nenergy,) + (1,) * (len(shape) - 1)) tile_repts = (1,) + shape[1:] mu = numpy.tile(mu, tile_repts) if noise: mu += numpy.random.normal(0.0, 0.05, shape) return energy, mu