def g_one_main(n, md, model, to_pickle=True, data_dir='pkls'):
    r = dict()
    g = gt.price_network(N=n,
                         m=md,
                         gamma=1,
                         directed=False,
                         seed_graph=gt.complete_graph(N=md + 1))
    if model == 'configuration':
        gt.random_rewire(g, model='configuration')
    r['N'] = n
    r['md'] = md
    r['model'] = model
    try:
        r.update(
            dict(
                n=g.num_vertices(),
                m=g.num_edges(),
                # l=average_path(g),
                # cc=gt.global_clustering(g)
                r_a=gt.assortativity(g, 'total'),
                rho_a=rank_assortativity(g, method='spearman'),
                tau_a=rank_assortativity(g, method='kendall')))
        r.update(g_centrality_correlations(g))
    except Exception as e:
        logger.error(e)
    if to_pickle is True:
        filename = gen_filename(n, md, model, data_dir)
        with open(filename, 'wb') as f:
            pickle.dump(r, f, -1)
    return r
Пример #2
0
def erdos_renyi_graph(n, e, directed=False, gcc=True):
    g = Graph(directed=directed)
    g.add_vertex(n)

    rint = np.random.randint
    edge_list = [[x, y]
                 for x, y in zip(rint(0, n, size=e), rint(0, n, size=e))]
    g.add_edge_list(edge_list)

    random_rewire(g, model="erdos")
    g = make_simple_graph(g, undirected=1 - directed, gcc=gcc)
    return g
Пример #3
0
def mcore_of_rewired(args_tuple):
    t, g, model = args_tuple
    pid = mp.current_process(),
    rejected = gt.random_rewire(g, model=model)
    print('Process id={}, number of rejected edges={}'.format(pid, rejected))
    logger.info('PID=%s, number of rejected edges=%s', pid, rejected)
    kshell = gt.kcore_decomposition(g)
    s = pd.Series(kshell.a.copy())
    k = s.max()
    n = (s == k).sum()
    logger.info('PID=%s, ts=%s, K=%s, N=%s', pid, t, k, n)
    return (t, k, n)
Пример #4
0
def kcore_growing_shuffle(fn1='retweet.201710.claim.raw.csv',
                          fn2='graph.daily.csv',
                          ofn=None,
                          rewiring=None):
    """The growing of kcore by shuffling the edge list."""
    if ofn is None:
        ofn = 'kcore.growing.shuffle'
        if rewiring:
            ofn += '.' + rewiring
        ofn += '.csv'
    g = prepare_network_from_raw(fn1)
    if rewiring is not None:
        gt.random_rewire(g, model=rewiring)
    evmap = pd.read_csv(fn2)
    enum_list = evmap['enum'].tolist()
    emap = pd.DataFrame(g.get_edges().copy(),
                        columns=['source', 'target', 'idx'])
    emap = emap[['source', 'target']]
    emap = emap.reindex(np.random.permutation(
        emap.index)).reset_index(drop=True)
    v_map = dict()
    v_counter = -1
    gp_counter = 0
    g = gt.Graph()
    mcore_k = []
    mcore_s = []
    mcore_idx = []
    vnum = []
    enum = []
    largest_component_vnum = []
    g = gt.Graph()
    for i, s, t in emap.itertuples():
        if s not in v_map:
            v_counter += 1
            v_map[s] = v_counter
        if t not in v_map:
            v_counter += 1
            v_map[t] = v_counter
        source = v_map.get(s)
        target = v_map.get(t)
        g.add_edge(source, target, add_missing=True)
        if g.num_edges() >= enum_list[gp_counter]:
            kcore = pd.Series(gt.kcore_decomposition(g).a.copy())
            mcore = kcore.value_counts().sort_index(ascending=False)
            mk = mcore.index[0]
            ms = mcore.iloc[0]
            mcore_k.append(mk)
            mcore_s.append(ms)
            mcore_idx.append(kcore.loc[kcore == mk].index.tolist())
            lcv = gt.label_largest_component(g, directed=False)
            vnum.append(g.num_vertices())
            enum.append(g.num_edges())
            largest_component_vnum.append(lcv.a.sum())
            logger.info(g)
            logger.info('gp counter: %s', gp_counter)
            logger.info('Main core at enum=%s: k=%s, num=%s', g.num_edges(),
                        mk, ms)
            gp_counter += 1
    cdf = pd.DataFrame(
        dict(mcore_k=mcore_k,
             mcore_s=mcore_s,
             mcore_idx=mcore_idx,
             vnum=vnum,
             enum=enum,
             largest_commponent_vnum=largest_component_vnum))
    cdf.to_csv(ofn, index=False)
Пример #5
0
def kcore_growing_daily_rewiring(fn,
                                 ofn=None,
                                 freq='D',
                                 model='constrained-configuration'):
    """The growing of kcore by rewiring daily."""
    if ofn is None:
        ofn = 'kcore.growing.daily-rewiring.{}.csv'.format(model)
    # load only necessary columns
    df = pd.read_csv(fn, parse_dates=['tweet_created_at'], usecols=[2, 3, 4])
    df = df.set_index('tweet_created_at')
    # remove self-loop
    df = df.loc[df.from_raw_id != df.to_raw_id]
    df['row_id'] = np.arange(len(df))
    df['gpf'] = False
    gpf_rows = df.row_id.groupby(pd.Grouper(freq=freq)).last()
    gpf_rows = gpf_rows.loc[gpf_rows.notnull()].astype('int')
    df.loc[df.row_id.isin(gpf_rows.values), 'gpf'] = True

    v_map = dict()
    e_set = set()
    v_counter = -1
    g = gt.Graph()
    mcore_k = []
    mcore_s = []
    mcore_idx = []
    vnum = []
    enum = []
    largest_component_vnum = []
    ts = []
    for created_at, from_raw_id, to_raw_id, gpf in df[[
            'from_raw_id', 'to_raw_id', 'gpf'
    ]].itertuples():
        e = (from_raw_id, to_raw_id)
        if e not in e_set:
            if from_raw_id not in v_map:
                v_counter += 1
                v_map[from_raw_id] = v_counter
            if to_raw_id not in v_map:
                v_counter += 1
                v_map[to_raw_id] = v_counter
            source = v_map.get(from_raw_id)
            target = v_map.get(to_raw_id)
            g.add_edge(source, target, add_missing=True)
            e_set.add(e)
        if gpf:
            g1 = g.copy()
            rejected = gt.random_rewire(g1, model=model, edge_sweep=True)
            logger.info('Number of rejected when rewiring: %s', rejected)
            ts.append(created_at)
            kcore = pd.Series(gt.kcore_decomposition(g1).a.copy())
            mcore = kcore.value_counts().sort_index(ascending=False)
            mk = mcore.index[0]
            ms = mcore.iloc[0]
            mcore_k.append(mk)
            mcore_s.append(ms)
            mcore_idx.append(kcore.loc[kcore == mk].index.tolist())
            lcv = gt.label_largest_component(g1, directed=False)
            vnum.append(g1.num_vertices())
            enum.append(g1.num_edges())
            largest_component_vnum.append(lcv.a.sum())
            logger.info(g1)
            logger.info('Main core at %s: k=%s, num=%s', created_at, mk, ms)
    cdf = pd.DataFrame(
        dict(timeline=ts,
             mcore_k=mcore_k,
             mcore_s=mcore_s,
             mcore_idx=mcore_idx,
             vnum=vnum,
             enum=enum,
             largest_commponent_vnum=largest_component_vnum))
    cdf.to_csv(ofn, index=False)
Пример #6
0
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: lockheed
Information and Electronics Engineering
Huazhong University of science and technology
E-mail:[email protected]
Created on: 4/30/14 9:58 AM

Copyright (C)  lockheedphoenix

"""
import graph_tool.all as gt
g = gt.load_graph('RG.xml.gz')
pos = g.vertex_properties['pos']
gt.graph_draw(g, pos=pos, output_size=[1024, 800], output='RG.png')

gt.random_rewire(g, model='erdos')
gt.graph_draw(g, pos=pos, output_size=[1024, 800], output='ER.png')
Пример #7
0
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: lockheed
Information and Electronics Engineering
Huazhong University of science and technology
E-mail:[email protected]
Created on: 4/30/14 9:58 AM

Copyright (C)  lockheedphoenix

"""
import graph_tool.all as gt
g = gt.load_graph('RG.xml.gz')
pos = g.vertex_properties['pos']
gt.graph_draw(g, pos=pos,output_size=[1024,800],output='RG.png')

gt.random_rewire(g,model='erdos')
gt.graph_draw(g, pos=pos,output_size=[1024,800],output='ER.png')