def load_data(len_packet=25):
    # LABELED DATASET
    dataset = np.load('./data/morfology.npy', allow_pickle=True).item()

    list_ecg = dataset['signal']
    list_peaks = dataset['peaks']
    list_labels = dataset['label']

    list_of_packets = []
    for (sig, peak, label) in zip(list_ecg, list_peaks, list_labels):
        sig = np.subtract(sig, np.mean(sig))
        if label == 2:
            label = 'qRs_4'
        if label == 14:
            label = 'QS_5'
        if label == 10:
            label = 'rRs_8'
        if label == 5:
            label = 'RS_9'
        if label not in [12, 11, 1, 18, 6, 15, -1]:
            list_of_packets.append(fb.LabeledPacket(np.array(sig),
                                                    peak, label))

    real_m_model = fb.ECG.build_from_packets(list_of_packets)
    list_ecg = real_m_model.build_packets(len_packet)
    list_ecg = real_m_model.packets
    labels = []
    for packet in list_ecg:
        labels.append(packet.label)
    return list_ecg, labels
def main():
    dataset = np.load('./data/morfology.npy').item()
    n = 600
    list_ecg = dataset['signal'][:n]
    list_peaks = dataset['peaks'][:n]
    list_labels = dataset['label'][:n]
    list_of_packets = []
    for (sig, peak, label) in zip(list_ecg, list_peaks, list_labels):
        sig == np.subtract(sig, np.mean(sig))
        list_of_packets.append(fb.LabeledPacket(np.array(sig), peak, label))

    my_ecg = fb.ECG.build_from_packets(list_of_packets)
    len_packet = 35
    list_ecg = my_ecg.build_packets(len_packet)
    list_ecg = my_ecg.packets
    return list_ecg
Example #3
0
def load_new_data(len_packet=25):
    # LABELED DATASET
    dataset = loadmat('data/morfologies_2019.mat')

    list_ecg = dataset['cell_data']['beats']
    list_peaks = dataset['cell_data']['peaks']
    list_labels = dataset['cell_data']['morfology']

    list_of_packets = []
    for (sig, peak, label) in zip(list_ecg, list_peaks, list_labels):
        sig = np.subtract(sig, np.mean(sig))
        list_of_packets.append(fb.LabeledPacket(np.array(sig), peak, label))

    real_m_model = fb.ECG.build_from_packets(list_of_packets)
    list_ecg = real_m_model.build_packets(len_packet)
    list_ecg = real_m_model.packets

    return list_ecg, list_labels
Example #4
0
    b, a = butter_bandpass(lowcut, highcut, fs, order=order, analog=analog)
    y = lfilter(b, a, data)
    return y


dataset = np.load('./data/morfology.npy').item()
n = 600
fs = 360
list_ecg = dataset['signal'][:n]
list_peaks = dataset['peaks'][:n]
list_labels = dataset['label'][:n]
list_labels, b = pd.factorize(list_labels)
list_of_packets = []
for (sig, peak, label) in zip(list_ecg, list_peaks, list_labels):
    sig == np.subtract(sig, np.mean(sig))
    list_of_packets.append(fb.LabeledPacket(np.array(sig), peak, label))

my_ecg = fb.ECG.build_from_packets(list_of_packets)
len_packet = 35
list_ecg = my_ecg.build_packets(len_packet)
list_ecg = [x.input_signal for x in my_ecg.packets]
df = pd.DataFrame(list_ecg).values
df = df.T

#filters = dict()
#filters['T'] = (.1, .20)
#filters['P'] = (.15, .30)
#filters['QRS'] = (.3, .5)
#filters['ALL'] = (.70, .9)
#
#analog_filters = dict()
def main():
    dataset = np.load('./data/morfology.npy').item()
    n = 60
    list_ecg = dataset['signal'][:n]
    list_peaks = dataset['peaks'][:n]
    list_labels = dataset['label'][:n]

    #    # Wavelet Transform delineation
    #    for s in list_ecg:
    #        s = np.array(s)
    #        sig = signal.resample(s, 1000)
    #        Pwav, QRS, Twav = wav.signalDelineation(sig,1000)
    #        if(len(QRS)>0):
    #            QRS=QRS[0]
    #            plt.plot(sig[QRS[0]:QRS[-1]])
    #            plt.show()
    #            plt.close()

    list_of_packets = []
    for (sig, peak, label) in zip(list_ecg, list_peaks, list_labels):
        sig == np.subtract(sig, np.mean(sig))
        list_of_packets.append(fb.LabeledPacket(np.array(sig), peak, label))

    my_ecg = fb.ECG.build_from_packets(list_of_packets)
    len_packet = 35
    list_ecg = my_ecg.build_packets(len_packet)
    list_ecg = my_ecg.packets
    #    ecg_signal = electrocardiogram()
    ##    ecg_signal = ecg_signal - np.mean(ecg_signal)
    (ts, filtered, rpeaks, templates_ts, templates, heart_rate_ts,
     heart_rate) = ecg.ecg(signal=a, sampling_rate=960, show=False)

    #    my_ecg = fb.ECG(input_signal=filtered, indicators=rpeaks,
    #                    is_filtered=False)
    #    list_ecg = my_ecg.build_packets(25, fb.DefaultPacket)
    #
    #    pbounds = {'a': (3, 10), 'b': (30, 100),
    #               'c': (3, 10), 'd': (30, 100),
    #               'e': (10, 60),'f': (10, 60)}
    #
    #    norm_pbounds = {'a': (0.1, 0.3), 'b': (30, 100),
    #                    'c': (0.1, 0.3), 'd': (30, 100),
    #                    'e': (1, 50),'f': (1, 50)}

    #    parameter = dict()
    #    parameter['values'] = list(zip(np.linspace(1, 10, 15),
    #                               np.linspace(1, 10, 15)))
    #    parameter['lenght'] = list(zip(np.linspace(len_packet*0.6, len_packet*6, 10),
    #                               np.linspace(len_packet*0.6, len_packet*6, 10)))
    #    parameter['cut'] = list(zip(np.linspace(0, 60, 7),
    #                            np.linspace(0, 60, 7)))
    #
    #
    #
    #    l = []
    #    for i in np.linspace(1, 10, 10):
    #        for j in np.linspace(1, 10, 10):
    #            l.append((i, j))
    #
    #    r_parameter = dict()
    #    r_parameter['values'] = l
    #    r_parameter['lenght'] = list(zip(np.linspace(len_packet*0.6, len_packet*6, 5),
    #                               np.linspace(len_packet*0.6, len_packet*6, 5)))
    #    r_parameter['cut'] = list(zip(np.linspace(0, 60, 7),
    #                                   np.linspace(0, 60, 7)))
    #
    #    template_gaussian = fb.Gaussian(parameter)
    #    template_mexican = fb.MexicanHat(parameter)
    #    template_rayleigh = fb.Rayleigh(r_parameter)
    #    template_left_rayleigh = fb.LeftInverseRayleigh(parameter)
    #    template_right_rayleigh = fb.RightInverseRayleigh(parameter)
    #
    #    list_of_templates = [template_gaussian, template_mexican,
    #                         template_rayleigh, template_left_rayleigh,
    #                         template_right_rayleigh]
    list_of_templates = utils.get_default_templates(len_packet)
    #    list_of_templates = [template_rayleigh]

    lst_of_packets = utils.mp_signal_apply(utils.consume_packet_helper,
                                           list_ecg, list_of_templates)

    #    lst_of_packets = utils.serial_signal_apply(utils.consume_packet,
    #                                           list_ecg, list_of_templates)
    my_ecg.packets = lst_of_packets
    return my_ecg