[409112]: / produceDatabase.py

Download this file

67 lines (57 with data), 2.3 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""
Produce train set and test set based on Apnea-ECG database.
"""
import numpy as np
from ECGSegment import ECGSegment
import os
def produce_database(database_name):
"""
:param database_name:
:return None:
"""
if database_name == ["apnea-ecg", "train"] or database_name == ["apnea-ecg", "test"]:
clear_id_set = np.load(database_name[0] + "_" + database_name[1] + "_clear_id.npy")
else:
raise Exception("Error database name.")
dataset = []
RRI_set = []
RAMP_set = []
EDR_set = []
label_set = []
for id in clear_id_set:
eds = ECGSegment()
eds.global_id = id
eds.read_ecg_segment(1, database_name)
eds.read_rri_ramp_edr()
label_set.append(eds.label)
RRI_set.append(eds.RR_intervals)
RAMP_set.append(eds.R_peaks_amplitude)
EDR_set.append(eds.EDR)
dataset.append(eds)
# substract mean of RRI,RAMP and EDR, RAMP * 10, EDR * 10000
mean = np.mean(RRI_set, axis=1)
mean = np.reshape(mean, (mean.shape[0], 1))
rri_set = RRI_set - mean
rri_set = np.reshape(rri_set, (rri_set.shape[0], rri_set.shape[1], 1))
mean = np.mean(RAMP_set, axis=1)
mean = np.reshape(mean, (mean.shape[0], 1))
ramp_set = RAMP_set - mean
ramp_set = np.reshape(ramp_set, (ramp_set.shape[0], ramp_set.shape[1], 1))
ramp_set = ramp_set * 100
mean = np.mean(EDR_set, axis=1)
mean = np.reshape(mean, (mean.shape[0], 1))
edr_set = EDR_set - mean
edr_set = np.reshape(edr_set, (edr_set.shape[0], edr_set.shape[1], 1))
edr_set = edr_set * 10000
rri_amp_edr_set = np.concatenate([rri_set, ramp_set, edr_set], axis=2)
if not os.path.exists("data/"):
os.makedirs("data/")
np.save("data/" + database_name[0] + "_" + database_name[1] + "_clear_dataset.npy", np.array(dataset))
np.save("data/" + database_name[0] + "_" + database_name[1] + "_clear_rri.npy", np.array(rri_set))
np.save("data/" + database_name[0] + "_" + database_name[1] + "_clear_ramp.npy", np.array(ramp_set))
np.save("data/" + database_name[0] + "_" + database_name[1] + "_clear_edr.npy", np.array(edr_set))
np.save("data/" + database_name[0] + "_" + database_name[1] + "_clear_rri_ramp_edr.npy", np.array(rri_amp_edr_set))
np.save("data/" + database_name[0] + "_" + database_name[1] + "_clear_label.npy", np.array(label_set))
if __name__ == '__main__':
# produce_database(["apnea-ecg", "train"])
produce_database(["apnea-ecg", "test"])