Sleep arousal detection¶
Ghassemi2018 (Physionet Challenge 2018)Usage¶
neuralbench eeg sleep_arousal
Show config.yaml
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.
data:
study:
source:
name: Ghassemi2018You
# Only the "train" subset of Ghassemi2018You has labels
filter_train_split:
name: QueryEvents
query: "split == 'train'"
# `noise` is an artifact-span annotation in PC18, not a cortical arousal
drop_noise:
name: QueryEvents
query: "~((type == 'SleepArousal') & (state == 'noise'))"
create_label:
name: CreateColumn
column: label
query_row: "type == 'SleepArousal'"
query_value: arousal
split:
name: SklearnSplit
split_by: subject
valid_split_ratio: 0.2
test_split_ratio: 0.2
valid_random_state: 33
test_random_state: 33
channel_positions.layout_or_montage_name: standard_1005
target:
=replace=: true
name: LabelEncoder
allow_missing: true
event_types: SleepArousal
event_field: label
predefined_mapping: {arousal: 0}
return_one_hot: true
aggregation: sum
treat_missing_as_separate_class: true
trigger_event_type: Eeg
start: 0.0
duration: 15.0
stride: 15.0
stride_drop_incomplete: true
use_weighted_sampler: true
summary_columns: [state, label]
brain_model_output_size: &brain_model_output_size 2
trainer_config.monitor: val/bal_acc
trainer_config.mode: max
loss:
name: CrossEntropyLoss
metrics: !!python/object/apply:neuralbench.defaults.metrics.get_classification_metric_configs
- *brain_model_output_size
Description¶
Based on the PhysioNet/Computing in Cardiology Challenge 2018 [Ghassemi2018b], this
task benchmarks cortical-arousal detection from whole-night sleep EEG. Each
non-overlapping 15 s segment is labelled positive if it overlaps any scored
SleepArousal event — respiratory disturbances (apnea, hypopnea, Cheyne-Stokes
breathing, hypoventilation, partial obstruction) or non-respiratory arousals
(RERA, spontaneous, PLM, bruxism, snore) — and negative otherwise.
This is intentionally a simpler framing than the original Challenge, which scored per-sample, restricted positives to non-apnea arousals, and excluded wake and apnea periods from scoring. We therefore do not expect scores to be directly comparable to the Challenge leaderboard.
Dataset Notes¶
Only the
split == 'train'portion of the Challenge dataset (~994 subjects) is used, because the public test subset has no released labels. Train/val/test splits are drawn at the subject level (60/20/20).Most positive segments overlap respiratory events (apneas, hypopneas, RERAs), because the PC18 cohort is weighted toward sleep-disordered breathing.
SleepArousalevents taggednoiseare artifact spans (vocalizations, coughing, movement, external noise) rather than cortical arousals, so they are filtered out before labelling. Segments overlapping only such spans receive the negative label rather than triggering a positive.Strong imbalance toward “no arousal” is addressed with a weighted sampler, and we report both
bal_acc(principal metric, for consistency across the benchmark) and AUPRC.
References¶
Ghassemi, Mohammad M., et al. “You Snooze, You Win: the Physionet/Computing in Cardiology Challenge 2018.” 2018 Computing in Cardiology Conference (CinC). Vol. 45. IEEE, 2018.