예제 #1
0
 def setUpClass(cls):
     # 120 vertex graph w one community having 50 and another
     # w 70 vertices
     cls.n = [50, 70]
     cls.vcount = np.cumsum(cls.n)
     # define non-symmetric probability matrix as uneven
     cls.Pns = np.vstack(([0.6, 0.2], [0.3, 0.4]))
     # define symmetric probability as evenly weighted
     cls.Psy = np.vstack(([0.6, 0.2], [0.3, 0.4]))
     cls.Psy = symmetrize(cls.Psy)
     cls.seed = 12345
예제 #2
0
def generate_data(n, seed=1, symetric=True):
    """Generate data form dirichelet distribution with
    n numbers of points
    """
    np.random.seed(seed)

    parameters = [1, 1, 1]

    # Generate latent positions
    X = np.random.dirichlet(parameters, size=n)

    # Generate probability matrix
    P = np.dot(X, X.T)

    # Generate two adjacencies
    A1 = np.random.binomial(1, P)
    A2 = np.random.binomial(1, P)
    if symetric:
        A1 = symmetrize(A1)
        A2 = symmetrize(A2)

    return (X, A1, A2)
예제 #3
0
    def test_sbm(self):
        n = [50, 60, 70]
        vcount = np.cumsum(n)
        # define symmetric probability as evenly weighted
        Psy = np.vstack(([0.6, 0.2, 0.3], [0.3, 0.4, 0.2], [0.2, 0.8, 0.1]))
        Psy = symmetrize(Psy)
        np.random.seed(12345)
        A = sbm(n, Psy)
        for i in range(0, len(n)):
            for j in range(0, len(n)):
                irange = np.arange(vcount[i] - n[i], vcount[i])
                jrange = np.arange(vcount[j] - n[j], vcount[j])

                block = A[
                    (vcount[i] - n[i]) : vcount[i], (vcount[j] - n[j]) : vcount[j]
                ]
                if i == j:
                    block = remove_diagonal(block)
                self.assertTrue(np.isclose(np.mean(block), Psy[i, j], atol=0.02))
        self.assertTrue(is_symmetric(A))
        self.assertTrue(is_loopless(A))
        # check dimensions
        self.assertTrue(A.shape == (np.sum(n), np.sum(n)))
        pass
예제 #4
0
 def setUpClass(cls):
     cls.n = [50, 70]
     cls.Pns = np.vstack(([0.6, 0.2], [0.3, 0.4]))
     # define symmetric probability as evenly weighted
     cls.Psy = np.vstack(([0.6, 0.2], [0.3, 0.4]))
     cls.Psy = symmetrize(cls.Psy)