'node2vec_emb_folder': f"./saved_data/node2vec_emb/{dataset_name}_stability", 'sdne_emb_folder': f"./saved_data/sdne_emb/{dataset_name}_stability", } params = SettingParam(**params) # params = read_config_file(filepath="./stability_configuration.ini", config_task="stability") is_reconstruction_mAP = True k_query = [100, 200, 500, 1000, 2000, 4000, 6000, 8000, 10000] # ==================== Data ========================= graphs, idx2node = read_dynamic_graph(folder_path=params.dataset_folder, limit=None, convert_to_idx=True) print("Origin graphs:") for i, g in enumerate(graphs): print_graph_stats(g, i, end="\t") print(f"Isolate nodes: {nx.number_of_isolates(g)}") # draw_graph(g, limit_node=25) # ========= DynGEM =========== if params.is_dyge: print("=============== DynGEM ============") # -------- Training ---------- dy_embeddings = load_dy_embeddings(params.dyge_emb_folder) if is_reconstruction_mAP: for i, g in enumerate(graphs): reconstruction_prec = reconstruction_precision_k( embedding=dy_embeddings[i], graph=g, k_query=k_query) print(reconstruction_prec) # ============== Node2Vec ============
def save_embedding(self, filepath): if self.embedding is None: self.embedding = self.get_embedding() with open(filepath, 'wb') as fp: pickle.dump(self.embedding, fp) def load_embedding(self, filepath): with open(filepath, 'rb') as fp: self.embedding = pickle.load(fp) return self.embedding if __name__ == "__main__": # G = get_graph_from_file(filename="../data/email-eu/email-Eu-core.txt") G = nx.gnm_random_graph(n=40, m=100, seed=6) print_graph_stats(G) pos = nx.spring_layout(G, seed=6) draw_graph(G, limit_node=50, pos=pos) # print(G.edges) embedding_dim = 4 g_hidden_df, hidden_G = preprocessing_graph_for_link_prediction( G=G, drop_node_percent=0.2, edge_rate=0.1) ge = TStaticGE(G=hidden_G, embedding_dim=embedding_dim, hidden_dims=[16, 8], l2=1e-5, alpha=0.2, beta=10,