Source code for blissoda.exafs.types

from dataclasses import dataclass
from typing import Any
from typing import Dict
from typing import List
from typing import Optional
from typing import Sequence

import numpy


[docs] @dataclass class XasPlotData: name: str x: numpy.ndarray y: numpy.ndarray xlabel: str ylabel: str info: Dict[str, Any] hlines: Sequence[float] vlines: Sequence[float]
[docs] @dataclass class XasSubscanData: mu: Optional[XasPlotData] = None chi: Optional[XasPlotData] = None ft: Optional[XasPlotData] = None noise: Optional[XasPlotData] = None
[docs] @dataclass class SubScanInfo: legend: str color: str enabled: bool = True updated: bool = False
[docs] @dataclass class ScanInfo: filename: str scan_number: int subscans: List[SubScanInfo] xas_results: List[XasSubscanData] plot_future: Optional[Any] = None split_future: Optional[Any] = None reprocess_all: bool = False multi_xas_scan: bool = False multi_xas_subscan_size: int = 0 @property def scan_url(self) -> str: return f"silx://{self.filename}::/{self.scan_number}.1" @property def min_subscan_index_to_process(self) -> int: if not self.multi_xas_scan or self.reprocess_all or not self.xas_results: return 0 return len(self.xas_results) - 1 @property def job_id(self) -> Optional[str]: if self.future is None: return return self.future.uuid
[docs] @dataclass class ExafsPlotWorkflowParameters: workflow: str energy_name: str energy_unit: str mu_name: str trim_n_points: int = 0 mon_name: Optional[str] = None min_log: bool = False
[docs] @dataclass class ExafsSplitWorkflowParameters: workflow: dict monotonic_channel: str scan_complete: bool trim_n_points: int = 0