From 45f28d82f6e206194fea36f587362e3037b51877 Mon Sep 17 00:00:00 2001 From: Antoine Castillon <antoine.castillon@ens-lyon.fr> Date: Sun, 13 Mar 2022 15:00:54 +0000 Subject: [PATCH] Upload New File --- test_social_networks.py | 164 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 test_social_networks.py diff --git a/test_social_networks.py b/test_social_networks.py new file mode 100644 index 0000000..556679d --- /dev/null +++ b/test_social_networks.py @@ -0,0 +1,164 @@ +import time +import quick +import quick_del_edges as quick_del +import quick_red_aware +import tools +import greedy_qclq_mining as greed_qclq +import summarization +import random as rd + +def load_components(filename): + + file = open(filename, "r") + + ligne = file.readline().rstrip('\n\r') + file.readline().rstrip('\n\r') + + components = [] + + while ligne: + components.append([int(i) for i in ligne.split()]) + ligne = file.readline().rstrip('\n\r') + file.readline().rstrip('\n\r') + + file.close() + + return components + +def sub_graph_vertices(components,outside_comp): + + sommets = set(components[0]) + last_taken = [0 for i in range(len(components))] + last_taken_outside = 0 + + for i in range(3000): + if i%2==0: + j = (i//2)%(len(components)-1)+1 + ind_j = last_taken[j] + if ind_j < 36 and ind_j < len(components[j]): + last_taken[j] += 1 + sommets.add(components[j][ind_j]) + else: + sommets.add(outside_comp[last_taken_outside]) + last_taken_outside += 1 + + return sommets + + +gamma = 0.9 +min_size = 20 + +seed = 1000 +rd.seed(seed) + +G_tot = tools.load_graph("graph_database\\Social_networks\\facebook_combined.txt") +components = load_components("graph_database\\Social_networks\\components_fb.txt") +inside_comp = set() +for c in components: + inside_comp = inside_comp | set(c) +outside_comp = list(set(G_tot.nodes) - inside_comp) + +vertex_list = sub_graph_vertices(components, outside_comp) +G_tot.remove_nodes_from(set(G_tot.nodes) - vertex_list) +vertex_list = list(vertex_list) +rd.shuffle(vertex_list) + +bool_append = False + +file_vis = open("results\\Social_networks\\fb_vis.txt",("a" if bool_append else "w")) +file = open("results\\Social_networks\\fb.txt",("a" if bool_append else "w")) + +if not bool_append: + file_vis.write("Graph type = fb subgraph, n in [|1,2000|] \n\r") + file_vis.write("t_baseline_true, comp_baseline_true, t_baseline_false, comp_baseline_false, t_del_edge_true, comp_del_edge_true, t_del_edge_false, comp_del_edges_false, t_red_aware_true, comp_red_aware_true, t_red_aware_false, comp_red_aware_false, t_greedy_true, comp_greedy_true, t_greedy_false, comp_greedy_false, |G|, seed \n\r") + + file.write("Graph type = fb subgraph, n dans [|1,200|] \n\r") + file.write("t_baseline_true, comp_baseline_true, t_baseline_false, comp_baseline_false, t_del_edge_true, comp_del_edge_true, t_del_edge_false, comp_del_edges_false, t_red_aware_true, comp_red_aware_true, t_red_aware_false, comp_red_aware_false, t_greedy_true, comp_greedy_true, t_greedy_false, comp_greedy_false, |G|, seed \n\r") + + +for j in range(0,1900,25): + + print(j) + + G = G_tot.copy() + G.remove_nodes_from(vertex_list[j:]) + + G2 = G.copy() + t0 = time.time() + tools.reduction(G2,gamma,min_size,edge_red=True) + t_reduction_true = time.time()-t0 + + G3 = G.copy() + t0 = time.time() + tools.reduction(G3,gamma,min_size,edge_red=False) + t_reduction_false = time.time()-t0 + + # Quick ############################################################### + + t0 = time.time() + Qclqs = tools.only_maximal(quick.quick_quasi_cliques(G2,gamma,min_size)) + t_quick_true = t_reduction_true + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_quick_true = summarization.summary_size(H,remaining_edges) + + t0 = time.time() + tot_Qclqs = tools.only_maximal(quick.quick_quasi_cliques(G3,gamma,min_size)) + t_quick_false = t_reduction_false + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_quick_false = summarization.summary_size(H,remaining_edges) + + # Quick_del_edges ##################################################### + + t0 = time.time() + Qclqs = tools.only_maximal(quick_del.quick_quasi_cliques(G2.copy(),gamma,min_size)) + t_del_edges_true = t_reduction_true + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_del_edges_true = summarization.summary_size(H,remaining_edges) + vis_del_edges_true = tools.measure_visibility(Qclqs,tot_Qclqs) + + t0 = time.time() + tot_Qclqs = tools.only_maximal(quick_del.quick_quasi_cliques(G3.copy(),gamma,min_size)) + t_del_edges_false = t_reduction_false + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_del_edges_false = summarization.summary_size(H,remaining_edges) + vis_del_edges_false = tools.measure_visibility(Qclqs,tot_Qclqs) + + # Quick_red_aware ##################################################### + + t0 = time.time() + Qclqs = tools.only_maximal(quick_red_aware.quick_quasi_cliques(G2,gamma,min_size)) + t_red_aware_true = t_reduction_true + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_red_aware_true = summarization.summary_size(H,remaining_edges) + vis_red_aware_true = tools.measure_visibility(Qclqs,tot_Qclqs) + + t0 = time.time() + tot_Qclqs = tools.only_maximal(quick_red_aware.quick_quasi_cliques(G3,gamma,min_size)) + t_red_aware_false = t_reduction_false + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_red_aware_false = summarization.summary_size(H,remaining_edges) + vis_red_aware_false = tools.measure_visibility(Qclqs,tot_Qclqs) + + # Greedy ############################################################## + + t0 = time.time() + Qclqs = tools.only_maximal(greed_qclq.greedy_qclq(G2,gamma,min_size)) + t_greedy_true = t_reduction_true + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_greedy_true = summarization.summary_size(H,remaining_edges) + vis_greedy_true = tools.measure_visibility(Qclqs,tot_Qclqs) + + t0 = time.time() + tot_Qclqs = tools.only_maximal(greed_qclq.greedy_qclq(G3,gamma,min_size)) + t_greedy_false = t_reduction_false + time.time() - t0 + H,remaining_edges = summarization.DSS_summarization(G,Qclqs) + size_greedy_false = summarization.summary_size(H,remaining_edges) + vis_greedy_false = tools.measure_visibility(Qclqs,tot_Qclqs) + + + file.write("{0} \t {1} \t {2} \t {3} \t {4} \t {5} \t {6} \t {7} \t {8} \t {9} \t {10} \t {11} \t {12} \t {13} \t {14} \t {15} \t {16} \t {17} \n\r".format(t_quick_true, size_quick_true, t_quick_false, size_quick_false, t_del_edges_true, size_del_edges_true, t_del_edges_false, size_del_edges_false, t_red_aware_true, size_red_aware_true, t_red_aware_false, size_red_aware_false, t_greedy_true, size_greedy_true, t_greedy_false, size_greedy_false, len(G.nodes)+len(G.edges), j)) + file_vis.write("{0} \t {1} \t {2} \t {3} \t {4} \t {5} \t {6} \t {7} \n\r".format(vis_del_edges_true, vis_del_edges_false, vis_red_aware_true, vis_red_aware_false, vis_greedy_true, vis_greedy_false, len(G.nodes)+len(G.edges), j)) + + +file_vis.close() +file.close() \ No newline at end of file -- GitLab