zephyrie's picture
Initial commit: NV-Generate Gradio showcase
ab1db83
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Literal, Optional
ModelKey = Literal["ct", "mr", "mr_brain"]
@dataclass
class GenerationRequest:
model: ModelKey
output_size: tuple[int, int, int]
spacing: tuple[float, float, float]
seed: int = 0
num_steps: int = 30
cfg_guidance_scale: float = 0.0
# CT-only
body_region: Optional[list[str]] = None
anatomy_list: Optional[list[str]] = None
generate_masks: bool = True
# MR-only (modality int from configs/modality_mapping.json: 8/9/10/11/...)
modality_class: Optional[int] = None
# MR-Brain-only (mapped to a modality int)
contrast: Optional[str] = None # "T1" / "T2" / "FLAIR" / "SWI" / "T1_skull_stripped" / ...
@dataclass
class GenerationResult:
volume_path: str
mask_path: Optional[str] = None
used_anatomy_labels: dict[int, str] = field(default_factory=dict)
runtime_seconds: float = 0.0
seed: int = 0
modality: Optional[int] = None