Source code for nxtomomill.models.edf2nx.sample_section

from __future__ import annotations

from pydantic import BaseModel, Field, ConfigDict, field_validator
from nxtomomill.models.utils import filter_str_def, convert_str_to_bool


[docs]class SampleSection(BaseModel): model_config = ConfigDict(validate_assignment=True, validate_by_name=True) sample_name: str | None = Field(default=None, description="Name of the sample") force_angle_calculation: bool = Field( default=True, description="Determines the method for obtaining rotation angles." "Options:" "* True: Compute from scan range: Uses `numpy.linspace` to generate rotation angles based on the provided scan range." "* False: Load from `.edf` header: Attempts to read the rotation angles directly from the `.edf` file header.", ) angle_calculation_endpoint: bool = Field( default=False, description="Specifies the endpoint behavior for `numpy.linspace` when calculating rotation angles." "", ) angle_calculation_rev_neg_scan_range: bool = Field( default=True, description="Inverts the rotation angle values when the `ScanRange` is negative.", ) @field_validator( "sample_name", mode="plain", ) @classmethod def cast_to_sample_name(cls, value: str | None) -> str | None: return filter_str_def(value) @field_validator( "angle_calculation_endpoint", "force_angle_calculation", "angle_calculation_rev_neg_scan_range", mode="plain", ) @classmethod def cast_to_bool(cls, value: bool | str) -> bool: return convert_str_to_bool(value)