Source code for est.io.utils.information

from typing import Optional
from silx.io.url import DataUrl
from est.units import as_energy_unit
from est.core.types import dimensions as dimensions_mod
from est.units import ur


[docs] class InputInformation: """ Utils class to store input information """ def __init__( self, spectra_url=None, channel_url=None, config_url=None, dimensions: Optional[dimensions_mod.DimensionsType] = None, energy_unit=ur.eV, ): # main information self.__spectra_url = None self.__channel_url = None self.__dimensions = None self.__energy_unit = None # "fancy information" self.__I0_url = None self.__I1_url = None self.__I2_url = None self.__mu_ref_url = None self.spectra_url = spectra_url self.channel_url = channel_url self.config_url = config_url self.dimensions = dimensions_mod.parse_dimensions(dimensions) self.energy_unit = energy_unit @property def spectra_url(self) -> Optional[DataUrl]: return self.__spectra_url @spectra_url.setter def spectra_url(self, url: Optional[DataUrl]): self.__spectra_url = url @property def channel_url(self) -> Optional[DataUrl]: return self.__channel_url @channel_url.setter def channel_url(self, url: Optional[DataUrl]): self.__channel_url = url @property def dimensions(self) -> tuple: return self.__dimensions @dimensions.setter def dimensions(self, dims: tuple): self.__dimensions = dims @property def energy_unit(self) -> Optional[DataUrl]: return self.__energy_unit @energy_unit.setter def energy_unit(self, unit: Optional[DataUrl]): self.__energy_unit = unit @property def I0_url(self) -> Optional[DataUrl]: return self.__I0_url @I0_url.setter def I0_url(self, url: Optional[DataUrl]): self.__I0_url = url @property def I1_url(self) -> Optional[DataUrl]: return self.__I1_url @I1_url.setter def I1_url(self, url: Optional[DataUrl]): self.__I1_url = url @property def I2_url(self) -> Optional[DataUrl]: return self.__I2_url @I2_url.setter def I2_url(self, url: Optional[DataUrl]): self.__I2_url = url @property def mu_ref_url(self) -> Optional[DataUrl]: return self.__mu_ref_url @mu_ref_url.setter def mu_ref_url(self, url: Optional[DataUrl]): self.__mu_ref_url = url @property def scan_title_url(self) -> Optional[DataUrl]: return self._scan_title_url @scan_title_url.setter def scan_title_url(self, url: Optional[DataUrl]): self._scan_title_url = url
[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), "config_url": dump_url(self.config_url), "dimensions": self.dimensions, "energy_unit": str(self.energy_unit), "I0_url": dump_url(self.I0_url), "I1_url": dump_url(self.I1_url), "I2_url": dump_url(self.I2_url), "mu_ref_url": dump_url(self.mu_ref_url), }
[docs] @staticmethod def from_dict(ddict: dict): spectra_url = ddict.get("spectra_url", None) channel_url = ddict.get("channel_url", None) dimensions = ddict.get("dimensions", None) config_url = ddict.get("config_url", None) energy_unit = ddict.get("energy_unit", None) def load_url(url): if url in (None, ""): return None else: return DataUrl(path=url) info = InputInformation( spectra_url=load_url(spectra_url), channel_url=load_url(channel_url), dimensions=dimensions, config_url=load_url(config_url), energy_unit=as_energy_unit(energy_unit), ) I0_url = ddict.get("I0_url", None) I1_url = ddict.get("I1_url", None) I2_url = ddict.get("I2_url", None) mu_ref_url = ddict.get("mu_ref_url", None) info.I0_url = I0_url info.I1_url = I1_url info.I2_url = I2_url info.mu_ref_url = mu_ref_url return info