Description
In the eeg/sleep_onset task, AddSleepOnsetTargets with max_pre_n2_s: 1200 keeps the 1200 s before the first N2. Sleep-EDF (Kemp2000Analysis) recordings begin hours before bedtime, so every crop is exactly [n2_onset - 1200 s, n2_onset] and the target is a function of position in the crop: min(600, 1200 - seconds since crop start) reproduces it with no EEG. Anything that sees the crop start (an elapsed-time feature, a running per-recording normalisation, a reference taken from the first seconds of the crop) reads the label off the crop geometry.
How I noticed: a causal "reference to the first 60 s of the crop" feature improved test bMAE by about 6 s on Sleep-EDF; on recordings whose crop starts at lights-off (HMC, where the 1200 s margin is not available) the same feature is worth 1.3 s.
Suggestions: anchor the crop start to something independent of the label (lights-off, recording start, or a margin randomized per recording), or keep the full recording and mask windows more than 1200 s before onset in the loss and metric only.
Question for the competition: are the hidden Muse evaluation streams cut with a fixed margin before the annotated onset? If so, the same leak would become available on the leaderboard; if they run from the start of the night, it would be helpful to state that in the Track 3 guide.
Steps to reproduce
Build the sleep_onset task on kemp2000analysis with the default config (max_pre_n2_s: 1200), then for each recording compare the first segment's start time with the recording's N2 onset:
n2_onset - first_segment_start == 1200 for every Sleep-EDF recording, the first window of every crop carries target 600, and the predictor min(600, 1200 - t_since_crop_start) scores bMAE ~0 without reading any EEG.
Environment
- OS:
- Python version:
- neuralset version (
pip show neuralset):
- Relevant package versions:
Description
In the eeg/sleep_onset task,
AddSleepOnsetTargetswithmax_pre_n2_s: 1200keeps the 1200 s before the first N2. Sleep-EDF (Kemp2000Analysis) recordings begin hours before bedtime, so every crop is exactly [n2_onset - 1200 s, n2_onset] and the target is a function of position in the crop: min(600, 1200 - seconds since crop start) reproduces it with no EEG. Anything that sees the crop start (an elapsed-time feature, a running per-recording normalisation, a reference taken from the first seconds of the crop) reads the label off the crop geometry.How I noticed: a causal "reference to the first 60 s of the crop" feature improved test bMAE by about 6 s on Sleep-EDF; on recordings whose crop starts at lights-off (HMC, where the 1200 s margin is not available) the same feature is worth 1.3 s.
Suggestions: anchor the crop start to something independent of the label (lights-off, recording start, or a margin randomized per recording), or keep the full recording and mask windows more than 1200 s before onset in the loss and metric only.
Question for the competition: are the hidden Muse evaluation streams cut with a fixed margin before the annotated onset? If so, the same leak would become available on the leaderboard; if they run from the start of the night, it would be helpful to state that in the Track 3 guide.
Steps to reproduce
Environment
pip show neuralset):