Source code for est.core.io.information

from typing import Optional

from silx.io.url import DataUrl

from ..types.dimensions import DimensionsType
from ..types.dimensions import parse_dimensions
from ..units import as_energy_unit
from ..units import ur


[docs] class InputInformation: """ Utility class to store information to generate XASObject """ def __init__( self, spectra_url: Optional[None] = None, # mu (numerator) channel_url: Optional[None] = None, # energy dimensions: Optional[DimensionsType] = None, energy_unit=ur.eV, # units of channel_url mu_ref_url: Optional[None] = None, # mu (denominator) min_log: bool = False, # -ln(numerator/denominator) is_concatenated: bool = False, trim_concatenated_n_points: int = 0, skip_concatenated_n_spectra: int = 0, concatenated_spectra_section_size: int = 0, ): self.spectra_url = spectra_url self.channel_url = channel_url self.dimensions = parse_dimensions(dimensions) self.energy_unit = energy_unit self.mu_ref_url = mu_ref_url self.min_log = min_log self.is_concatenated = is_concatenated self.trim_concatenated_n_points = trim_concatenated_n_points self.skip_concatenated_n_spectra = skip_concatenated_n_spectra self.concatenated_spectra_section_size = concatenated_spectra_section_size
[docs] def to_dict(self) -> dict: def dump_url(url): if url in (None, ""): return None else: return url.path() return { "spectra_url": dump_url(self.spectra_url), "channel_url": dump_url(self.channel_url), "dimensions": self.dimensions, "energy_unit": str(self.energy_unit), "mu_ref_url": dump_url(self.mu_ref_url), "min_log": self.min_log, "is_concatenated": self.is_concatenated, "trim_concatenated_n_points": self.trim_concatenated_n_points, "skip_concatenated_n_spectra": self.skip_concatenated_n_spectra, "concatenated_spectra_section_size": self.concatenated_spectra_section_size, }
[docs] @staticmethod def from_dict(ddict: dict): def load_url(url_name: str): url = ddict.get(url_name, None) if url in (None, ""): return None else: return DataUrl(path=url) return InputInformation( spectra_url=load_url("spectra_url"), channel_url=load_url("channel_url"), dimensions=ddict.get("dimensions", None), energy_unit=as_energy_unit(ddict.get("energy_unit", None)), mu_ref_url=load_url("mu_ref_url"), min_log=ddict.get("min_log", False), is_concatenated=ddict.get("is_concatenated", False), trim_concatenated_n_points=ddict.get("trim_concatenated_n_points", 0), skip_concatenated_n_spectra=ddict.get("skip_concatenated_n_spectra", 0), concatenated_spectra_section_size=ddict.get( "concatenated_spectra_section_size", 0 ), )