LIBRE / src /shared /constants.py
RyZ
feat: adding full working local ETL Pipeline
e391a84
Raw
History Blame Contribute Delete
3.42 kB
"""
shared/constants.py
───────────────────
Named constants used across the entire codebase.
Centralised here to eliminate magic numbers and strings.
"""
from __future__ import annotations
# ── PPG Signal Processing ─────────────────────────────────────────────────────
PPG_BANDPASS_LOW: float = 0.5 # Lower cut-off frequency (Hz)
PPG_BANDPASS_HIGH: float = 8.0 # Upper cut-off frequency (Hz)
PPG_FILTER_ORDER: int = 4 # Butterworth filter order
PPG_SEGMENT_DURATION_SEC: int = 8 # Window size for segmentation (seconds)
PPG_MIN_SAMPLING_RATE: float = 25.0 # Minimum acceptable sampling rate (Hz)
PPG_MAX_SAMPLING_RATE: float = 1000.0 # Maximum acceptable sampling rate (Hz)
PPG_MIN_DURATION_SEC: float = 1.0 # Minimum signal duration (seconds)
PPG_MAX_DURATION_SEC: float = 3600.0 # Maximum signal duration (seconds)
# ── Blood Pressure Thresholds ─────────────────────────────────────────────────
BP_SBP_MIN: float = 60.0 # Minimum valid systolic BP (mmHg)
BP_SBP_MAX: float = 260.0 # Maximum valid systolic BP (mmHg)
BP_DBP_MIN: float = 30.0 # Minimum valid diastolic BP (mmHg)
BP_DBP_MAX: float = 160.0 # Maximum valid diastolic BP (mmHg)
# ── Message Queue ─────────────────────────────────────────────────────────────
PPG_QUEUE_NAME: str = "ppg_queue"
PPG_EXCHANGE_NAME: str = "ppg_exchange"
PPG_ROUTING_KEY: str = "ppg.raw"
MESSAGE_PREFETCH_COUNT: int = 1 # Consumer prefetch (process one at a time)
# ── Database ──────────────────────────────────────────────────────────────────
RAW_PPG_TABLE_NAME: str = "raw_ppg"
PREDICTIONS_TABLE_NAME: str = "predictions"
# ── API ───────────────────────────────────────────────────────────────────────
API_V1_PREFIX: str = "/api/v1"
DEFAULT_PAGINATION_LIMIT: int = 50
MAX_PAGINATION_LIMIT: int = 500
# ── Inference ─────────────────────────────────────────────────────────────────
MODEL_VERSION_MOCK: str = "mock-v1.0"
MODEL_VERSION_GAN_VGTLNET: str = "gan-vgtlnet-v1.0"
# ── CardioGAN Constants ───────────────────────────────────────────────────────
CARDIOGAN_ORIG_FS: int = 125
CARDIOGAN_TARGET_FS: int = 128
CARDIOGAN_WINDOW_SEC: int = 4
CARDIOGAN_WINDOW_SAMPLES: int = 512 # TARGET_FS * WINDOW_SEC
CARDIOGAN_OVERLAP: float = 0.10
# ── VGTL-Net Constants ────────────────────────────────────────────────────────
VGTLNET_SAMPLING_RATE: int = 125
VGTLNET_WINDOW_SIZE: int = 224