|
a |
|
b/comparacion_patologi.py |
|
|
1 |
# -*- coding: utf-8 -*- |
|
|
2 |
""" |
|
|
3 |
Matrix de caracteristicas de 5 registros PATOLOGICOS |
|
|
4 |
Created on Thu May 3 07:09:12 2018 |
|
|
5 |
|
|
|
6 |
@author: Kevin Machado G. |
|
|
7 |
Ref: |
|
|
8 |
[1] https://www.datacamp.com/community/blog/python-pandas-cheat-sheet |
|
|
9 |
""" |
|
|
10 |
import matplotlib.pyplot as plt |
|
|
11 |
|
|
|
12 |
import numpy as np |
|
|
13 |
# Data manipulation |
|
|
14 |
import pandas as pd |
|
|
15 |
# Own Library |
|
|
16 |
import ppfunctions_1 as ppf |
|
|
17 |
|
|
|
18 |
import os |
|
|
19 |
import scipy.io.wavfile as wf |
|
|
20 |
|
|
|
21 |
# ----------------------------------------------------------------------------- |
|
|
22 |
print('importing all training-a data base') |
|
|
23 |
# Looking for heart sounds data absolute path |
|
|
24 |
l1=os.path.abspath('Data Base HS\\pathologic\\2.1.wav') |
|
|
25 |
l1=l1.replace('\\','/') |
|
|
26 |
l2=os.path.abspath('Data Base HS\\pathologic\\2.3.wav') |
|
|
27 |
l2=l2.replace('\\','/') |
|
|
28 |
l3=os.path.abspath('Data Base HS\\pathologic\\3.2.wav') |
|
|
29 |
l3=l3.replace('\\','/') |
|
|
30 |
l4=os.path.abspath('Data Base HS\\pathologic\\4.3.wav') |
|
|
31 |
l4=l4.replace('\\','/') |
|
|
32 |
l5=os.path.abspath('Data Base HS\\pathologic\\4.5.wav') |
|
|
33 |
l5=l5.replace('\\','/') |
|
|
34 |
|
|
|
35 |
# reading file |
|
|
36 |
Fs1, data1 = wf.read(l1) |
|
|
37 |
Fs2, data2 = wf.read(l2) |
|
|
38 |
Fs3, data3 = wf.read(l3) |
|
|
39 |
Fs4, data4 = wf.read(l4) |
|
|
40 |
Fs5, data5 = wf.read(l5) |
|
|
41 |
|
|
|
42 |
# Clear paths |
|
|
43 |
del l1, l2, l3, l4, l5 |
|
|
44 |
|
|
|
45 |
# |
|
|
46 |
|
|
|
47 |
duration1 = 1/Fs1*np.size(data1) |
|
|
48 |
duration2 = 1/Fs2*np.size(data2) |
|
|
49 |
duration3 = 1/Fs3*np.size(data3) |
|
|
50 |
duration4 = 1/Fs4*np.size(data4) |
|
|
51 |
duration5 = 1/Fs5*np.size(data5) |
|
|
52 |
|
|
|
53 |
vt1 = np.linspace(0,duration1,np.size(data1)) # Vector time 1 |
|
|
54 |
vt2 = np.linspace(0,duration2,np.size(data2)) # Vector time 3 |
|
|
55 |
vt3 = np.linspace(0,duration3,np.size(data3)) # Vector time 5 |
|
|
56 |
vt4 = np.linspace(0,duration4,np.size(data4)) # Vector time 7 |
|
|
57 |
vt5 = np.linspace(0,duration5,np.size(data5)) # Vector time 9 |
|
|
58 |
|
|
|
59 |
data1 = ppf.vec_nor(data1) |
|
|
60 |
data2 = ppf.vec_nor(data2) |
|
|
61 |
data3 = ppf.vec_nor(data3) |
|
|
62 |
data4 = ppf.vec_nor(data4) |
|
|
63 |
data5 = ppf.vec_nor(data5) |
|
|
64 |
|
|
|
65 |
pcgFFT1, vTfft1 = ppf.fft_k_N(data1, Fs1, 2000) |
|
|
66 |
pcgFFT2, vTfft2 = ppf.fft_k_N(data2, Fs2, 2000) |
|
|
67 |
pcgFFT3, vTfft3 = ppf.fft_k_N(data3, Fs3, 2000) |
|
|
68 |
pcgFFT4, vTfft4 = ppf.fft_k_N(data4, Fs4, 2000) |
|
|
69 |
pcgFFT5, vTfft5 = ppf.fft_k_N(data5, Fs5, 2000) |
|
|
70 |
|
|
|
71 |
idx1 = (np.abs(vt1-5)).argmin() # Find the index of time vector in 10 seconds |
|
|
72 |
idx2 = (np.abs(vt2-5)).argmin() # Find the index of time vector in 10 seconds |
|
|
73 |
idx3 = (np.abs(vt3-5)).argmin() # Find the index of time vector in 10 seconds |
|
|
74 |
idx4 = (np.abs(vt4-5)).argmin() # Find the index of time vector in 10 seconds |
|
|
75 |
idx5 = (np.abs(vt5-5)).argmin() # Find the index of time vector in 10 seconds |
|
|
76 |
# |
|
|
77 |
# ----------------------------------------------------------------------------- |
|
|
78 |
# Energy of vibratory signal spectrum |
|
|
79 |
# 1. 0-5Hz, 2. 5-25Hz; 3. 25-120Hz; 4. 120-240Hz; 5. 240-500Hz; 6. 500-1000Hz; 7. 1000-2000Hz |
|
|
80 |
EVS1 = ppf.E_VS(pcgFFT1, vTfft1, 'percentage') |
|
|
81 |
EVS2 = ppf.E_VS(pcgFFT2, vTfft2, 'percentage') |
|
|
82 |
EVS3 = ppf.E_VS(pcgFFT3, vTfft3, 'percentage') |
|
|
83 |
EVS4 = ppf.E_VS(pcgFFT4, vTfft4, 'percentage') |
|
|
84 |
EVS5 = ppf.E_VS(pcgFFT5, vTfft5, 'percentage') |
|
|
85 |
|
|
|
86 |
# Showing Results in Pandas |
|
|
87 |
data = {'P1': np.round(EVS1),'P2': np.round(EVS2), 'P3': np.round(EVS3), 'P4': np.round(EVS4), 'P5': np.round(EVS5)} |
|
|
88 |
print('Registros Patologicos') |
|
|
89 |
df=pd.DataFrame(data,index=['Total (%)','0-5Hz','5-25Hz','25-120Hz','120-240Hz','240-500Hz','500-1kHz','1k-2kHz'],columns=['P1','P2', 'P3', 'P4', 'P5']) |
|
|
90 |
print (df) |
|
|
91 |
|
|
|
92 |
# df.to_excel('pato_5.xlsx') # writing to excel |
|
|
93 |
|
|
|
94 |
plt.figure(1) |
|
|
95 |
|
|
|
96 |
plt.subplot(5,1,1) |
|
|
97 |
plt.title('Transformada de Fourier') |
|
|
98 |
plt.plot(vTfft1, pcgFFT1,'r') |
|
|
99 |
|
|
|
100 |
plt.subplot(5,1,2) |
|
|
101 |
plt.plot(vTfft2, pcgFFT2,'r') |
|
|
102 |
|
|
|
103 |
plt.subplot(5,1,3) |
|
|
104 |
plt.plot(vTfft3, pcgFFT3,'r') |
|
|
105 |
|
|
|
106 |
plt.subplot(5,1,4) |
|
|
107 |
plt.plot(vTfft4, pcgFFT4,'r') |
|
|
108 |
|
|
|
109 |
plt.subplot(5,1,5) |
|
|
110 |
plt.plot(vTfft5, pcgFFT5,'r') |