Does twitch-spindle coupling differ between N2 and N3 sleep in 6-month-olds?
The 2 matches
- [1] § Methods › Data analysis › EEG signals ↔ fun_Spindle_Stats.m, lines 1–70 · score 0.90 · 12–14 Hz, median amplitude, filtered EEG, 11–15 Hz, detection, expanded
- [2] § Methods › Data analysis › Sleep spindles ↔ fun_Spindle_Stats.m, lines 1–70 · score 0.61 · spindles detected, sleep spindle frequency, Hilbert, signal, amplitude, waveform
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 160 lines · 7 KB · no license · 2 matches
- function Output = fun_Spindle_Stats(EEGValues,EEGTimes,EEGArtifact_yn, Fs, MinLength, LT, UT)
- % Output = Spindle_Stats(EEGValues,EEGTimes,EEGArtifact_yn, Fs, MinLength, LT, UT)
- %
- % Script that takes an EEG signal and calculates several sleep spindle
- % related numbers.
- %
- % Dependencies:
- % SpindleFilter.m Filters EEG to spindle frequency
- % Logical_Consecutive.m Determines the length of sleep spindles
- % Matlab Signal Processing Toolbox
- %
- % Inputs:
- % EEGValues 1xn Vector The value of the EEG waveform
- % EEGTimes 1xn vector The time of each EEG datapoint
- % Fs Number The sampling rate of the EEG waveform
- % MinLength Number The minimum length for a sleep spindle
- % in seconds
- % LT Number The lower amplitude threshold for detection
- % (ex 2x median amplitude LT=2)
- % UT Number The upper amplitude threshold for detection
- % (ex: toddlers McClain in 6x, adults 9x)
- %
- % Outputs:
- % Output A structure with the following fields:
- % .Values The filtered EEG waveform
- % .Times The Times of the filtered EEG waveform
- % .Amplitude The amplitude of the resulting waveform
- % .Phase The phase of the resulting waveform
- % .Threshold The threshold used on the Amplitude to determine a
- % sleep spindle.
- % .SpindleLogical A logical that reports whether each data point is during
- % a sleep spindle
- % .SpindleIndex The same as SpindleLogical, except instead of all
- % spindles being 1, they are an integer of what number
- % sleep spindle it is. Helps for indexing particular
- % sleep spindles.
- %
- % Given K sleep spindles detected
- %
- % .SB.StartTime 1xK vector The start time of the sleep spindle.
- % .SB.EndTime 1xK vector The end time of the sleep spindle.
- % .SB.Duration 1xK vector The duration of the sleep spindle.
- % .SB.Amp 1xK cell The amplitude of the sleep spindle at each
- % datapoint.
- % .SB.Phase 1xK cell The phase of the sleep spindle at each
- % datapoint.
- % .SB.medAmp 1xK vector The median amplitude of the sleep spindle.
- % .SB.maxAmp 1xK vector The maximum amplitude of the sleep spindle.
- % .SB.sumPhase 1xK vector The sum of all phase changes for the spindle
- % burst.
- % .SB.nCycles 1xK vector The number of cycles for each sleep spindle.
- %
- % Initally used in:
- % % Sokoloff G, Dooley JC, Glanz RM, Yen RY, Hickerson MM, Evans L, Laughlin
- % HM, Apfelbaum KS, and Blumberg MS (2021). Twitches emerge postnatally
- % during quiet sleep in human infants and are synchronized with sleep
- % spindles. Current Biology. https://doi.org/10.1016/j.cub.2021.05.038
- %
- % Last updated 6/16/2024 by Taylor Christiansen added custom ampltiude and
- % spindle length inputs and expanded frequency from 12-14 to 11-15 Hz
- %
- % Used in Christiansen et al., 2026
- [fValues,fTimes] = SpindleFilter(EEGValues,EEGTimes,Fs); % Filter the signal
- fValuesAmp = abs(hilbert(fValues)); % Amplitude
- fValuesPhase = angle(hilbert(fValues)); % Phase
- dPhase = diff(unwrap(fValuesPhase)); % difference in phase
- dPhase = [0 dPhase]; % Pad the vector
- %% Only include signal not during noise to calculate the median Amplitude
- for t = 1:length(fTimes) %loop through EEG data row
- Amp = fValuesAmp (t); % Amplitude at time t
- Art = EEGArtifact_yn (t); % Art y or n at time t
- if Art == 1 ; %if the amplitude is during artifact period
- fValuesAmp_clean(t) = NaN;
- else
- fValuesAmp_clean(t) = Amp;
- end
- end
- medAmp = nanmedian(fValuesAmp_clean);
- LowerThreshold = medAmp*LT; % Change to change threshold
- UpperThreshold = medAmp*UT;
- fValuesAmpLogical = fValuesAmp_clean > LowerThreshold;
- ThreshDuration = Logical_Consecutive(fValuesAmpLogical);
- MinDuration = round(Fs*MinLength);
- DurationLogical = ThreshDuration.ConsecutiveOutput < MinDuration;
- fValuesAmpLogical(DurationLogical & fValuesAmpLogical) = 0;
- ThreshDuration = Logical_Consecutive(fValuesAmpLogical);
- DurationLogical = ThreshDuration.ConsecutiveOutput < MinDuration;
- fValuesAmpLogical(DurationLogical & ~fValuesAmpLogical) = 1;
- ThreshDuration = Logical_Consecutive(fValuesAmpLogical);
- dfValuesAmpLogical = diff(fValuesAmpLogical);
- SSI_raw = find(dfValuesAmpLogical == 1); % Spindle Start Index
- SEI_raw = find(dfValuesAmpLogical == -1); % Spindle End Index
- nSpindles_raw = min([length(SEI_raw); length(SSI_raw)]);
- SSI = []; %initalize
- SEI = [];
- %Loop Through existing spindles
- for iSpindle = 1:nSpindles_raw
- Amp_loop = [];
- Amp_loop = fValuesAmp(SSI_raw(iSpindle):SEI_raw(iSpindle));
- st = SSI_raw (iSpindle);
- en = SEI_raw (iSpindle);
- % Check if any value in the event crosses the Upper Threshold
- if any(Amp_loop > UpperThreshold) % if at any point the amplitude of spindle crosses the UpperThreshold save it
- % If it does, include the entire event
- SSI = [SSI st];
- SEI = [SEI en];
- end
- end
- nSpindles = [];
- nSpindles = min([length(SEI); length(SSI)]);
- Output.Values = fValues;
- Output.Times = fTimes;
- Output.Amplitude = fValuesAmp_clean;
- Output.Phase = fValuesPhase;
- Output.LowerThreshold = LowerThreshold;
- Output.UpperThreshold = UpperThreshold;
- Output.SpindleLogical = fValuesAmpLogical;
- Output.SpindleIndex = zeros(size(fValuesAmpLogical));
- if nSpindles > 0
- Output.nSpindles = nSpindles;
- else
- Output.nSpindles = 0;
- end
- % Save the information for the identified sleep spindles
- for iSpindle = 1:nSpindles
- Output.SpindleIndex(SSI(iSpindle):SEI(iSpindle)) = iSpindle; % Create string for easy sleep spindle indexing
- Output.SB.StartTime(iSpindle) = SSI(iSpindle)/Fs; % Get sleep spindle start time (in seconds)
- Output.SB.EndTime(iSpindle) = SEI(iSpindle)/Fs; % Get sleep spindle end time (in seconds)
- Output.SB.Duration(iSpindle) = Output.SB.EndTime(iSpindle) - Output.SB.StartTime(iSpindle); % Get sleep spindle duration
- Output.SB.Amp{iSpindle} = fValuesAmp(SSI(iSpindle):SEI(iSpindle)); % Get sleep spindle amplitude throughout
- Output.SB.Phase{iSpindle} = fValuesPhase(SSI(iSpindle):SEI(iSpindle)); % Get sleep spindle phase throughout
- Output.SB.medAmp(iSpindle) = median(fValuesAmp(SSI(iSpindle):SEI(iSpindle))); % Get sleep spindle median amplitude
- Output.SB.maxAmp(iSpindle) = max(fValuesAmp(SSI(iSpindle):SEI(iSpindle))); % Get sleep spindle max amplitude
- Output.SB.sumPhase(iSpindle) = sum(dPhase(SSI(iSpindle):SEI(iSpindle))); % Get the phase duration of the sleep spindle
- Output.SB.nCycles(iSpindle) = Output.SB.sumPhase(iSpindle) / (2*pi); % Get the number of cycles of the sleep spindle
- Output.SB.frequencies(iSpindle)= Output.SB.nCycles(iSpindle)/Output.SB.Duration(iSpindle); %use the number of cycles and the duration of the spindle to calculate frequency
- end
- end
fun_Spindle_Stats.m at commit 0bcc813, no license · at the source
Overview
- Department of Psychological and Brain Sciences, University of Iowa, Psychological and Brain Sciences Building, 340 Iowa Avenue, Iowa City, IA 52242, United States
- Iowa Neuroscience Institute, University of Iowa, Iowa City, IA 52242, United States
Abstract
Twitches are discrete movements that characterize rapid eye movement (REM) sleep. However, recent work showed that twitches also occur during non-REM (NREM) sleep in human infants beginning around 3 months of age, a time when sleep spindles and the cortical delta rhythm are also emerging. Further, NREM twitches are coupled with sleep spindles, suggesting a unique contribution to sensorimotor development. Given that NREM sleep is composed of distinct substages, we investigated whether twitching and twitch-spindle coupling are differentially expressed during N2 and N3 sleep. In 6-month-old human infants (n = 21; 7 females), we recorded electroencephalogram, respiration, and video during daytime sleep. We found high-intensity twitching during N2 and REM but not N3 sleep. In contrast, sleep spindles exhibited similar temporal characteristics during N2 and N3. Also, despite differences in the intensity of twitching during N2 and N3, significant twitch-spindle coupling occurred in both stages. Finally, the rate of twitching was inversely related to delta power across NREM periods. These findings suggest that although twitching occurs during REM, N2, and N3 sleep at this age, its expression is compatible with some sleep components (e.g., rapid eye movements, sleep spindles) but not others (e.g., cortical delta), highlighting the continuing need to better understand the dynamic organization of sleep and its individual components in early development.
Reproduced under the paper's license (CC BY-NC), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 2 matches between paragraphs and lines of code.
Blumberg-Lab/Chirstiansen-et-al-2026
0bcc8132c37c9c998a2da668ab91ac012eead447, 17 December 2025Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
9 files
- Logical_Consecutive.m, MATLAB, 95 lines
- SpindleFilter.m, MATLAB, 62 lines
- Waveform_Average.m, MATLAB, 65 lines
- expected_Shuffle.m, MATLAB, 61 lines
- fun_Spindle_Stats.m, MATLAB, 160 lines, 2 matches
- fun_pSpindle.m, MATLAB, 201 lines
- fun_pTwitch.m, MATLAB, 273 lines
- fun_twitchstateremproces
s.m , MATLAB, 673 lines - README.md, Text, 2 lines
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 8 scripts, each with its path and the digest of its content;
- 2 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 6 keywords, 9 MeSH terms, 1 funder, 59 references.
Cite
This paper
Christiansen, T. G., Sokoloff, G., Long, H. C., Kopp, O. K., Karr, L. K., & Blumberg, M. S. (2026). Does twitch-spindle coupling differ between N2 and N3 sleep in 6-month-olds? Sleep, 49(4), zsaf410. https://
BibTeX
@article{christiansen202
author = {Christiansen, Taylor G and Sokoloff, Greta and Long, Hailey C and Kopp, Olivia K and Karr, Lydia K and Blumberg, Mark S},
title = {{Does twitch-spindle coupling differ between N2 and N3 sleep in 6-month-olds?
journal = {Sleep},
year = {2026},
month = apr,
volume = {49},
number = {4},
pages = {zsaf410},
publisher = {Oxford University Press},
issn = {0161-8105},
doi = {10.1093/
url = {https://
pmid = {41432252},
pmcid = {PMC13089613}
}
RIS
TY - JOUR
AU - Christiansen, Taylor G
AU - Sokoloff, Greta
AU - Long, Hailey C
AU - Kopp, Olivia K
AU - Karr, Lydia K
AU - Blumberg, Mark S
TI - Does twitch-spindle coupling differ between N2 and N3 sleep in 6-month-olds?
T2 - Sleep
J2 - Sleep
PY - 2026
DA - 2026/
VL - 49
IS - 4
SP - zsaf410
SN - 0161-8105
PB - Oxford University Press
DO - 10.1093/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1093/
"type": "article-journal",
"title": "Does twitch-spindle coupling differ between N2 and N3 sleep in 6-month-olds?
"container-title": "Sleep",
"author": [
{
"family": "Christiansen",
"given": "Taylor G"
},
{
"family": "Sokoloff",
"given": "Greta"
},
{
"family": "Long",
"given": "Hailey C"
},
{
"family": "Kopp",
"given": "Olivia K"
},
{
"family": "Karr",
"given": "Lydia K"
},
{
"family": "Blumberg",
"given": "Mark S"
}
],
"container-title-short":
"volume": "49",
"issue": "4",
"page": "zsaf410",
"DOI": "10.1093/
"PMID": "41432252",
"PMCID": "PMC13089613",
"ISSN": "0161-8105",
"publisher": "Oxford University Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
1
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1016/j.isci.2026.115878 [code]
- Twitching in sleeping premature infants provides a sensitive behavioral assay of early motor control.Journal: iScienceIn common: developmental, 8 references, author Mark S. Blumberg
- [2] doi:10.1002/hbm.70354
- Exploring Deep Magnetoencephalography via Thalamo‐Cortical Sleep SpindlesJournal: n/aIn common: EEG, 6 references
- [3] doi:10.1016/j.isci.2026.116601 [code]
- Random auditory stimulation during sleep disturbs traveling slow waves and declarative memory.Journal: iScienceIn common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, 4 references
- [4] doi:10.1007/s12021-026-09810-4 [code]
- Meta-Analysis of Face-Validity Indicators in Automatically Detected Dog Sleep Spindles.Journal: NeuroinformaticsIn common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, EEG, 3 references
- [5] doi:10.1093/sleepadvances/zpag069 [code]
- Thalamic transcranial electrical stimulation with temporal interference enhances sleep spindle activity during a daytime nap.Journal: Sleep advances : a journal of the Sleep Research SocietyIn common: Statistics and Machine Learning Toolbox, EEG, 4 references
- [6] doi:10.1038/s41597-026-07356-3 [code]
- A dataset of EEG and ECG recordings around the onset of NREM sleep from infancy to adolescence.Journal: Scientific dataIn common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, EEG, 2 references
- [7] doi:10.1371/journal.pbio.3003938 [code]
- Theta oscillations tag episodic memories for sleep-dependent consolidation.Journal: PLoS biologyIn common: Signal Processing Toolbox, Statistics and Machine Learning Toolbox, EEG, 2 references
- [8] doi:10.7554/elife.103956 [code]
- Human brain-wide activation of sleep rhythms.Journal: eLifeIn common: EEG, 4 references
- [9] doi:10.1038/s41467-026-75162-x [code]
- Dyscoordination of thalamic reticular spindles is associated with social memory deficits in mice and humans with autism spectrum disorder.Journal: Nature communicationsIn common: Statistics and Machine Learning Toolbox, 3 references
- [10] doi:10.1016/j.dcn.2026.101727 [code]
- Neonatal brain activity across sleep states: Evidence from resting EEG and auditory event-related potentials.Journal: Developmental cognitive neuroscienceIn common: developmental, EEG, 3 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 8 scripts, and 2 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:790c0a2905d377de…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
