def test_features(): g = create_graph(2, GraphType=nx.DiGraph) # print(attraction_basin(g)) # print(flow(g)) motif_level = 4 # with silence_stdout(): # example_feature(g) # clustering_coefficient(g) # k_core(g) # node_page_rank(g) # bfs_moments(g) # print(m_res) # gpu_motif = motif(g,level=motif_level,gpu=True) # print(len(gpu_motif),'X',len(gpu_motif[0])) # print(gpu_motif) # print(gpu_motif == m_res) # G = nx.random_regular_graph(20,100,seed=123456).to_directed() G = nx.erdos_renyi_graph(30, 0.3, directed=True, seed=None) # nx.write_gpickle(G,"test.pickle") # G = g # assert type(G) is nx.DiGraph logger = PrintLogger("My Logger") feature = MotifsNodeCalculator(G, level=motif_level, logger=logger) feature.build() mx = feature.to_matrix(mtype=np.matrix, should_zscore=False) # print(mx[0]) m_res = motif(G, level=motif_level, gpu=False) # pretify_motif_results(m_res) gpu_res = motif(G, level=motif_level, gpu=True) pretify_motif_results([m_res, gpu_res]) # pretify_motif_results([mx.tolist(),m_res,gpu_res]) m_res_arr = np.asarray(m_res) gpu_res_arr = np.asarray(gpu_res) print(mx.shape, m_res_arr.shape) mx = gpu_res_arr # np_diff = mx - m_res_arr np_diff = mx - m_res_arr print('diff avg:', np.average(np_diff[np.abs(np_diff) > 1])) print('number of elements:', np.size(np_diff)) print('number of different elements:', np.size(np_diff[np.abs(np_diff) > 1])) print('Which is {}% of the elements'.format( 100 * np.size(np_diff[np.abs(np_diff) > 1]) / np.size(np_diff))) list_diff = [] count = 0 for l in np_diff: count += 1 list_diff.append(l.tolist()) # print(list_diff[count-1]) # list_diff = [l[0] for l in list_diff] # print(list_diff) # print('count',count) pretify_motif_results([list_diff], lambda x: x != 0 and abs(x) > 1) avg = (mx + m_res_arr) / 2 diff = (mx - m_res_arr) a = diff[avg != 0] / avg[avg != 0] a = a[np.abs(a) > 0.1] print(a)
import os import sys import networkx as nx import pickle sys.path.append(os.path.abspath('.')) sys.path.append(os.path.abspath('..')) sys.path.append(os.path.abspath('../..')) from src.accelerated_graph_features.feature_wrappers import motif FEATURES = { 'Motif3': lambda g: motif(g, level=3, gpu=False), 'Motif4': lambda g: motif(g, level=4, gpu=False) } def calculate_features_on_graph(file_name, feats): save_file_name = file_name + '_feature_results_{}.pickle' g = nx.read_gpickle(file_name) for k, func in feats.items(): print(k) res = func(g) with open(save_file_name.format(k), 'w+b') as fp: pickle.dump(res, fp) del res
def test_specific(): g = create_graph(3, GraphType=nx.DiGraph) #g = nx.gnp_random_graph(50, 0.5, directed=True, seed=123456) # print(attraction_basin(g)) print(motif(g, level=3, gpu=True))
motif, attraction_basin, flow from src.accelerated_graph_features.graph_timer import FeatureTimer from src.accelerated_graph_features.original_features_check import original_bfs_moments # from Git.graph_measures.cpp_comparison import compare_motifs from features_algorithms.vertices.attractor_basin import AttractorBasinCalculator from features_algorithms.vertices.flow import FlowCalculator import networkx as nx matching_python_functions = { # 'clustering': [clustering_coefficient, nx.average_clustering], # 'k_core': [k_core, nx.k_core], # 'page_rank': [node_page_rank, nx.pagerank] # 'BFSMoments': [bfs_moments, original_bfs_moments] # 'Motif3': [lambda G,timer: motif(G, level=3,timer=timer), lambda G: motif(G, level=3)], # 'Motif4': [lambda G,timer: motif(G, level=4,timer=timer), lambda G: motif(G, level=4)] 'Motif3_GPU': {'cpp':lambda G,timer: motif(G, level=3,timer=timer),'gpu':lambda G,timer: motif(G, level=3,timer=timer,gpu=True)}, 'Motif4_GPU': {'cpp':lambda G,timer: motif(G, level=4,timer=timer),'gpu':lambda G,timer: motif(G, level=4,timer=timer,gpu=True)} # 'attraction_basin': [attraction_basin, lambda G: AttractorBasinCalculator(G).build()], # 'flow': [flow, lambda G: FlowCalculator(G).build()] } SEED = 123456 def benchmark_gpu_feature_regular_graph(feature_name, type='cpp', d=20): assert type in ['cpp', 'python', 'gpu'] nodes = [50, 100, 500, 1000, 2000, 5000, 10000, 100000] if type is 'python': titles = ['Feature calculation time'] else: