-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcomparacion_patologi.py
110 lines (90 loc) · 3.53 KB
/
comparacion_patologi.py
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# -*- coding: utf-8 -*-
"""
Matrix de caracteristicas de 5 registros PATOLOGICOS
Created on Thu May 3 07:09:12 2018
@author: Kevin Machado G.
Ref:
[1] https://www.datacamp.com/community/blog/python-pandas-cheat-sheet
"""
import matplotlib.pyplot as plt
import numpy as np
# Data manipulation
import pandas as pd
# Own Library
import ppfunctions_1 as ppf
import os
import scipy.io.wavfile as wf
# -----------------------------------------------------------------------------
print('importing all training-a data base')
# Looking for heart sounds data absolute path
l1=os.path.abspath('Data Base HS\\pathologic\\2.1.wav')
l1=l1.replace('\\','/')
l2=os.path.abspath('Data Base HS\\pathologic\\2.3.wav')
l2=l2.replace('\\','/')
l3=os.path.abspath('Data Base HS\\pathologic\\3.2.wav')
l3=l3.replace('\\','/')
l4=os.path.abspath('Data Base HS\\pathologic\\4.3.wav')
l4=l4.replace('\\','/')
l5=os.path.abspath('Data Base HS\\pathologic\\4.5.wav')
l5=l5.replace('\\','/')
# reading file
Fs1, data1 = wf.read(l1)
Fs2, data2 = wf.read(l2)
Fs3, data3 = wf.read(l3)
Fs4, data4 = wf.read(l4)
Fs5, data5 = wf.read(l5)
# Clear paths
del l1, l2, l3, l4, l5
#
duration1 = 1/Fs1*np.size(data1)
duration2 = 1/Fs2*np.size(data2)
duration3 = 1/Fs3*np.size(data3)
duration4 = 1/Fs4*np.size(data4)
duration5 = 1/Fs5*np.size(data5)
vt1 = np.linspace(0,duration1,np.size(data1)) # Vector time 1
vt2 = np.linspace(0,duration2,np.size(data2)) # Vector time 3
vt3 = np.linspace(0,duration3,np.size(data3)) # Vector time 5
vt4 = np.linspace(0,duration4,np.size(data4)) # Vector time 7
vt5 = np.linspace(0,duration5,np.size(data5)) # Vector time 9
data1 = ppf.vec_nor(data1)
data2 = ppf.vec_nor(data2)
data3 = ppf.vec_nor(data3)
data4 = ppf.vec_nor(data4)
data5 = ppf.vec_nor(data5)
pcgFFT1, vTfft1 = ppf.fft_k_N(data1, Fs1, 2000)
pcgFFT2, vTfft2 = ppf.fft_k_N(data2, Fs2, 2000)
pcgFFT3, vTfft3 = ppf.fft_k_N(data3, Fs3, 2000)
pcgFFT4, vTfft4 = ppf.fft_k_N(data4, Fs4, 2000)
pcgFFT5, vTfft5 = ppf.fft_k_N(data5, Fs5, 2000)
idx1 = (np.abs(vt1-5)).argmin() # Find the index of time vector in 10 seconds
idx2 = (np.abs(vt2-5)).argmin() # Find the index of time vector in 10 seconds
idx3 = (np.abs(vt3-5)).argmin() # Find the index of time vector in 10 seconds
idx4 = (np.abs(vt4-5)).argmin() # Find the index of time vector in 10 seconds
idx5 = (np.abs(vt5-5)).argmin() # Find the index of time vector in 10 seconds
#
# -----------------------------------------------------------------------------
# Energy of vibratory signal spectrum
# 1. 0-5Hz, 2. 5-25Hz; 3. 25-120Hz; 4. 120-240Hz; 5. 240-500Hz; 6. 500-1000Hz; 7. 1000-2000Hz
EVS1 = ppf.E_VS(pcgFFT1, vTfft1, 'percentage')
EVS2 = ppf.E_VS(pcgFFT2, vTfft2, 'percentage')
EVS3 = ppf.E_VS(pcgFFT3, vTfft3, 'percentage')
EVS4 = ppf.E_VS(pcgFFT4, vTfft4, 'percentage')
EVS5 = ppf.E_VS(pcgFFT5, vTfft5, 'percentage')
# Showing Results in Pandas
data = {'P1': np.round(EVS1),'P2': np.round(EVS2), 'P3': np.round(EVS3), 'P4': np.round(EVS4), 'P5': np.round(EVS5)}
print('Registros Patologicos')
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'])
print (df)
# df.to_excel('pato_5.xlsx') # writing to excel
plt.figure(1)
plt.subplot(5,1,1)
plt.title('Transformada de Fourier')
plt.plot(vTfft1, pcgFFT1,'r')
plt.subplot(5,1,2)
plt.plot(vTfft2, pcgFFT2,'r')
plt.subplot(5,1,3)
plt.plot(vTfft3, pcgFFT3,'r')
plt.subplot(5,1,4)
plt.plot(vTfft4, pcgFFT4,'r')
plt.subplot(5,1,5)
plt.plot(vTfft5, pcgFFT5,'r')