Source code for est.app.utils.xasobj

import logging
from silx.io.url import DataUrl

from est import settings
from est.io.utils import get_data_from_url
from est.core.types import XASObject
from est.core.io import read_xas
from est.io.utils.information import InputInformation


_logger = logging.getLogger(__name__)


[docs] def get_xas_obj( input_information: InputInformation, timeout=settings.DEFAULT_READ_TIMEOUT ): """load xas object from command line input :param spec_input: tuple of Union[str, None, dict] :param float timeout: read time out (for hdf5 only for now) """ sp, en, conf = read_xas(information=input_information, timeout=timeout) xas_obj = XASObject(spectra=sp, energy=en, configuration=conf) attr_names = "I0", "I1", "I2", "mu_ref" attr_values = ( getattr(input_information, "I0", None), getattr(input_information, "I1", None), getattr(input_information, "I2", None), getattr(input_information, "mu_ref", None), ) for attr_name, attr_value in zip(attr_names, attr_values): if attr_value is not None: if isinstance(attr_value, DataUrl): data = get_data_from_url(attr_value) else: data = attr_value if data.shape[0] > xas_obj.energy.shape[0]: _logger.warning( "energy has less value than dataset. Clip {}.".format(attr_name) ) data = data[: xas_obj.energy.shape[0]] xas_obj.attach_3d_array(attr_name, data) return xas_obj