Gabrock94 / Pysiology

A Python package for physyological's signals processing
https://pysiology.rtfd.io
GNU General Public License v3.0
61 stars 6 forks source link
ecg ecg-signal eda electrophysiological-data electrophysiology emg emg-signal gsr physiological-signals physiology python signal-processing

PySiology

GitHub release PyPI PyPI pyversions PyPI status PyPI downloads Downloads Documentation Status DOI

Introduction

PySiology is a Python package used to analyze Physiological signals. With pysiology you can easily analyze:

Installation

PySiology can be installed using pip:

pip install pysiology

or downloading / cloning the repository and, from the root folder of the project, running:

python setup.py install

Updating the package

To update the package via pip, you can use:

pip install --user --upgrade pysiology

Documentation

You can check the full documentation here: https://pysiology.rtfd.io

WARNING

Sample data are not downloaded when using Pip. Please download the samples manually from the repository (https://github.com/Gabrock94/Pysiology/tree/master/share/data) and load them using

import pickle

with open("path/to/sample/data.pkl",'rb') as f:
          data = pickle.load(f)

Example

import matplotlib.pyplot as plt #used for visualization purposes in this tutorial.

import pysiology
print(pysiology.__version__)

ECG = pysiology.sampledata.loadsampleECG() #load the sample ECG Signal
EMG = pysiology.sampledata.loadsampleEMG() #load the sample EMG Signal
GSR = pysiology.sampledata.loadsampleEDA() #load the sample GSR Signal

sr = 1000 #samplerate in Hz

#We can define the event in the way we prefer. 
#In this example I will use a 2 x nEvent matrix, containing the name of the event and the onset time.
events = [["A",10],
          ["B",20]]
eventLenght = 8 #lenght in seconds we want to use to compute feature estimation
results = {} #we will store the results in a dict for simplicity.
for event in events:
    startSample = sr * event[1] #samplerate of the signal multiplied by the onset of the event in s
    endSample = startSample + (sr * eventLenght) #Final sample to use for estimation
    results[event[0]] = {} #initialize the results
    results[event[0]]["ECG"] = pysiology.electrocardiography.analyzeECG(ECG[startSample:endSample],sr) #analyze the ECG signal
    results[event[0]]["EMG"] = pysiology.electromyography.analyzeEMG(EMG[startSample:endSample],sr) #analyze the EMG signal
    results[event[0]]["GSR"] = pysiology.electrodermalactivity.analyzeGSR(GSR[startSample:endSample],sr) #analyze the GSR signal

Cite

If you use PySiology, please cite:

Gabrieli G., Azhari A., Esposito G. (2020) PySiology: A Python Package for Physiological Feature Extraction. In: Esposito A., Faundez-Zanuy M., Morabito F., Pasero E. (eds) Neural Approaches to Dynamics of Signal Exchanges. Smart Innovation, Systems and Technologies, vol 151. Springer, Singapore

Requirements

Contacts

Feel free to contact me for questions, suggestions or to give me advice as well at: giulio.gabrieli@iit.it

Scientific Publications that used pysiology

Coffee?

Buy Me a Coffee at ko-fi.com