Initial commit - BraceIQMed platform with frontend, API, and brace generator
This commit is contained in:
58
brace-generator/config.py
Normal file
58
brace-generator/config.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""
|
||||
Server configuration for Brace Generator API.
|
||||
"""
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class Config:
|
||||
"""Server configuration loaded from environment variables."""
|
||||
|
||||
# Server settings (DEV uses port 8001)
|
||||
HOST: str = os.getenv("HOST", "0.0.0.0")
|
||||
PORT: int = int(os.getenv("PORT", "8001"))
|
||||
DEBUG: bool = os.getenv("DEBUG", "true").lower() == "true"
|
||||
|
||||
# Model settings
|
||||
DEVICE: str = os.getenv("DEVICE", "cuda") # 'cuda' or 'cpu'
|
||||
MODEL: str = os.getenv("MODEL", "scoliovis") # 'scoliovis' or 'vertebra-landmark'
|
||||
|
||||
# Paths
|
||||
BASE_DIR: Path = Path(__file__).parent.parent
|
||||
TEMPLATES_DIR: Path = BASE_DIR / "rigoBrace(2)"
|
||||
WEIGHTS_DIR: Path = BASE_DIR.parent / "scoliovis-api" / "models"
|
||||
|
||||
# TEMP_DIR: Use system temp on Windows, /tmp on Linux
|
||||
@staticmethod
|
||||
def _get_temp_dir() -> Path:
|
||||
env_temp = os.getenv("TEMP_DIR")
|
||||
if env_temp:
|
||||
return Path(env_temp)
|
||||
# Use system temp directory (works on both Windows and Linux)
|
||||
import tempfile
|
||||
return Path(tempfile.gettempdir()) / "brace_generator"
|
||||
|
||||
TEMP_DIR: Path = _get_temp_dir()
|
||||
|
||||
# CORS
|
||||
CORS_ORIGINS: list = os.getenv("CORS_ORIGINS", "*").split(",")
|
||||
|
||||
# Request limits
|
||||
MAX_IMAGE_SIZE_MB: int = int(os.getenv("MAX_IMAGE_SIZE_MB", "50"))
|
||||
REQUEST_TIMEOUT_SECONDS: int = int(os.getenv("REQUEST_TIMEOUT_SECONDS", "120"))
|
||||
|
||||
@classmethod
|
||||
def ensure_dirs(cls):
|
||||
"""Create necessary directories."""
|
||||
cls.TEMP_DIR.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
@classmethod
|
||||
def get_device(cls) -> str:
|
||||
"""Get device, falling back to CPU if CUDA unavailable."""
|
||||
import torch
|
||||
if cls.DEVICE == "cuda" and torch.cuda.is_available():
|
||||
return "cuda"
|
||||
return "cpu"
|
||||
|
||||
|
||||
config = Config()
|
||||
Reference in New Issue
Block a user