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