Diff of /ecgtoHR/create_dataset.py [000000] .. [c0487b]

Switch to unified view

a b/ecgtoHR/create_dataset.py
1
import os
2
import glob
3
import wfdb as wf
4
import matplotlib.pyplot as plt
5
from tqdm import tqdm
6
import numpy as np
7
8
from scipy.signal import resample
9
from sklearn.preprocessing import StandardScaler
10
from sklearn.model_selection import train_test_split
11
12
import torch
13
14
from utils import dist_transform,getWindow
15
16
def data_preprocess(args):
17
    
18
    PATH = args.data_path
19
    all_paths = sorted(glob.glob(PATH + '/*.dat'))
20
    all_paths = [paths[:-4] for paths in all_paths]
21
22
    windowed_data,windowed_beats = getWindow(all_paths)
23
24
    scaler = StandardScaler()
25
    mod_windowed_data = []
26
    dist_tran_data = []
27
28
    for window in range(len(windowed_data)):
29
        
30
        beats = ((windowed_beats[window] * 500/360).astype(int))
31
        if(len(beats) != 0):
32
            mod_windowed_data.append(scaler.fit_transform(resample(windowed_data[window],5000).reshape(-1,1)))
33
            dist_tran_data.append(dist_transform(5000,beats))
34
35
    X_train,X_test,y_train,y_test = train_test_split(np.array(mod_windowed_data)[:,:,0],np.array(dist_tran_data)[:,:,0],test_size = 0.1, random_state = 42)
36
37
    X_train_toTensor = torch.Tensor(X_train).type(torch.float)
38
    print(X_train_toTensor.size())
39
    X_test_toTensor = torch.Tensor(X_test).type(torch.float)
40
    print(X_test_toTensor.size())
41
    y_train_toTensor = torch.Tensor(y_train).type(torch.float)
42
    print(y_train_toTensor.size())
43
    y_test_toTensor = torch.Tensor(y_test).type(torch.float)
44
    print(y_test_toTensor.size())
45
46
    if not(os.path.exists('data')):
47
        os.mkdir('data')
48
49
    torch.save(X_train_toTensor, "data/ecgtoHR_train_data.pt")
50
    torch.save(y_train_toTensor, "data/ecgtoHR_train_labels.pt")
51
    torch.save(X_test_toTensor, "data/ecgtoHR_test_data.pt")
52
    torch.save(y_test_toTensor, "data/ecgtoHR_test_labels.pt")
53