|
|
""" |
|
|
Configuration file for NeuroSAM 3 application. |
|
|
Contains all constants, default values, and configuration settings. |
|
|
""" |
|
|
|
|
|
import os |
|
|
from typing import Optional |
|
|
|
|
|
|
|
|
SAM_MODEL_ID: str = "facebook/sam3" |
|
|
HF_TOKEN: Optional[str] = os.getenv("HF_TOKEN") |
|
|
|
|
|
|
|
|
DEFAULT_THRESHOLD: float = 0.1 |
|
|
DEFAULT_MASK_THRESHOLD: float = 0.0 |
|
|
|
|
|
|
|
|
MIN_THRESHOLD: float = 0.0 |
|
|
MAX_THRESHOLD: float = 1.0 |
|
|
MIN_MASK_THRESHOLD: float = 0.0 |
|
|
MAX_MASK_THRESHOLD: float = 1.0 |
|
|
|
|
|
|
|
|
MAX_FILE_SIZE_MB: int = 500 |
|
|
MAX_FILE_SIZE_BYTES: int = MAX_FILE_SIZE_MB * 1024 * 1024 |
|
|
ALLOWED_IMAGE_EXTENSIONS: tuple = ('.dcm', '.png', '.jpg', '.jpeg', '.tiff', '.tif') |
|
|
ALLOWED_ANNOTATION_EXTENSIONS: tuple = ('.json', '.nii', '.nii.gz') |
|
|
|
|
|
|
|
|
DEMO_DICOM_PATH: str = "demo_brain_mri.dcm" |
|
|
|
|
|
|
|
|
MAX_CACHE_SIZE: int = 100 |
|
|
CACHE_TTL_SECONDS: int = 3600 |
|
|
|
|
|
|
|
|
DEFAULT_COLORMAP: str = "spring" |
|
|
DEFAULT_TRANSPARENCY: float = 0.5 |
|
|
DEFAULT_BRIGHTNESS: float = 1.0 |
|
|
DEFAULT_CONTRAST: float = 1.0 |
|
|
|
|
|
|
|
|
CT_WINDOW_PRESETS: dict = { |
|
|
"Brain (Grey Matter)": {"level": 40, "width": 80}, |
|
|
"Bone (Skull)": {"level": 500, "width": 2000}, |
|
|
"Default": {"level": 40, "width": 400}, |
|
|
} |
|
|
|
|
|
|
|
|
MIN_NUM_MASKS: int = 1 |
|
|
MAX_NUM_MASKS: int = 5 |
|
|
DEFAULT_NUM_MASKS: int = 3 |
|
|
|
|
|
|
|
|
DEFAULT_POINTS_PER_SIDE: int = 32 |
|
|
MIN_POINTS_PER_SIDE: int = 8 |
|
|
MAX_POINTS_PER_SIDE: int = 64 |
|
|
DEFAULT_MIN_MASK_AREA: int = 100 |
|
|
|
|
|
|
|
|
DEFAULT_TARGET_SIZE: int = 1024 |
|
|
MIN_TARGET_SIZE: int = 256 |
|
|
MAX_TARGET_SIZE: int = 2048 |
|
|
DEFAULT_CLAHE_CLIP_LIMIT: float = 2.0 |
|
|
|
|
|
|
|
|
DEFAULT_EDGE_THRESHOLD: float = 0.1 |
|
|
DEFAULT_DILATION_SIZE: int = 3 |
|
|
|
|
|
|
|
|
MAX_COORDINATE_VALUE: int = 10000 |
|
|
|
|
|
|
|
|
GPU_DURATION_SECONDS: int = 60 |
|
|
|
|
|
|
|
|
LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO") |
|
|
LOG_FORMAT: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" |
|
|
LOG_FILE: Optional[str] = os.getenv("LOG_FILE") |
|
|
|
|
|
|
|
|
OUTPUT_DPI: int = 100 |
|
|
OUTPUT_FORMAT: str = "PNG" |
|
|
|
|
|
|
|
|
NIFTI_DEFAULT_NAME: str = "segmentation" |
|
|
|
|
|
|