Sleep onset prediction¶
Kemp2000 (Sleep-EDF)Usage¶
neuralbench eeg sleep_onset
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: Kemp2000Analysis
annotate_sleep_onset:
name: AddSleepOnsetTargets
max_pre_n2_s: 1200.0
split:
name: SklearnSplit
split_by: subject
valid_split_ratio: 0.2
test_split_ratio: 0.2
valid_random_state: 33
test_random_state: 33
# Sleep-EDF (Kemp2000) recordings only expose bipolar derivations (Fpz-Cz,
# Pz-Oz) whose MNE ch_locs are NaN, so the default ``ch_locs``-derived
# position mapping in ``ChannelPositions`` produces all-``INVALID_VALUE``
# positions. Explicitly use the standard_1020 montage so the split-on-``-``
# fallback resolves Fpz-Cz -> Fpz and Pz-Oz -> Pz to real 3D coordinates.
channel_positions:
layout_or_montage_name: standard_1020
target:
=replace=: true
name: SleepOnsetTargetExtractor
event_types: SleepOnsetMarker
aggregation: trigger
cap_s: 600.0
trigger_event_type: SleepOnsetMarker
start: 0.0
duration: 5.0
stride: 5.0
sampler:
name: RegressionBinSampler
bin_edges: [0.0, 40.0, 90.0, 300.0, 600.0]
summary_columns: [n2_onset]
brain_model_output_size: &brain_model_output_size 1
trainer_config:
monitor: val/bmae
mode: min
patience: 7
n_epochs: 40
loss:
name: MultiLoss
losses:
mse:
name: MSELoss
weights:
mse: 0.0001 # targets are in [0, 600] s; weight=0.0001 (0.01^2) keeps MSE <= ~36 so gradient clipping does not saturate.
metrics: !!python/object/apply:neuralbench.defaults.metrics.get_sleep_onset_metric_configs []
Description¶
Given a continuous EEG recording leading up to sleep, predict at every point in
time how many seconds remain before the participant falls asleep. Models output
a single regression value per analysis window, capped at 600 s (10 minutes
pre-onset). Inference is strictly causal: predictions for window [t - 5, t]
may only depend on EEG up to time t. The benchmark uses non-overlapping
5-s analysis windows – one model input per 5-s slice of EEG – so every
recording yields one prediction every 5 s of pre-onset signal.
Sleep onset is defined as N2 onset: the timestamp of the first scored N2
epoch in the polysomnogram-aligned hypnogram. N2 was chosen (rather than the
looser N1 or “first non-wake” definition) because it is the most reliably
scored stage across raters, the most reproducible across recording nights, and
corresponds to the consolidated transition into sleep that is clinically
meaningful [Rechtschaffen1968]. The AddSleepOnsetTargets transform emits
a single SleepOnsetMarker event per recording spanning the trainable
pre-onset region, carrying the absolute n2_onset timestamp. The segmenter
tiles this marker via stride to produce 5-s analysis segments, and the
SleepOnsetTargetExtractor computes
clip(n2_onset - segment.stop, 0, 600) at extraction time – so the target
is always derived from the actual segment boundary.
Evaluation¶
The headline metric is bMAE (binned MAE): the mean absolute error computed inside each of four ground-truth time-to-onset bins, averaged across bins with equal weight. The bin boundaries map onto distinct physiological regimes that demand fundamentally different algorithmic capabilities.
Standard regression metrics (MAE, RMSE, Pearson r, R^2, normalized RMSE) are
also logged alongside the headline bmae.
Additional Datasets¶
The following additional polysomnography datasets can also be used with this
task. Both expose annotated sleep stages, so AddSleepOnsetTargets derives
the N2-onset target the same way as on Sleep-EDF.
Alvarez2022Haaglanden(HMC-Sleep-Staging) – 151 whole-night PSG recordings (6-channel EEG, 256 Hz) from clinical sleep-center patients [Alvarez2022].Ghassemi2018You(PhysioNet/CinC Challenge 2018) – clinical PSG recordings; only the labeled training split (N=994) is used [Ghassemi2018].
To run with an alternate dataset:
neuralbench eeg sleep_onset --dataset alvarez2022haaglanden
References¶
B Kemp, AH Zwinderman, B Tuk, HAC Kamphuisen, JJL Oberyé. Analysis of a sleep-dependent neuronal feedback loop: the slow-wave microcontinuity of the EEG. IEEE-BME 47(9):1185-1194 (2000).
A Rechtschaffen, AE Kales. A manual of standardized terminology, techniques and scoring systems for sleep stages of human subjects. Los Angeles, CA: UCLA Brain Information Service. Brain Research Institute 10 (1968).
D Alvarez-Estevez, R Rijsman. Haaglanden Medisch Centrum Sleep Staging Database (version 1.1). PhysioNet (2022). doi:10.13026/T79Q-FR32.
MM Ghassemi, BE Moody, L-w H Lehman, C Song, Q Li, H Sun, RG Mark, MB Westover, GD Clifford. You Snooze, You Win: The PhysioNet/Computing in Cardiology Challenge 2018. Computing in Cardiology 45 (2018).