Skip to content

zabler/medipy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

147 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

medipy

Code Collection for Medical Data Processing and Analysis in Python

Version License

This Python package provides a broad collection of code for processing and analyzing medical data (like ECG, EEG, ACC, EMG, GYRO, ..). Every modul reflects a model, algorithm or concept published in a scientific journal (or similiar) and it is named after its main author. The publications are cited in the docstring of each modul.

Implemented Code

These are the current modules which are implemented in this package:

  • R-Peak-Detection for 1D ECG Signals by Hamilton
  • RR-Interval-Error-Detection for 1D ECG Signals by Lipponen

Installation

You can install the package using pip:

pip install medipy

Usage

You can use any function of this package by either importing the complete package

import medipy as mp
r_peaks= mp.hamilton.detect_r_peaks(ecg, sampling_rate)

or single modules

from medipy import hamilton
r_peaks= hamilton.detect_r_peaks(ecg, sampling_rate)

Example

import math
from medipy import hamilton
from medipy import lipponen
from matplotlib import pyplot as plt
from scipy.misc import electrocardiogram

# Load ECG Data using scipy
ecg = electrocardiogram()
sample_rate = 360

# Detect R-Peaks
ecg_preprocessed = hamilton.preprocessing(ecg, sample_rate)
r_peaks = hamilton.detect_r_peaks(ecg, ecg_preprocessed, sample_rate, least_distance=0.2, th_coefficient=0.189, th_search_back=0.3)
r_peaks_refined = hamilton.refine_r_peaks(ecg, r_peaks, refine_samples=30)

# Calculate RR-Intervals
rr_intervals = [math.ceil(r_peaks[k] - r_peaks[k - 1]) for k in range(1, len(r_peaks))]

# Detect RR-Errors
rr_errors, ectopic_intervals, missed_intervals, extra_intervals, long_short_intervals = lipponen.rr_interval_error_detection(rr_intervals)

# Print Results
print("R-Peaks: ", len(r_peaks))
print("RR-Intervals: ", len(rr_intervals))
print("RR-Errors: ", sum(rr_errors))
print("Ectopic Intervals: ", sum(ectopic_intervals))
print("Missed Intervals: ", sum(missed_intervals))
print("Extra Intervals: ", sum(extra_intervals))
print("Long Short Intervals: ", sum(long_short_intervals))

# Plot
fig = plt.figure()
plt.plot(ecg)
plt.plot(r_peaks, ecg[r_peaks], 'rx')
plt.plot(r_peaks_refined, ecg[r_peaks_refined], 'go')
plt.show()

Contribution

If you want to support the project or contribute to the code, feel free to contact.

License

This project is licensed under the MIT License - see the License file for details.

About

Code Collection for Medical Data Processing and Analysis in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages