Luna is the core C/C++ analysis engine of the Luna sleep research ecosystem. It provides command-line and embeddable tooling for large-scale analysis of EDF/EDF+ polysomnography data, annotation handling, signal processing, sleep staging, spectral analysis, cohort summaries, and derived-model workflows. Please see the primary documentation for more details on usage and installation.
For a higher-level overview of how Luna fits together with lunapi and Lunascope, see the technical report, The Luna ecosystem: integrated tools for sleep signal visualization and analysis. It describes the broader Luna ecosystem and the shared workflow spanning scripted and graphical analysis.
Luna is designed for reproducible sleep research workflows that need to scale from a single recording to large cohorts while preserving a common analytical core across command-line, C++ embedding, Python, and interactive desktop review.
- Native C/C++ tooling for EDF/EDF+, annotations, masking, restructuring, and batch execution
- A broad command set for spectral analysis, spindle and slow-wave detection, connectivity, artifact handling, actigraphy, staging, and predictive models
- A reusable static/shared library (
libluna.a,libluna.dylib,libluna.so) for embedding Luna in other applications - A command-line executable (
luna) for scripted and cohort-scale processing - Shared analytical infrastructure used by
lunapiand Lunascope
Luna is one part of a larger stack. The same analytical engine is exposed through multiple interfaces depending on the workflow:
| Project | Role | Repository | Web documentation |
|---|---|---|---|
luna-base |
Core C/C++ engine and CLI | https://github.com/remnrem/luna-base | https://zzz.nyspi.org/luna/ |
lunapi |
Python interface for notebooks and scripted workflows | https://github.com/remnrem/luna-api | https://zzz.nyspi.org/luna/python/ |
Lunascope |
Interactive desktop application for visualization, annotation, and review | https://github.com/Lorcan7274/lunascope | https://zzz.nyspi.org/luna/lunascope/ |
Luna processes either a single EDF or a sample list plus one or more commands:
./luna sample.lst -o out.db -s 'EPOCH & PSD sig=C3 spectrum'./luna -h
./luna -h PSD
./luna -hs spindleSee CONTRIBUTING.md for bug reports, feature requests, and pull request guidance specific to this C++ codebase.
