Sleep Ensemble
Sleep Ensemble is a framework for end-to-end sleep state classification using machine learning. It is designed to allow for modular data processing, classification, and further post-processing. Published in SLEEP.
Installation
Install a suitable python environment from python.org.
Sleep Ensemble supports Python 3.7 only. It is extensively tested and developed with 64-bit Python 3.7.8 on Windows.
Sleep Ensemble pre-trained builds are only useable for the specific OS and 32/64-bit Python environment. The included pre-trained SleepEnsemble4 is built on 64-bit Python 3.7.8 on Windows.
Install the latest sleepens release using pip (on a terminal like command prompt):
pip install sleepens
Alternatively, download the source code for the latest release here. Unzip into desired location. Using the terminal, navigate to the top sleepens folder where setup.py is located and run the following:
python setup.py install
Download any pre-trained builds here or train your own.
Usage
Sleep Ensemble is built for easy use with a text-based python script that you can run in a command terminal. This application allows you to quickly classify data or train new models.
The application runs via sleepens.py which can be copied/moved anywhere as needed. To run, using the terminal, navigate to sleepens.py and run:
python sleepens.py
As a framework, the Sleep Ensemble package can be used as you would any other package. The end-user program can be accessed:
import sleepens
sleepens.run()
Alongside the Sleep Ensemble application, the framework is designed for high modularity and integration with other scripts in very little code.
# Setup a protocol
from sleepens.protocols.sleepens4 import SleepEnsemble4
model = SleepEnsemble4()
# Load a pre-trained model in a .joblib file
import joblib
model.classifier = joblib.load("/path/to/model.joblib")
# Classify your data
# Data is a list of 2D arrays in the form of (n samples, n features)
predictions = model.predict(data)
For full details on usage, see the documentation.
Changelog
See the changelog for a history of notable changes to sleepens.
Development
sleepens is in a relatively finished state. It has not been tested on different Python environment and OS combinations.
Currently, sleepens supports .mat, .smr/.smrx, .xls file formats for reading and writing. Of note, presently the SONpy interface for reading/writing .smr/.smrx files works for reading .smr only and writing .smrx only. No clear documentation exists to explain errors when attempting to read from .smrx. Additional i/o interfaces can be contributed to sleepens.io.interfaces following the basic structure.
The underlying data processing pipelines and classification models are modular and can be adjusted to create different sleep ensemble models. sleepens currently contains one protocol, SleepEnsemble4, for 4-state sleep classification. New or modified protocols can be contributed to sleepens.protocols following the basic structure.
Finally, sleepens uses joblib to store the pre-trained builds. This isn't the most secure method nor is the most data storage efficient. Ideally, a custom parameter export/load method is implemented that can reinstate a pre-trained build.
Dependencies
sleepens was developed using Python 3.7.8. Since development, scikit-learn has updated to a point that sleepens is not compatible with later versions of scikit-learn due to attribute name changes. At the same time, sonpy is limited to Python 3.7 to 3.9. For the sake of replicability (especially with pre-trained models provided on publication, the repository remains using the below dependencies at these versions. This also limits Python to 3.7.
numpy==1.21.6
scikit-learn==0.24.0
joblib==1.0.0
tqdm==4.55.0
xlrd==2.0.1
xlwt==1.3.0
sonpy==1.7.5
scipy==1.7.2
Should one wish to upgrade these dependencies to the latest version of scikit-learn, change all references of n_features_ to n_features_in_ in the following:
sleepens/sleepens/ml/_base_model.pysleepens/sleepens/ml/models/_gb.pysleepens/sleepens/ml/models/_tsens.pysleepens/sleepens/ml/models/_stsens.py
Furthermore, change the loss parameter in sleepens/sleepens/ml/_gb.py line 220 to 'log_loss' (which replaces 'deviance' but is algorithmically the same).
Help and Support
Documentation
Documentation for sleepens can be found here.
Issues and Questions
Issues and Questions should be posed to the issue tracker here.
Metadata
Release files for sleepens 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sleepens-1.0.3.tar.gz | 46.3 kB | Without provenance | Details for sleepens-1.0.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sleepens-1.0.3-py3-none-any.whl | Python 3 | none | any | Details for sleepens-1.0.3-py3-none-any.whl |
Total release size: 112.2 kB
Release files / sleepens-1.0.3.tar.gz
| Download URL | sleepens-1.0.3.tar.gz |
|---|---|
| Size | 46.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7ce6b65844f59e3ebb73864b4bc2aef478d7860781a0131bd68317769c6114a5
|
|
BLAKE2b-256 checksum How to use checksums |
b03f7f4017f8ee4bb5d8356e130356db3a36100b2de46658da62c726833c7f6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.7.8
|
Release files / sleepens-1.0.3-py3-none-any.whl
| Download URL | sleepens-1.0.3-py3-none-any.whl |
|---|---|
| Size | 65.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
123fe2308a8097274e53f2aad9dcd86dece9d4e5d6d56708c595ac517e2146bc
|
|
BLAKE2b-256 checksum How to use checksums |
9c4e89665434c20a54131ef2ff01fca5c3ba3703ab7d340c8821685735dbab46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.7.8
|
Security for sleepens 1.0.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.