| """ | |
| 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 | |