Giter VIP home page Giter VIP logo

psga's Introduction

Polysomnography analysis (psga)

This package is a collection of tools used at the Adelaide Institute for Sleep Health for the analysis of polysomnography files.

WARNING: PSGA is still a work in progress, use at your own risk. Consider using YASA for a more stable alternative.


Getting started

The tools were developed in Python 3.7 and require the following dependencies: MNE, pandas and scikit-learn.

User-interface (TBA)

PSGA comes with a user-friendly dashboard to quickly visualise your data. The dashboard additionaly requires Pyside2 and plotly. The dashboard is not designed for manual scoring of events. If you are after an UI to score sleep, consider using visbrain-sleep.

Citation

If you find this code useful, please consider citing the following publication:

Lechat, B., Hansen, K. L., Melaku, Y. A., Vakulin, A., Micic, G., Adams, R. J., . . . Zajamsek, B. (2021). A Novel EEG Derived Measure of Disrupted Delta Wave Activity during Sleep Predicts All-Cause Mortality Risk. Ann Am Thorac Soc, (in press). doi:10.1513/AnnalsATS.202103-315OC

Acknowledgments

Several functions were adapted or inspired from MNE-features and YASA. Credit should be given to functions/modules adapted from these packages. If credit is missing, please let us know.

psga's People

Contributors

bastienlechat avatar

Stargazers

 avatar Jack Manners avatar  avatar  avatar  avatar

Watchers

 avatar

psga's Issues

Missing multiplier in KCS?

Hi Bastien,
I'm Giacomo, from the sleep research unit of San Raffaele University, Milan.
We're using your algorithm for automatic K-complex scoring. It all works fine, except for the fact that K-complexes look "inverted", both in the final plot and in the browser we use to check the outputs (EDF browser). I looked into the script and i may have found the problem but wanted to ask you a confirmation about it.
In the function "scoring_algorithm_kc", line 431:
[raw[count, :][0] for count, k in enumerate(raw.info['ch_names']) if
k == channel]).ravel()

If i remember correctly, in one of the previous versions of the script, the line was multiplied by -1 because the algorithm was trained on negative EEG polarity. After making this change the detected KCS are not inverted anymore, plus they are almost doubled in quantity, making the average look much smoother. I hope this was helpful, however, if you think I made a mistake, please let me know asap.
Best,
Giacomo

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.