Esempio n. 1
0
    def calculate_phi(c_avg, c_avg_next):
        c_avg_log = np.log(c_avg)
        c_avg_next = np.log(c_avg_next)

        phi = Entropy.calculate_averages(c_avg_log, axis=0)
        phi_next = Entropy.calculate_averages(c_avg_next, axis=0)

        return phi, phi_next
Esempio n. 2
0
 def test_collect_patterns_2_stride_2(self):
     data = Entropy.read_series(os.path.join(
         self.resource_path, 'perm_en/PermEn_simple_original.txt'),
                                use_threshold=False,
                                threshold_value=None)
     freqs, mapping = self.permEn.collect_pattern_frequency(data, 2, 2)
     npt.assert_almost_equal(freqs, np.array([3 / 5, 2 / 5]), decimal=4)
Esempio n. 3
0
 def test_calculate_permen_simple_2_stride_3(self):
     data = Entropy.read_series(os.path.join(
         self.resource_path, 'perm_en/PermEn_simple_original.txt'),
                                use_threshold=False,
                                threshold_value=None)
     res = self.permEn.calculate(3, data, 3)
     self.assertAlmostEqual(res, 0, places=4, msg='incorrect PermEn')
Esempio n. 4
0
    def calculate(m, seq, r):
        c, c_next = Entropy.calculate_similarity(m, seq, r, include_self_check=True)
        number_vectors = len(seq)
        c_avg = c / number_vectors
        c_next_avg = c_next / (number_vectors - 1)

        phi, phi_next = ApproximateEntropy.calculate_phi(c_avg, c_next_avg)

        return phi - phi_next
Esempio n. 5
0
    def prepare_calculate_windowed(cls,
                                   m,
                                   file_name,
                                   use_threshold,
                                   threshold_value,
                                   window_size=None,
                                   step_size=None,
                                   calculation_type=None,
                                   dev_coef_value=None,
                                   normalize=False,
                                   stride_size=None):
        if not cls.report_cls:
            raise NotImplementedError(
                'Any Entropy should have its own report type')
        res_report = cls.report_cls()
        res_report.set_file_name(file_name)
        res_report.set_dimension(m)
        try:
            seq_list, average_rr_list, r_val_list, seq_len = Entropy.prepare_windows_calculation(
                file_name,
                calculation_type=calculation_type,
                dev_coef_value=dev_coef_value,
                use_threshold=use_threshold,
                threshold_value=threshold_value,
                window_size=window_size,
                step_size=step_size)

            en_results = []
            for i in range(len(seq_list)):
                calc_kwargs = dict(m=m, seq=seq_list[i], stride=stride_size)
                en_results.append(cls.calculate(**calc_kwargs))
        except (ValueError, AssertionError):
            res_report.set_error("Error! For file {}".format(file_name))
            return res_report

        res_report.set_seq_len(seq_len)
        res_report.set_window_size(window_size)
        res_report.set_step_size(step_size)
        res_report.set_avg_rr(average_rr_list)
        res_report.set_result_values(en_results)
        res_report.set_stride_value(1 if stride_size is None else stride_size)
        if normalize:
            res_report.set_normalized_values(
                PermutationEntropy.normalize_series(en_results, m))

        return res_report
 def calculate(m, seq, r):
     c_avg, c_avg_next = Entropy.calculate_similarity(
         m, seq, r, include_self_check=False)
     return SampleEntropy.calculate_psi(c_avg, c_avg_next)