File size: 3,422 Bytes
e391a84 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | """
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
|