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)
示例#2
0
 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]))
示例#3
0
    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