Giter Club home page Giter Club logo

yasa's Introduction

image

image

image

image


YASA (Yet Another Spindle Algorithm) is a command-line sleep analysis toolbox in Python. The main functions of YASA are:

  • Automatic sleep staging of polysomnography data (see preprint article).
  • Event detection: sleep spindles, slow-waves and rapid eye movements, on single or multi-channel EEG data.
  • Artefact rejection, on single or multi-channel EEG data.
  • Spectral analyses: bandpower, phase-amplitude coupling, 1/f slope, and more!
  • Hypnogram analysis: sleep statistics and stage transitions.

For more details, try the quickstart or read the FAQ.


Installation

To install YASA, simply open a terminal or Anaconda command prompt and enter:

pip install --upgrade yasa

Alternatively, YASA can be installed with conda:

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install yasa

What are the prerequisites for using YASA?

To use YASA, all you need is:

  • Some basic knowledge of Python, especially the NumPy, Pandas and MNE packages.
  • A Python editor: YASA works best with Jupyter Lab, a web-based interactive user interface.
  • Some sleep EEG data and optionally a sleep staging file (hypnogram).

I have sleep data in European Data Format (.edf), how do I load the data in Python?

If you have sleep EEG data in standard formats (e.g. EDF or BrainVision), you can use the MNE package to load and preprocess your data in Python. A simple preprocessing pipeline using MNE is shown below:

import mne
# Load the EDF file
raw = mne.io.read_raw_edf('MYEDFFILE.edf', preload=True)
# Downsample the data to 100 Hz
raw.resample(100)
# Apply a bandpass filter from 0.1 to 40 Hz
raw.filter(0.1, 40)
# Select a subset of EEG channels
raw.pick_channels(['C4-A1', 'C3-A2'])

How do I get started with YASA?

If you want to dive right in, you can simply go to the main documentation and try to apply YASA's functions on your own EEG data. However, for most users, we strongly recommend that you first try running the examples Jupyter notebooks to get a sense of how YASA works and what it can do! The notebooks also come with example datasets so they should work right out of the box as long as you've installed YASA first. The notebooks and datasets can be found on GitHub (make sure that you download the whole notebooks/ folder). A short description of all notebooks is provided below:

Automatic sleep staging

Event detection

Spectral analysis

  • bandpower: calculate spectral band power, optionally averaged across channels and sleep stages.
  • IRASA: separate the aperiodic (= fractal = 1/f) components of the EEG power spectrum using the IRASA method.
  • spectrogram: plot a multi-taper full-night spectrogram on single-channel EEG data with the hypnogram on top.
  • nonlinear_features: calculate non-linear EEG features on 30-seconds epochs and perform a naive sleep stage classification.
  • SO-sigma_coupling: slow-oscillations/spindles phase-amplitude coupling and data-driven comodulogram.
  • EEG-HRV coupling: overnight coupling between EEG bandpower and heart rate variability.
  • topoplot: topoplot.

Gallery

Below some plots demonstrating the functionalities of YASA. To reproduce these, check out the tutorial (Jupyter notebooks).

The top plot show an overlay of the detected spindles on real EEG data. The middle left panel shows a time-frequency representation of the whole-night recording (spectrogram), plotted with the hypnogram (sleep stages) on top. The middle right panel shows the sleep stage probability transition matrix, calculated across the entire night. The bottom row shows, from left to right: a topographic plot, the average template of all detected slow-waves across the entire night stratified by channels, and a phase-amplitude coupling comodulogram.

The top plot show an overlay of the detected spindles on real EEG data. The middle left panel shows a time-frequency representation of the whole-night recording (spectrogram), plotted with the hypnogram (sleep stages) on top. The middle right panel shows the sleep stage probability transition matrix, calculated across the entire night. The bottom row shows, from left to right: a topographic plot, the average template of all detected slow-waves across the entire night stratified by channels, and a phase-amplitude coupling comodulogram.

Development

YASA was created and is maintained by Raphael Vallat, a postdoctoral researcher in Matthew Walker's lab at UC Berkeley. Contributions are more than welcome so feel free to contact me, open an issue or submit a pull request!

To see the code or report a bug, please visit the GitHub repository.

Note that this program is provided with NO WARRANTY OF ANY KIND.

Citation

To cite YASA, please use the eLife publication:

yasa's People

Contributors

raphaelvallat avatar moritz-gerster avatar remrama avatar darigovresearch avatar matiasandina avatar jajcayn avatar snwnde avatar paulroujansky avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.