Exemple #1
0
    def test_peakentropy_infodyn_kernel(self):
        self.entropies_infodyn_kernel = []
        for timelag in range(self.delay - 5, self.delay + 6):
            print("Results for timelag of: ", str(timelag))
            [_, x_hist, y_hist] = autoreg_datagen(
                self.delay, timelag, self.samples, self.sub_samples
            )

            # Normalize data
            # Not explicitly required as this is done by infodynamics package
            # if setProperty("NORMALISE", "true" is called), but good practice
            # for general example.

            x_hist_norm = preprocessing.scale(x_hist, axis=1)
            y_hist_norm = preprocessing.scale(y_hist, axis=1)

            # Calculate transfer entropy according to infodynamics method:

            result_infodyn, _ = te_info(
                "infodynamics.jar",
                "kernel",
                x_hist_norm[0],
                y_hist_norm[0],
                **{"kernel_width": 0.1}
            )
            self.entropies_infodyn_kernel.append(result_infodyn)
            print("Infodynamics TE result: %.4f bits" % result_infodyn)

        print(self.entropies_infodyn_kernel)

        maxval = max(self.entropies_infodyn_kernel)
        # The maximum lags with one sample
        delayedval = self.entropies_infodyn_kernel[self.delay]
        self.assertEqual(maxval, delayedval)
Exemple #2
0
    def test_peakentropy_infodyn_kraskov_noautoembed(self):
        self.entropies_infodyn_kraskov = []
        for timelag in range(self.delay - 5, self.delay + 6):
            print("Results for timelag of: ", str(timelag))
            [x_pred, x_hist,
             y_hist] = autoreg_datagen(self.delay, timelag, self.samples,
                                       self.sub_samples)
            # Normalize data
            # Not explicitly required as this is done by infodyns package if
            # setProperty("NORMALISE", "true" is called), but good practice
            # for general example.

            x_hist_norm = preprocessing.scale(x_hist, axis=1)
            y_hist_norm = preprocessing.scale(y_hist, axis=1)

            # Calculate transfer entropy according to infodynamics method:

            result_infodyn, [significance, properties] = \
                te_info('infodynamics.jar', 'kraskov',
                        x_hist_norm[0], y_hist_norm[0],
                        test_significance=False,
                        auto_embed=False)
            self.entropies_infodyn_kraskov.append(result_infodyn)
            print("Infodynamics TE result: %.4f bits" % result_infodyn)

            print(properties)
            print(significance)

        print(self.entropies_infodyn_kraskov)

        maxval = max(self.entropies_infodyn_kraskov)
        # The maximum lags with one sample
        delayedval = self.entropies_infodyn_kraskov[self.delay]
        self.assertEqual(maxval, delayedval)
    def test_peakentropy_infodyn_kraskov_autoembed(self):
        self.entropies_infodyn_kraskov = []
        for timelag in range(self.delay - 5, self.delay + 6):
            print("Results for timelag of: ", str(timelag))
            [x_pred, x_hist, y_hist] = autoreg_datagen(
                self.delay, timelag, self.samples, self.sub_samples
            )
            # Normalize data
            # Not explicitly required as this is done by infodyns package if
            # setProperty("NORMALISE", "true" is called), but good practice
            # for general example.

            x_hist_norm = preprocessing.scale(x_hist, axis=1)
            y_hist_norm = preprocessing.scale(y_hist, axis=1)

            # Calculate transfer entropy according to infodynamics method:

            result_infodyn, [
                [te_significance, mi_significance],
                properties,
                mutualinfo,
            ] = te_info(
                "infodynamics.jar",
                "kraskov",
                x_hist_norm[0],
                y_hist_norm[0],
                test_significance=False,
                auto_embed=True,
            )
            self.entropies_infodyn_kraskov.append(result_infodyn)
            print("Infodynamics TE result: %.4f bits" % result_infodyn)

            print(properties)
            print(te_significance)
            print(mi_significance)
            print(mutualinfo)

        print(self.entropies_infodyn_kraskov)

        maxval = max(self.entropies_infodyn_kraskov)
        # The maximum lags with one sample
        delayedval = self.entropies_infodyn_kraskov[self.delay]
        self.assertEqual(maxval, delayedval)