"""Sybil model configuration""" from transformers import PretrainedConfig from typing import Optional, List, Dict import json class SybilConfig(PretrainedConfig): """ This is the configuration class to store the configuration of a [`SybilForRiskPrediction`]. It is used to instantiate a Sybil model according to the specified arguments, defining the model architecture. Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Args: hidden_dim (`int`, *optional*, defaults to 512): Dimensionality of the hidden representations. dropout (`float`, *optional*, defaults to 0.0): The dropout probability for all fully connected layers. max_followup (`int`, *optional*, defaults to 6): Maximum number of years for risk prediction. num_images (`int`, *optional*, defaults to 208): Number of CT scan slices to process. img_size (`List[int]`, *optional*, defaults to `[512, 512]`): Size of input images after preprocessing. voxel_spacing (`List[float]`, *optional*, defaults to `[0.703125, 0.703125, 2.5]`): Target voxel spacing for CT scans (row, column, slice thickness). censoring_distribution (`str`, *optional*, defaults to "weibull"): Distribution used for censoring in survival analysis. ensemble_size (`int`, *optional*, defaults to 5): Number of models in the ensemble. calibrator_data (`Dict`, *optional*): Calibration data for risk score adjustment. """ model_type = "sybil" def __init__( self, hidden_dim: int = 512, dropout: float = 0.0, max_followup: int = 6, num_images: int = 208, img_size: List[int] = None, voxel_spacing: List[float] = None, censoring_distribution: str = "weibull", ensemble_size: int = 5, calibrator_data: Optional[Dict] = None, initializer_range: float = 0.02, **kwargs ): super().__init__(**kwargs) self.hidden_dim = hidden_dim self.dropout = dropout self.max_followup = max_followup self.num_images = num_images self.img_size = img_size if img_size is not None else [512, 512] self.voxel_spacing = voxel_spacing if voxel_spacing is not None else [0.703125, 0.703125, 2.5] self.censoring_distribution = censoring_distribution self.ensemble_size = ensemble_size self.calibrator_data = calibrator_data self.initializer_range = initializer_range