The sleepcycles
package provides tools for detecting, analyzing, and
visualizing sleep cycles from hypnogram data using density-based and
rule-based (Feinberg) algorithms. It supports both single- and
multi-subject hypnograms, enabling users to extract and explore Non-REM
(NREMP) and REM (REMP) periods with flexible parameter settings. The
package includes an interactive Shiny application, a suite of
visualization functions and utilities validating sleep staging data.
📌 Designed for sleep researchers, clinicians, and data scientists,
sleepcycles
helps uncover the underlying dynamics of sleep
architecture and assess the impact of sleep patterns in healthy and
clinical populations.
You can install the development version from GitHub using {remotes}
:
# Install remotes if not installed
install.packages("remotes")
# Install sleepcycles from GitHub
remotes::install_github("jasondude16/sleepcycles")
library(sleepcycles)
sleepcycles
contains two example datasets: hypnogram_single
and
hypnogram_grouped
, which contain single- and multi-subject hypnograms,
respectively. We will load the multi-subject hypnogram for this example.
data("hypnogram_grouped", package = "sleepcycles")
sleepcycles
requires a hypnogram (in the format of a data frame) with
two variables: one of the epoch, and one of the sleep stage; if there
are multiple subjects, an ID variable is also required.
head(hypnogram_grouped)
#> epoch stage id
#> 1 1 W 1
#> 2 2 W 1
#> 3 3 W 1
#> 4 4 W 1
#> 5 5 W 1
#> 6 6 W 1
sleepcycle_obj <- sleepcycles_from_hypnogram(
hypnogram_grouped,
epoch_col = "epoch",
stage_col = "stage",
id_col = "id",
verbose = FALSE
)
plot_cycles(sleepcycle_obj, id = "1")
plot_hypnogram(sleepcycle_obj, id = "1")
if (interactive()) {
run_sleepcycles_app(sleepcycle_obj)
}
- ✔ Sleep Cycle Detection: Supports Feinberg (Rule-Based) algorithm and a novel density-based algorithm
- ✔ Interactive Visualization: Generate hypnograms, density plots, and cycle summaries
- ✔ Shiny App: Modify and explore cycle detection parameters interactively
- ✔ Preprocessing & Validation: Built-in data validation tools
- ✔ Single and Grouped Data Support: Works with individual and multi-subject hypnogram datasets
Function | Description |
---|---|
sleepcycles_from_hypnogram() |
Detects sleep cycles using DUDE or Feinberg method |
plot_hypnogram() |
Generates a hypnogram plot |
plot_densities() |
Plots hypnogram stage densities |
plot_cycles() |
Visualizes detected sleep cycles |
plot_summary() |
Provides a combined visualization of sleep cycles and hypnogram |
run_sleepcycles_app() |
An interactive Shiny app for sleep cycle parameter exploration |
check_hypnogram() |
Validates hypnogram data for errors |
We welcome contributions! If you find a bug, please open an issue.
This package is licensed under the MIT License.