kind = sys.argv[1] attack = {} for d in range(1, 4): for m in range(3, 4): for p in range(1, 4): v = "d" + str(d) + "m" + str(m) + "p" + str(p) attack[v] = {} attack[v]['dc'] = defaultdict(float) attack[v]['ec'] = defaultdict(float) attack[v]['bc'] = defaultdict(float) for j in sample: g = sim.graph_by_time(sim.retrieve_graph(kind, d, m, p, j), t) strategies = {} strategies['dc'] = sorted(nx.degree_centrality(g).items(), key=lambda x: x[1], reverse=True)[0:a] strategies['ec'] = sorted(nx.eigenvector_centrality(g).items(), key=lambda x: x[1], reverse=True)[0:a] strategies['bc'] = sorted(nx.betweenness_centrality(g).items(), key=lambda x: x[1], reverse=True)[0:a] for strategy in strategies: cg = copy.deepcopy(g) for i in range(0,a): if (attack[v][strategy][i]): attack[v][strategy][i] += sim.average_inverse_geodesic(cg) else: attack[v][strategy][i] = sim.average_inverse_geodesic(cg) id, degree = strategies[strategy][i]
import simlib as sim import sys import pickle import random degree = {} n = 1001 sample = random.sample(range(1,500),100) kind = sys.argv[1] for d in range(1, 4): for m in range(1, 6): for p in range(1, 4): v = "d" + str(d) + "m" + str(m) + "p" + str(p) # degree array by time degree[v] = {} for j in range(1, sample): g = sim.retrieve_graph(kind, d, m, p, j) for t in range(1, n): degree[v][t] = [] gt = sim.graph_by_time(g, t) for node in gt.nodes(): degree[v][t].append(g.degree(node)) print "Done with: " + v with open("./serial/time_degree_" + kind + "_" + v + ".obj", 'wb') as objfile: pickle.dump(degree[v], objfile)
names[name] = [tmp[2]] print ("loaded names...") for name in names: haig = {} hcmp = {} for t in range(0,attack): haig[t] = 0.0 hcmp[t] = 0.0 random.shuffle(names[name]) for _ in range(0,sample): j = names[name].pop() G = nx.read_gpickle("graphs/"+name+"_"+j) g = sim.graph_by_time(G, time) nds = sorted(nx.degree_centrality(g).items(), key=lambda x: x[1], reverse=True)[0:attack] # print nds print ("\nWorking on "+j) for i in range(0, attack): geo = sim.average_inverse_geodesic(g) haig[i] += geo # hcmp[i] += nx.connected_component_subgraphs(g)[0].number_of_nodes() nid, degree = nds[i] g.remove_node(nid) sys.stdout.write("-") #+str(geo)) sys.stdout.flush() for t in range(0, attack): haig[t] = float(haig[t])/sample hcmp[t] = float(hcmp[t])/sample