[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classRescaleIntensityConfig(TorchioTransformConfig,MaskingMethodConfig):""" Config class for :py:class:`torchio.transforms.RescaleIntensity`. A function for ``masking_method`` is not supported currently. """out_min_max:Union[NonNegativeFloat,Tuple[float,float]]=RESCALE_INTENSITY_TORCHIO_DEFAULTS["out_min_max"]percentiles:Union[NonNegativeFloat,Tuple[NonNegativeFloat,NonNegativeFloat]]=RESCALE_INTENSITY_TORCHIO_DEFAULTS["percentiles"]masking_method:Optional[Union[str,AnatomicalLabel,Bounds]]=RESCALE_INTENSITY_TORCHIO_DEFAULTS["masking_method"]in_min_max:Optional[Union[NonNegativeFloat,Tuple[float,float]]]=RESCALE_INTENSITY_TORCHIO_DEFAULTS["in_min_max"]@field_validator("out_min_max","percentiles","in_min_max",mode="after")@classmethoddefvalidator_ranges(cls,v,field):"""Validates the ranges of uniform distributions."""field_name=field.field_nameifisinstance(v,tuple):cls._check_spatial_tuple(v,field_name)returnv@field_validator("percentiles",mode="after")@classmethoddefvalidator_percentiles(cls,v):"""Checks that percentiles are between 0 and 100."""ifisinstance(v,float):cls._check_percentile(v)elifisinstance(v,tuple):cls._check_percentile(v[0])cls._check_percentile(v[1])returnv@staticmethoddef_check_percentile(percentile:float)->None:"""Checks a single percentile."""ifnot(0<=percentile<=100):raiseValueError(f"'percentiles' must contain values between 0 and 100. Got {percentile}")
[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classZNormalizationConfig(TorchioTransformConfig,MaskingMethodConfig):""" Config class for :py:class:`torchio.transforms.ZNormalization`. A function for ``masking_method`` is not supported currently. """masking_method:Optional[Union[str,AnatomicalLabel,Bounds]]=Z_NORMALIZATION_TORCHIO_DEFAULTS["masking_method"]
[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classMaskConfig(TorchioTransformConfig,MaskingMethodConfig):""" Config class for :py:class:`torchio.transforms.Mask`. """masking_method:Optional[Union[str,AnatomicalLabel,Bounds]]outside_value:float=MASK_TORCHIO_DEFAULTS["outside_value"]labels:Optional[Tuple[int,...]]=MASK_TORCHIO_DEFAULTS["labels"]
[docs]@add_suffix_to_doc(DOCUMENT_EXTRA_PARAMETERS)classClampConfig(TorchioTransformConfig):""" Config class for :py:class:`torchio.transforms.Clamp`. """out_min:Optional[float]=CLAMP_TORCHIO_DEFAULTS["out_min"]out_max:Optional[float]=CLAMP_TORCHIO_DEFAULTS["out_max"]@model_validator(mode="after")defvalidate_min_max(self):"""Checks consistency between 'out_min' and 'out_max'."""ifself.out_minisNoneandself.out_maxisNone:raiseValueError("'out_min' and 'out_max' cannot both be None.")elifself.out_minandself.out_maxandself.out_min>self.out_max:raiseValueError(f"'out_min' should be smaller than 'out_max'. Got out_min={self.out_min} and out_max={self.out_max}")returnself