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)
示例#2
0
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))
示例#4
0
    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: