Source code for test.test_gcm_algorithm
from gcmpy import *
import unittest
import time
[docs]class GCM_algorithm_Test(unittest.TestCase):
[docs] def test_manual_single_topology(self):
# valid input data for manual entry
motif_sizes = [2]
jdd = {'(1,)' : 0.2, '(2,)' : 0.5, '(3,)' : 0.1, '(5,)' : 0.2}
# create degree distribution
DegreeDistObj = JDD_manual(jdd, motif_sizes)
# draw a sample
n_vertices : int = NETWORK_SIZE
jds = DegreeDistObj.sample_JDS(n_vertices)
# create graph
build_functions = [clique_motif]
g = GCM_algorithm(motif_sizes, build_functions).random_clustered_graph(jds)
[docs] def test_marginal_JDD_single_topology(self):
motif_sizes = [2] # 2-cliques
powerlaw_exponent = 2.5 # powerlaw_exponent
fp_array = [power_law(powerlaw_exponent)] # array of marginals
kmax = 150000 # largest degree
kmin = 1 # smallest degree
# create joint degree distribution object
DegreeDistObj = JDD_marginals(fp_array, motif_sizes, [(kmin,kmax)])
# draw a sample
n_vertices : int = NETWORK_SIZE
jds = DegreeDistObj.sample_JDS(n_vertices)
# create graph
build_functions = [clique_motif]
g = GCM_algorithm(motif_sizes, build_functions).random_clustered_graph(jds)
[docs] def test_split_k_two_topologies(self):
motif_sizes = [2,3]
probs = [0.8,0.2] # probability that an edge is a 2- or 3-clique
powerlaw_exponent = 2.5
fp = power_law(powerlaw_exponent) # overall degree distribution
kmax = 1000
kmin = 1
DegreeDistObj = JDD_split_K_model(fp, motif_sizes, probs, kmin, kmax)
n_vertices : int = NETWORK_SIZE
jds = DegreeDistObj.sample_JDS(n_vertices)
# create graph
build_functions = [clique_motif, clique_motif]
g = GCM_algorithm(motif_sizes, build_functions).random_clustered_graph(jds)
[docs]class ResampleJDS_Test(unittest.TestCase):
[docs] def test_manual_single_topology(self):
# valid input data for manual entry
motif_sizes = [2]
jdd = {'(1,)' : 0.2, '(2,)' : 0.5, '(3,)' : 0.1, '(5,)' : 0.2}
# create degree distribution
DegreeDistObj = JDD_manual(jdd, motif_sizes)
# draw a sample
n_vertices : int = NETWORK_SIZE
jds = DegreeDistObj.sample_JDS(n_vertices)
# create graph
num_networks = 10
build_functions = [clique_motif]
g = ResampleJDS(num_networks, motif_sizes, build_functions).random_clustered_graph(jds)