from apgl.graph import SparseGraph from apgl.generator.BarabasiAlbertGenerator import BarabasiAlbertGenerator from apgl.generator.SmallWorldGenerator import SmallWorldGenerator from apgl.generator.KroneckerGenerator import KroneckerGenerator from apgl.generator.ConfigModelGenerator import ConfigModelGenerator from random import sample from math import log import numpy as np vertices = 10000 def pgraph(l, name): s = sample(range(len(l)), int(len(l) / 100.)) with open(name, "w") as fh: for i in s: friends = [(f, len(l[f])) for f in l[i]] line = str(i) + "\t" + "\t".join("\t".join(map(str, a)) for a in friends) fh.write(line + "\n") def ba(): graph = SparseGraph(vertices) generator = BarabasiAlbertGenerator(10, 10) graph = generator.generate(graph) l, _ = graph.adjacencyList() pgraph(l, "b-a.txt") def sw(): # slow graph = SparseGraph(vertices) generator = SmallWorldGenerator(0.3, 50) graph = generator.generate(graph) l, _ = graph.adjacencyList() pgraph(l, "sw.txt") def kk(): init = SparseGraph(4) init[0, 1] = 1 init[0, 2] = 1 init[0, 3] = 1 for i in range(4): init[i, i] = 1 k = int(log(vertices, 4)) + 1 generator = KroneckerGenerator(init, k) graph = generator.generate() l, _ = graph.adjacencyList() pgraph(l, "kk.txt") def cm(): with open("../facebook_analysis/coachella_degrees.txt") as fh: l = [int(line.strip()) for line in fh] l = np.array(l) n = len(l) graph = SparseGraph(n) generator = ConfigModelGenerator(l) graph = generator.generate(graph) l, _ = graph.adjacencyList() pgraph(l, "cm.txt") cm()