Source code for nxtomomill.models.h52nx.extra_params_section

from __future__ import annotations

from pydantic import BaseModel, Field, field_validator, ConfigDict


[docs]class ExtraParamsSection(BaseModel): model_config = ConfigDict(validate_assignment=True, validate_by_name=True) energy_kev: float | None = Field(default=None, description="Energy in keV") x_sample_pixel_size_m: float | None = Field( default=None, description="X sample pixel size in meters" ) y_sample_pixel_size_m: float | None = Field( default=None, description="Y sample pixel size in meters" ) x_detector_pixel_size_m: float | None = Field( default=None, description="X detector pixel size in meters" ) y_detector_pixel_size_m: float | None = Field( default=None, description="Y detector pixel size in meters" ) detector_sample_distance_m: float | None = Field( default=None, description="Detector sample distance in meters" ) source_sample_distance_m: float | None = Field( default=None, description="Source sample distance in meters" ) @field_validator( "energy_kev", "x_sample_pixel_size_m", "y_sample_pixel_size_m", "x_detector_pixel_size_m", "y_detector_pixel_size_m", "detector_sample_distance_m", "source_sample_distance_m", mode="plain", ) @classmethod def cast_extra_params_to_scalar_value_or_None(cls, value: str) -> float | None: if value in ("", None, "None"): return None else: return float(value)