Spaces:
Runtime error
Runtime error
import numpy as np | |
from scipy.signal import resample | |
from baseline_wander_removal import bw_remover | |
import pywt | |
import matplotlib.pyplot as plt | |
def normalize(sig): | |
return 2*((sig-np.min(sig))/(np.max(sig)-np.min(sig))) | |
def visualize_sig(sig): | |
fig, ax = plt.subplots(3, 1, figsize=(10, 10)) | |
ax[0].plot(sig[0][:500]) | |
ax[1].plot(sig[1][:500]) | |
ax[2].plot(sig[2][:500]) | |
plt.show() | |
def prepare_all_leads(path): | |
if path.endswith(".txt"): | |
sig = np.loadtxt(path, delimiter=',', unpack=True) | |
elif path.endswith(".npy"): | |
sig = np.load(path, allow_pickle=True) | |
x = pywt.wavedec(sig[0], 'db6', level=2)[0] | |
y = pywt.wavedec(sig[1], 'db6', level=2)[0] | |
z = pywt.wavedec(sig[2], 'db6', level=2)[0] | |
# visualize_sig([x, y, z]) | |
return x[None, :], y[None, :], z[None, :] | |
# return sig | |
freq = sig.shape[1] // 60 | |
sig[0] = bw_remover(freq, sig[0]) | |
sig[1] = bw_remover(freq, sig[1]) | |
sig[2] = bw_remover(freq, sig[2]) | |
# visualize_sig(sig) | |
sig_length = freq*2 | |
total_samples = sig[0].shape[0] // sig_length | |
lead_1 = [] | |
lead_2 = [] | |
lead_3 = [] | |
for i in range(total_samples): | |
x = sig[0][i*sig_length:(i+1)*sig_length] | |
x = pywt.wavedec(x, 'db6', level=1)[0] | |
x = resample(x, 259) | |
x = normalize(x) | |
lead_1.append(x) | |
y = sig[1][i*sig_length:(i+1)*sig_length] | |
y = pywt.wavedec(y, 'db6', level=1)[0] | |
y = resample(y, 259) | |
y = normalize(y) | |
lead_2.append(y) | |
z = sig[2][i*sig_length:(i+1)*sig_length] | |
z = pywt.wavedec(z, 'db6', level=1)[0] | |
z = resample(z, 259) | |
z = normalize(z) | |
lead_3.append(z) | |
return np.asarray(lead_1), np.asarray(lead_2), np.asarray(lead_3) | |