Source code for nxtomomill.models.h52nx.multitomo_section
from __future__ import annotations
from pydantic import BaseModel, Field, field_validator, ConfigDict
[docs]class MultiTomoSection(BaseModel):
model_config: ConfigDict = ConfigDict(
validate_assignment=True, validate_by_name=True
)
start_angle_offset_in_degree: float | None = Field(
default=None, description="Start angle offset in degree."
)
n_nxtomo: int = Field(default=-1, description="Number of NXtomo to create.")
angle_interval_in_degree: int = Field(
default=360, description="Angle interval to create."
)
shift_angles: bool = Field(
default=False, description="Shift all angle NXtomo angle."
)
@field_validator(
"start_angle_offset_in_degree",
mode="plain",
)
@classmethod
def cast_multi_tomo_section_to_float(cls, value: str) -> float | None:
if value in (None, "None", ""):
return None
return float(value)
# field aliases
@property
def multitomo_start_angle_offset(self):
return self.start_angle_offset_in_degree
@multitomo_start_angle_offset.setter
def multitomo_start_angle_offset(self, value):
self.start_angle_offset_in_degree = value
@property
def multitomo_scan_range(self):
return self.angle_interval_in_degree
@multitomo_scan_range.setter
def multitomo_scan_range(self, value):
self.angle_interval_in_degree = value
@property
def multitomo_shift_angles(self):
return self.shift_angles
@multitomo_shift_angles.setter
def multitomo_shift_angles(self, value):
self.shift_angles = value
@property
def multitomo_n_nxtomo(self):
return self.n_nxtomo
@multitomo_n_nxtomo.setter
def multitomo_n_nxtomo(self, value):
self.n_nxtomo = value