Diff of /comparacion_patologi.py [000000] .. [a007e7]

Switch to unified view

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')