process ecg data by neurokit
下面展示一些 内联代码片
。
// A code block
// An highlighted block
# -*- coding: utf-8 -*-
"""
Created on
@author: Administrator
"""
import neurokit as nk
import numpy as np
import pandas as pd
from scipy.io import loadmat
import os
import sys
from neurokit import ecg_process
import matplotlib.pyplot as plt
def extract_feature(ecg_path,sampling_rate):
feature_path = r'F:\emotionpdf\Data\ECGLFeature\1'
signal_dir = os.listdir(ecg_path)
# j = 0
for i in signal_dir:
signal_Path = ecg_path + '\\' + i #拼接完整路径
ecg_signal = np.load(signal_Path)
print(signal_Path)
print(type(ecg_signal))
print(np.shape(ecg_signal))
ecg_feature = ecg_process(ecg=ecg_signal, sampling_rate=sampling_rate,
quality_model='default',
hrv_features=['time', 'frequency','nonlinear'])
print(type(ecg_feature))
data = ecg_feature['ECG']['HRV']
HRV = [data['CVSD'],
data['DFA_1'] if 'DFA_1' in data else 0, data['DFA_2'] if 'DFA_2' in data else 0,
data['Entropy_Multiscale_AUC'], data['Entropy_SVD'], data['Entropy_Spectral_VLF'],
data['Entropy_Spectral_LF'], data['Entropy_Spectral_HF'],
data['FD_Higushi'], data['FD_Petrosian'], data['Fisher_Info'],
data['HF'], data['HF/P'], data['HFn'], data['LF'], data['LF/HF'], data['LF/P'], data['LFn'],
data['RMSSD'], data['Sample_Entropy'], data['Shannon'], data['Shannon_h'], data['Total_Power'],
data['Triang'],
data['ULF'], data['VHF'], data['VLF'], data['cvNN'], data['madNN'], data['mcvNN'], data['meanNN'],
data['medianNN'], data['n_Artifacts'],
data['pNN20'], data['pNN50'], data['sdNN'],
ecg_feature['ECG']['Average_Signal_Quality']]
for x in range(len(HRV)):
if np.isnan(HRV[x]) | np.isinf(HRV[x]):
HRV[x] = 0
print(type(HRV))
HRV_feature = np.array(HRV).reshape(1, -1)
print(type(HRV_feature))
np.save('%s.npy'%(feature_path+'\\'+ i), HRV_feature)
# j += 1
print(feature_path+'\\'+ i)
#main函数
if __name__=='__main__':
ecg_path = r'F:\emotionpdf\Data\ECGLData\1'
feature_path = r'F:\emotionpdf\Data\ECGLFeature\1'
# extract_feature(ecg_path,128)
f = np.load(r'F:\emotionpdf\Data\ECGData\1\0.npy')
print(type(f))
# feature, info = ecg_process(ecg = f,sampling_rate=128)
k = np.load(r'F:\emotionpdf\Data\ECGLData\1\0.npy')
print(type(k))
# feature = ecg_process(ecg = k,sampling_rate=128)
df = loadmat(r'F:\emotionpdf\Data\Data_Preprocessed\Data_Preprocessed_P01.mat')
print(df.keys())
joined_data = df['joined_data']
j = joined_data[0,0][:,14:16]
np.array(j).reshape(2,-1)
print(type(j))
print(np.shape(j))
print(j[0])
# feature = ecg_process(ecg =j,sampling_rate=128)