def multiscale_permutation_entropy(x, m=3, delay=1, scale=20): """Return multiscale permutation entropy of the given signal Args: :param x: 1-dim list Return: the multiscale permutation entropy of x (returned type: list of float) """ return ent.multiscale_permutation_entropy(x, m=m, delay=delay, scale=scale)
def test_multiScalePermutationEntropy(self): np.testing.assert_array_equal(np.round(ent.multiscale_permutation_entropy(TS_SAMPLE_ENTROPY, 3, 5, 2), 4), np.array([2.4699, 2.5649]))
def calculate_rri_nonlinear_statistics(self, rri, diff_rri, diff2_rri, suffix=''): # Empty dictionary rri_nonlinear_statistics = dict() # Non-linear RR statistics if len(rri) > 1: rri_nonlinear_statistics['rri_approximate_entropy' + suffix] = \ self.safe_check(pyeeg.ap_entropy(rri, M=2, R=0.1*np.std(rri))) rri_nonlinear_statistics['rri_sample_entropy' + suffix] = \ self.safe_check(ent.sample_entropy(rri, sample_length=2, tolerance=0.1*np.std(rri))[0]) rri_nonlinear_statistics['rri_multiscale_entropy' + suffix] = \ self.safe_check(ent.multiscale_entropy(rri, sample_length=2, tolerance=0.1*np.std(rri))[0]) rri_nonlinear_statistics['rri_permutation_entropy' + suffix] = \ self.safe_check(ent.permutation_entropy(rri, m=2, delay=1)) rri_nonlinear_statistics['rri_multiscale_permutation_entropy' + suffix] = \ self.safe_check(ent.multiscale_permutation_entropy(rri, m=2, delay=1, scale=1)[0]) rri_nonlinear_statistics['rri_fisher_info' + suffix] = fisher_info( rri, tau=1, de=2) hjorth_parameters = hjorth(rri) rri_nonlinear_statistics['rri_activity' + suffix] = hjorth_parameters[0] rri_nonlinear_statistics['rri_complexity' + suffix] = hjorth_parameters[1] rri_nonlinear_statistics['rri_morbidity' + suffix] = hjorth_parameters[2] rri_nonlinear_statistics['rri_hurst_exponent' + suffix] = pfd(rri) rri_nonlinear_statistics['rri_svd_entropy' + suffix] = svd_entropy( rri, tau=2, de=2) rri_nonlinear_statistics['rri_petrosian_fractal_dimension' + suffix] = pyeeg.pfd(rri) else: rri_nonlinear_statistics['rri_approximate_entropy' + suffix] = np.nan rri_nonlinear_statistics['rri_sample_entropy' + suffix] = np.nan rri_nonlinear_statistics['rri_multiscale_entropy' + suffix] = np.nan rri_nonlinear_statistics['rri_permutation_entropy' + suffix] = np.nan rri_nonlinear_statistics['rri_multiscale_permutation_entropy' + suffix] = np.nan rri_nonlinear_statistics['rri_fisher_info' + suffix] = np.nan rri_nonlinear_statistics['rri_activity' + suffix] = np.nan rri_nonlinear_statistics['rri_complexity' + suffix] = np.nan rri_nonlinear_statistics['rri_morbidity' + suffix] = np.nan rri_nonlinear_statistics['rri_hurst_exponent' + suffix] = np.nan rri_nonlinear_statistics['rri_svd_entropy' + suffix] = np.nan rri_nonlinear_statistics['rri_petrosian_fractal_dimension' + suffix] = np.nan # Non-linear RR difference statistics if len(diff_rri) > 1: rri_nonlinear_statistics['diff_rri_approximate_entropy' + suffix] = \ self.safe_check(pyeeg.ap_entropy(diff_rri, M=2, R=0.1*np.std(rri))) rri_nonlinear_statistics['diff_rri_sample_entropy' + suffix] = \ self.safe_check(ent.sample_entropy(diff_rri, sample_length=2, tolerance=0.1*np.std(rri))[0]) rri_nonlinear_statistics['diff_rri_multiscale_entropy' + suffix] = \ self.safe_check(ent.multiscale_entropy(diff_rri, sample_length=2, tolerance=0.1*np.std(rri))[0]) rri_nonlinear_statistics['diff_rri_permutation_entropy' + suffix] = \ self.safe_check(ent.permutation_entropy(diff_rri, m=2, delay=1)) rri_nonlinear_statistics['diff_rri_multiscale_permutation_entropy' + suffix] = \ self.safe_check(ent.multiscale_permutation_entropy(diff_rri, m=2, delay=1, scale=1)[0]) rri_nonlinear_statistics['diff_rri_fisher_info' + suffix] = fisher_info(diff_rri, tau=1, de=2) hjorth_parameters = hjorth(diff_rri) rri_nonlinear_statistics['diff_rri_activity' + suffix] = hjorth_parameters[0] rri_nonlinear_statistics['diff_rri_complexity' + suffix] = hjorth_parameters[1] rri_nonlinear_statistics['diff_rri_morbidity' + suffix] = hjorth_parameters[2] rri_nonlinear_statistics['diff_rri_hurst_exponent' + suffix] = pfd(diff_rri) rri_nonlinear_statistics['diff_rri_svd_entropy' + suffix] = svd_entropy(diff_rri, tau=2, de=2) rri_nonlinear_statistics['diff_rri_petrosian_fractal_dimension' + suffix] = pyeeg.pfd(diff_rri) else: rri_nonlinear_statistics['diff_rri_approximate_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_sample_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_multiscale_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_permutation_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_multiscale_permutation_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_fisher_info' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_activity' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_complexity' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_morbidity' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_hurst_exponent' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_svd_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff_rri_petrosian_fractal_dimension' + suffix] = np.nan # Non-linear RR difference difference statistics if len(diff2_rri) > 1: rri_nonlinear_statistics['diff2_rri_shannon_entropy' + suffix] = \ self.safe_check(ent.shannon_entropy(diff2_rri)) rri_nonlinear_statistics['diff2_rri_approximate_entropy' + suffix] = \ self.safe_check(pyeeg.ap_entropy(diff2_rri, M=2, R=0.1*np.std(rri))) rri_nonlinear_statistics['diff2_rri_sample_entropy' + suffix] = \ self.safe_check(ent.sample_entropy(diff2_rri, sample_length=2, tolerance=0.1*np.std(rri))[0]) rri_nonlinear_statistics['diff2_rri_multiscale_entropy' + suffix] = \ self.safe_check(ent.multiscale_entropy(diff2_rri, sample_length=2, tolerance=0.1*np.std(rri))[0]) rri_nonlinear_statistics['diff2_rri_permutation_entropy' + suffix] = \ self.safe_check(ent.permutation_entropy(diff2_rri, m=2, delay=1)) rri_nonlinear_statistics['diff2_rri_multiscale_permutation_entropy' + suffix] = \ self.safe_check(ent.multiscale_permutation_entropy(diff2_rri, m=2, delay=1, scale=1)[0]) rri_nonlinear_statistics['diff2_rri_fisher_info' + suffix] = fisher_info(diff2_rri, tau=1, de=2) hjorth_parameters = hjorth(diff2_rri) rri_nonlinear_statistics['diff2_rri_activity' + suffix] = hjorth_parameters[0] rri_nonlinear_statistics['diff2_rri_complexity' + suffix] = hjorth_parameters[1] rri_nonlinear_statistics['diff2_rri_morbidity' + suffix] = hjorth_parameters[2] rri_nonlinear_statistics['diff2_rri_hurst_exponent' + suffix] = pfd(diff2_rri) rri_nonlinear_statistics['diff2_rri_svd_entropy' + suffix] = svd_entropy(diff2_rri, tau=2, de=2) rri_nonlinear_statistics['diff2_rri_petrosian_fractal_dimension' + suffix] = pyeeg.pfd(diff2_rri) else: rri_nonlinear_statistics['diff2_rri_shannon_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_approximate_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_sample_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_multiscale_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_permutation_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_multiscale_permutation_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_fisher_info' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_activity' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_complexity' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_morbidity' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_hurst_exponent' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_svd_entropy' + suffix] = np.nan rri_nonlinear_statistics['diff2_rri_petrosian_fractal_dimension' + suffix] = np.nan return rri_nonlinear_statistics