Пример #1
0
def check_qrs_detection():
    from wfdbtools import rdsamp, rdann
    import subprocess
    test_record = '../samples/format212/100'
    qrslead = 2
    
    data, info = rdsamp(test_record)

    qrsdetector = QRSDetector(data, info['samp_freq'])
    
    qrspeaks = qrsdetector.qrs_detect(qrslead)
    print 'Found %s QRS complexes' %(len(qrspeaks))
    qrsdetector.write_ann(os.path.abspath(test_record) + '.test')

    ref_qrs = rdann(os.path.abspath(test_record), 'atr')
    print ref_qrs.shape
    print qrspeaks[:10]
    print ref_qrs[:10, :1]

    pylab.plot(data[:, qrslead])
    for r in qrspeaks:
        pylab.plot(r, 1.5, 'xr')
    for r in ref_qrs[:, 1]:
        pylab.plot(r, 1.8, 'ob')
    pylab.show()
    
    print subprocess.check_output(['bxb','-r', os.path.abspath(test_record), '-a', 'atr', 'test'])
Пример #2
0
def check_qrs_detection():
    from wfdbtools import rdsamp, rdann
    import subprocess
    test_record = '../samples/format212/100'
    qrslead = 2

    data, info = rdsamp(test_record)

    qrsdetector = QRSDetector(data, info['samp_freq'])

    qrspeaks = qrsdetector.qrs_detect(qrslead)
    print 'Found %s QRS complexes' % (len(qrspeaks))
    qrsdetector.write_ann(os.path.abspath(test_record) + '.test')

    ref_qrs = rdann(os.path.abspath(test_record), 'atr')
    print ref_qrs.shape
    print qrspeaks[:10]
    print ref_qrs[:10, :1]

    pylab.plot(data[:, qrslead])
    for r in qrspeaks:
        pylab.plot(r, 1.5, 'xr')
    for r in ref_qrs[:, 1]:
        pylab.plot(r, 1.8, 'ob')
    pylab.show()

    print subprocess.check_output(
        ['bxb', '-r',
         os.path.abspath(test_record), '-a', 'atr', 'test'])
Пример #3
0
def rdsamp_test():
    """test wfdbtools.rdsamp"""
    data, info = rdsamp(testrecord)
    assert info['samp_freq'] == 360
    assert info['signal_names'] == ['MLII', 'V5']
    assert len(data) == 650000
    assert data[0, 2:].tolist() == [-0.145, -0.065]
    assert data[-1, 2:].tolist() == [-1.28, 0.]
    assert int(data[-1, 1]) == 1805

    data, info = rdsamp(testrecord, 10, 20)
    assert len(data) == 3600
    assert data[0, 2:].tolist() == [-0.39, -0.275]
    assert data[-1, 2:].tolist() == [-0.42, -0.4]

    data, info = rdsamp(testrecord, 10, interval=10)
    assert len(data) == 3600
    assert data[0, 2:].tolist() == [-0.39, -0.275]
    assert data[-1, 2:].tolist() == [-0.42, -0.4]
Пример #4
0
def rdsamp_test():
    """test wfdbtools.rdsamp"""
    data, info = rdsamp(testrecord)
    assert info['samp_freq'] == 360
    assert info['signal_names'] == ['MLII', 'V5']
    assert len(data) == 650000
    assert data[0, 2:].tolist() == [-0.145, -0.065]
    assert data[-1, 2:].tolist() == [-1.28, 0.]
    assert int(data[-1, 1]) == 1805
    
    data, info = rdsamp(testrecord, 10, 20)
    assert len(data) == 3600
    assert data[0,2:].tolist() == [-0.39, -0.275]
    assert data[-1, 2:].tolist() == [-0.42, -0.4]

    data, info = rdsamp(testrecord, 10, interval=10)
    assert len(data) == 3600
    assert data[0,2:].tolist() == [-0.39, -0.275]
    assert data[-1, 2:].tolist() == [-0.42, -0.4]
Пример #5
0
def test():
    from wfdbtools import rdsamp
    record = '../samples/format212/100'

    data, info = rdsamp(record, 0, 30)

    print 'loaded data', data.shape
    print 'Info', info

    ecg = ECG(data, info)
    qrslead = 2  # data is an array with cols 0 and 1 representing times and 2 and 3 being two signals

    qrspeaks = ecg.get_qrspeaks(qrslead)

    print 'found qrspeaks', len(qrspeaks)

    pylab.plot(ecg.data[:, qrslead])
    for r in qrspeaks:
        pylab.plot(r, data[r, qrslead], 'xr')
    pylab.show()
Пример #6
0
def test():
    from wfdbtools import rdsamp
    record = '../samples/format212/100'
    
    data, info = rdsamp(record, 0, 30)
    
    print 'loaded data', data.shape
    print 'Info', info

    ecg = ECG(data, info)
    qrslead = 2 # data is an array with cols 0 and 1 representing times and 2 and 3 being two signals
    
    qrspeaks = ecg.get_qrspeaks(qrslead)

    print 'found qrspeaks', len(qrspeaks)
 
    pylab.plot(ecg.data[:,qrslead])
    for r in qrspeaks:
        pylab.plot(r, data[r, qrslead], 'xr')
    pylab.show()
Пример #7
0
'''
Created on Jan 27, 2012

@author: sergio
'''
#!/usr/bin/env python
from wfdbtools import rdsamp, rdann, plot_data
from pprint import pprint
import pylab
from scipy import signal
import numpy

###Senal
record = '104'
data, info = rdsamp(record, 0, 6)
ann = rdann(record, 'atr', 0, 6)

time = data[:, 1]  #in seconds.
sig1 = data[:, 2]
sig2 = data[:, 3]

ann1 = ann[:, 0]
ann2 = ann[:, 1]

Fs = info['samp_freq']

######################
# FILTER
# a[0]*y[n] = b[0]*x[n] + b[1]*x[n-1] + ... + b[nb]*x[n-nb]
#                         - a[1]*y[n-1] - ... - a[na]*y[n-na]
Пример #8
0
class CustReader:
    """
    Reader for the custom ecg format
    """
    def __init__(self):
        self.data = None
        self.info = None

    def read(filename):
        infofile = os.path.splitext(filename)[0] + '.inf'
        data = scipy.load(filename)
        info = yaml.load(open(infofile))


if __name__ == '__main__':
    from wfdbtools import rdsamp, rdann

    app = wx.App(False)
    controller = Controller(app)

    testrec = '../samples/format212/100'

    data, info = rdsamp(testrec, 0, 60)
    data = data[:, [2, 3]]  # remove first 2 cols

    ann = rdann(testrec, 'atr', 0, 60)
    ann = ann[:, [0, 2]]  # remove second col

    controller.load(data, info, ann)
    app.MainLoop()
Пример #9
0
'''
Created on Jan 27, 2012

@author: sergio
'''
#!/usr/bin/env python
from wfdbtools import rdsamp, rdann, plot_data
from pprint import pprint
import pylab
from scipy import signal
import numpy

###Senal
record  = '104'
data, info = rdsamp(record, 0, 6)
ann = rdann(record, 'atr', 0, 6)

time = data[:, 1] #in seconds.
sig1 = data[:, 2]
sig2 = data[:, 3]

ann1 = ann[:, 0]
ann2 = ann[:, 1]

Fs = info['samp_freq']

######################
# FILTER
# a[0]*y[n] = b[0]*x[n] + b[1]*x[n-1] + ... + b[nb]*x[n-nb]
#                         - a[1]*y[n-1] - ... - a[na]*y[n-na]
Пример #10
0
Created on Jan 27, 2012

@author: sergio
'''
from wfdbtools import rdsamp, rdann
import numpy
from buffer import buffer as cola
from pylab import plot, show, subplot, stem, axis
import hrvarray
import time as timer

### Senal
record  = '104'
start = 210
stop = 320
data, info = rdsamp(record, start, stop)
ann = rdann(record, 'atr', start, stop)

time = data[:, 1] #in seconds.
signal1 = data[:, 2]
signal2 = data[:, 3]

ann1 = ann[:, 0]
ann2 = ann[:, 1]

Fs = info['samp_freq']
### Parametros
 
Nwindow = int(0.15 * Fs) # 150ms

###
Пример #11
0
    #subplot(212)
    #plot(time,umbral,'r')
    #plot(time, signal_integrated, 'k')
    #axis([178, 188, 0, 66000000])
    #    show()
    return qrs

if __name__ == '__main__':
    ### Parametros
    record = '104'
    start = 0  #0#175
    stop = 1000  #40#190

    ### Senal
    data, info = rdsamp(record, start, stop)
    ann = rdann(record, 'atr', start, stop)

    time = data[:, 1]  #in seconds.110358
    signal1 = data[:, 2]
    signal2 = data[:, 3]

    ann1 = ann[:, 0]
    ann2 = ann[:, 1]

    Fs = info['samp_freq']
    print "Fs: " + str(Fs)
    print "Tiempo total de la captura: " + str(info['samp_count'] / float(Fs))

    qrs = detector(signal1, Fs, ann1, time, start, stop)
    coincidencias = 0
Пример #12
0
'''
Created on Feb 15, 2012

@author: sergio
'''
from wfdbtools import rdsamp, rdann, plot_data
import numpy
from buffer import buffer as cola
from pylab import plot, show, subplot, stem

### Senal
record = '104'
data, info = rdsamp(record, 201, 520)
ann = rdann(record, 'atr', 201, 520)

time = data[:, 1]  #in seconds.
signal1 = data[:, 2]
signal2 = data[:, 3]

plot(time, signal1)
show()
Пример #13
0
        self.data = None
        self.info = None
        
    def read(filename):
        infofile = os.path.splitext(filename)[0] + '.inf'
        data = scipy.load(filename)
        info = yaml.load(open(infofile))




if __name__ == '__main__':
    from  wfdbtools import rdsamp, rdann
    
    app = wx.App(False)
    controller = Controller(app)

    testrec = '../samples/format212/100'

    data, info = rdsamp(testrec, 0, 60)
    data = data[:, [2,3]] # remove first 2 cols
    
    ann = rdann(testrec, 'atr', 0, 60)
    ann = ann[:, [0,2]] # remove second col

    controller.load(data, info, ann)
    app.MainLoop()



import sys
import regex as re
import pandas as pd
import gotstools as gt

from pylab import *
import wfdbtools as wfdb


def vmagnitude(v):
    """
    Returns the magnitude of a tridimensional vector signal.
    :param v: (ndarray-like)

    :return: The magnitude of the signal.
    """
    return np.sqrt(v[:, 0]**2 + v[:, 1]**2 + v[:, 2]**2)


seq_data, seq_info = wfdb.rdsamp('../examples/data/EcgBeatDetection/100',
                                 start=0,
                                 end=10)
t, s = seq_data[:, 1], seq_data[:, 2]

cfg = {
    "pre_processing": "☲ 5 50 360",
    "connotation": "† 0.01",
    "expression": "\+-"
}
matches = gt.ssts(s, cfg, report='full')
Пример #15
0
'''
Created on Feb 15, 2012

@author: sergio
'''
from wfdbtools import rdsamp, rdann, plot_data
import numpy
from buffer import buffer as cola
from pylab import plot, show, subplot, stem

### Senal
record  = '104'
data, info = rdsamp(record, 201, 520)
ann = rdann(record, 'atr', 201, 520)

time = data[:, 1] #in seconds.
signal1 = data[:, 2]
signal2 = data[:, 3]

plot(time,signal1)
show()