def compute_pvalues_for_processes(self,U_matrix,chane_prob, num_bootstrapped_stats=100):
        N = U_matrix.shape[0]
        bootsraped_stats = np.zeros(num_bootstrapped_stats)

        # orsetinW = simulate(N,num_bootstrapped_stats,corr)

        for proc in range(num_bootstrapped_stats):
            # W = np.sign(orsetinW[:,proc])
            W = simulatepm(N,chane_prob)
            WW = np.outer(W, W)
            st = np.mean(U_matrix * WW)
            bootsraped_stats[proc] = N * st

        stat = N*np.mean(U_matrix)

        return float(np.sum(bootsraped_stats > stat)) / num_bootstrapped_stats
     def compute_stats_for_processes(self,samples,chane_prob):


        U,stat = self.get_statistic_multiple(samples)

        N = samples.shape[0]


        W = simulatepm(N,chane_prob)
        WW = np.outer(W, W)
        st = np.mean(U * WW)
        bootsraped_stat = N * st

        stat = N*np.mean(U)

        return stat,bootsraped_stat