OSF-Base / config.py
ztshuaiUCLA's picture
Upload folder using huggingface_hub
8f8716a verified
"""
Configuration constants for sleep data processing.
Contains dataset names, paths, channel definitions, and event labels.
"""
import pandas as pd
import numpy as np
# =============================================================================
# Dataset name constants
# =============================================================================
SHHS = 'shhs'
CHAT = 'chat'
MROS = 'mros'
CCSHS = 'ccshs'
CFS = 'cfs'
MESA = 'mesa'
SOF = 'sof'
WSC = 'wsc'
HSP = 'hsp'
NCHSDB = 'nchsdb'
STAGES = 'stages'
PATS = 'pats'
SHHS2 = 'shhs2'
NUMOM2B = 'numom2b'
# =============================================================================
# Data paths
# =============================================================================
META_PATH = '/path/to/your/nsrr/data'
MASTER_SHHS = [META_PATH + "/" + SHHS + "/datasets/shhs-harmonized-dataset-0.21.0.csv"]
MASTER_CHAT = [META_PATH + "/" + CHAT + "/datasets/chat-harmonized-dataset-0.14.0.csv"]
MASTER_MROS = [META_PATH + "/" + MROS + "/datasets/mros-visit1-harmonized-0.6.0.csv"]
MASTER_CCSHS = [META_PATH + "/" + CCSHS + "/datasets/ccshs-trec-harmonized-0.8.0.csv"]
MASTER_CFS = [META_PATH + "/" + CFS + "/datasets/cfs-visit5-harmonized-dataset-0.7.0.csv"]
MASTER_MESA = [META_PATH + "/" + MESA + "/datasets/mesa-sleep-harmonized-dataset-0.7.0.csv"]
MASTER_SOF = [META_PATH + "/" + SOF + "/datasets/sof-visit-8-harmonized-dataset-0.8.0.csv"]
MASTER_WSC = [META_PATH + "/" + WSC + "/datasets/wsc-harmonized-dataset-0.7.0.csv"]
MASTER_HSP = [
META_PATH + "/" + HSP + "/psg-metadata/I0001_psg_metadata_2025-05-06.csv",
META_PATH + "/" + HSP + "/psg-metadata/I0002_psg_metadata_2025-05-06.csv",
META_PATH + "/" + HSP + "/psg-metadata/I0003_psg_metadata_2025-05-06.csv",
META_PATH + "/" + HSP + "/psg-metadata/I0004_psg_metadata_2025-05-06.csv",
META_PATH + "/" + HSP + "/psg-metadata/I0006_psg_metadata_2025-05-06.csv",
]
MASTER_STAGES = [META_PATH + "/" + STAGES + "/metadata/stages-harmonized-dataset-0.3.0.csv"]
MASTER_NCHSDB = [META_PATH + "/" + NCHSDB + "/datasets/nchsdb-dataset-harmonized-0.3.0.csv"]
MASTER_PATS = [META_PATH + "/" + PATS + "/datasets/pats-harmonized-dataset-0.1.0.csv"]
MASTER_CSV_LIST = {
'shhs': MASTER_SHHS,
'chat': MASTER_CHAT,
'mros': MASTER_MROS,
'ccshs': MASTER_CCSHS,
'cfs': MASTER_CFS,
'mesa': MASTER_MESA,
'sof': MASTER_SOF,
'wsc': MASTER_WSC,
'hsp': MASTER_HSP,
'stages': MASTER_STAGES,
'pats': MASTER_PATS,
'nchsdb': MASTER_NCHSDB,
}
# =============================================================================
# Channel name constants
# =============================================================================
# ECG channels
ECG = 'ECG'
ECG1 = 'ECG1'
ECG2 = 'ECG2'
ECG3 = 'ECG3'
HR = 'HR'
PPG = 'PPG'
# Respiratory channels
SPO2 = 'SPO2'
OX = 'OX'
ABD = 'ABD'
THX = 'THX'
AF = 'AF'
NP = 'NP'
SN = 'SN'
# EOG channels
EOG_L = 'EOG_L'
EOG_R = 'EOG_R'
EOG_E1_A2 = 'EOG_E1_A2'
EOG_E2_A1 = 'EOG_E2_A1'
# EMG Leg channels
EMG_LLeg = 'EMG_LLeg'
EMG_RLeg = 'EMG_RLeg'
EMG_LLeg1 = 'EMG_LLeg1'
EMG_LLeg2 = 'EMG_LLeg2'
EMG_RLeg1 = 'EMG_RLeg1'
EMG_RLeg2 = 'EMG_RLeg2'
EMG_Leg = 'EMG_Leg'
# Sensor Leg channels
SENSOR_Leg = 'SENSOR_Leg'
SENSOR_LLeg = 'SENSOR_LLeg'
SENSOR_LLeg1 = 'SENSOR_LLeg1'
SENSOR_LLeg2 = 'SENSOR_LLeg2'
SENSOR_RLeg = 'SENSOR_RLeg'
SENSOR_RLeg1 = 'SENSOR_RLeg1'
SENSOR_RLeg2 = 'SENSOR_RLeg2'
# EMG Chin channels
EMG_Chin = 'EMG_Chin'
EMG_RChin = 'EMG_RChin'
EMG_LChin = 'EMG_LChin'
EMG_CChin = 'EMG_CChin'
# EEG channels (unipolar)
EEG_C3 = 'EEG_C3'
EEG_C4 = 'EEG_C4'
EEG_A1 = 'EEG_A1'
EEG_A2 = 'EEG_A2'
EEG_O1 = 'EEG_O1'
EEG_O2 = 'EEG_O2'
EEG_F3 = 'EEG_F3'
EEG_F4 = 'EEG_F4'
# EEG channels (bipolar/referenced)
EEG_C3_A2 = 'EEG_C3_A2'
EEG_C4_A1 = 'EEG_C4_A1'
EEG_F3_A2 = 'EEG_F3_A2'
EEG_F4_A1 = 'EEG_F4_A1'
EEG_O1_A2 = 'EEG_O1_A2'
EEG_O2_A1 = 'EEG_O2_A1'
# Other channels
FPZ = 'FPZ'
GROUND = 'GROUND'
POS = 'POS'
# =============================================================================
# Sampling frequencies (Hz)
# =============================================================================
FREQ_ECG = 128
FREQ_ECG1 = 128
FREQ_ECG2 = 128
FREQ_ECG3 = 128
FREQ_HR = 1
FREQ_PPG = 128
FREQ_SPO2 = 1
FREQ_OX = 1
FREQ_ABD = 8
FREQ_THX = 8
FREQ_AF = 8
FREQ_NP = 8
FREQ_SN = 32
FREQ_EOG_L = 64
FREQ_EOG_R = 64
FREQ_EOG_E1_A2 = 64
FREQ_EOG_E2_A1 = 64
FREQ_EMG_Leg = 64
FREQ_EMG_LLeg = 64
FREQ_EMG_RLeg = 64
FREQ_EMG_LLeg1 = 64
FREQ_EMG_LLeg2 = 64
FREQ_EMG_RLeg1 = 64
FREQ_EMG_RLeg2 = 64
FREQ_SENSOR_Leg = 64
FREQ_SENSOR_LLeg = 64
FREQ_SENSOR_LLeg1 = 64
FREQ_SENSOR_LLeg2 = 64
FREQ_SENSOR_RLeg = 64
FREQ_SENSOR_RLeg1 = 64
FREQ_SENSOR_RLeg2 = 64
FREQ_EMG_Chin = 64
FREQ_EMG_LChin = 64
FREQ_EMG_RChin = 64
FREQ_EMG_CChin = 64
FREQ_EEG_C3 = 64
FREQ_EEG_C4 = 64
FREQ_EEG_A1 = 64
FREQ_EEG_A2 = 64
FREQ_EEG_O1 = 64
FREQ_EEG_O2 = 64
FREQ_EEG_F3 = 64
FREQ_EEG_F4 = 64
FREQ_EEG_C3_A2 = 64
FREQ_EEG_C4_A1 = 64
FREQ_EEG_F3_A2 = 64
FREQ_EEG_F4_A1 = 64
FREQ_EEG_O1_A2 = 64
FREQ_EEG_O2_A1 = 64
FREQ_POS = 1
# =============================================================================
# Event annotation column names
# =============================================================================
EVENT_NAME_COLUMN = 'EVENT'
START_TIME_COLUMN = 'START_SEC'
END_TIME_COLUMN = 'END_SEC'
# =============================================================================
# Respiratory event names
# =============================================================================
RESPIRATORY_EVENT_CENTRAL_APNEA = 'Central Apnea'
RESPIRATORY_EVENT_OBSTRUCTIVE_APNEA = 'Obstructive Apnea'
RESPIRATORY_EVENT_MIXED_APNEA = 'Mixed Apnea'
RESPIRATORY_EVENT_HYPOPNEA = 'Hypopnea'
RESPIRATORY_EVENT_DESATURATION = 'Oxygen Desaturation'
# =============================================================================
# Limb movement event names
# =============================================================================
LIMB_MOVEMENT_ISOLATED = 'Limb Movement Isolated'
LIMB_MOVEMENT_PERIODIC = 'Limb Movement Periodic'
LIMB_MOVEMENT_ISOLATED_LEFT = 'Left Limb Movement Isolated'
LIMB_MOVEMENT_ISOLATED_RIGHT = 'Right Limb Movement Isolated'
LIMB_MOVEMENT_PERIODIC_LEFT = 'Left Limb Movement Periodic'
LIMB_MOVEMENT_PERIODIC_RIGHT = 'Right Limb Movement Periodic'
# =============================================================================
# Arousal event names
# =============================================================================
AROUSAL_EVENT_CLASSIC = 'Arousal'
AROUSAL_EVENT_RESPIRATORY = 'RERA'
AROUSAL_EVENT_EMG = 'EMG-Related Arousal'