def get_ev_centr_sum(G, n1, n2, reset=False):
    global NIdEigenH
    if reset or NIdEigenH is None:
        print 'Initializing EV Centrality...'
        NIdEigenH = snap.TIntFltH()
        snap.GetEigenVectorCentr(G, NIdEigenH, 1e-2, 50)
    return NIdEigenH[n1] + NIdEigenH[n2]
Example #2
0
 def rank_eigvec(self):
     """ Return dictionary of node ID and its eigenvector
     centrality score, in score order """
     NIdEigenH = snap.TIntFltH()
     snap.GetEigenVectorCentr(self._graph, NIdEigenH)
     assert len(NIdEigenH) == self._num_nodes, 'Number of nodes in centrality result must match number of nodes in graph'
     return snap_hash_to_dict(NIdEigenH)
Example #3
0
def calc_EigenvectorCentrality(Graph, node_to_g):
    prot_to_eigenvector_centrality = {}
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(Graph, NIdEigenH)
    for node in NIdEigenH:
        my_prot = node_to_g[node]
        prot_to_eigenvector_centrality[my_prot] = NIdEigenH[node]
    return prot_to_eigenvector_centrality
Example #4
0
    def EigenvectorCentrality(self):
        lstEigenVector = {}

        NIdEigenH = snap.TIntFltH()
        snap.GetEigenVectorCentr(self.graph, NIdEigenH)

        for i in NIdEigenH:
            lstEigenVector[i] = NIdEigenH[i]
        return lstEigenVector
Example #5
0
def CalculateEigenVectorCentr(graph):
    output = {}
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(graph, NIdEigenH)

    for item in NIdEigenH:
        #print "node: %d have centrality: %f" % (item, NIdEigenH[item])
        output[item] = NIdEigenH[item]
    return output
Example #6
0
def model_eigenvector(G):
    x = []
    y = []
    title_name = 'Eigenvector Centrality'
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(G, NIdEigenH)
    for item in NIdEigenH:
        x.append(item)
        y.append(NIdEigenH[item])
    picture(x, y, title_name, 'node', 'eigenvector centrality')
Example #7
0
def getEigenVectorCentrality(Graph):
    centrality = []
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(Graph, NIdEigenH)
    nodeid_centrality = {}
    for node in NIdEigenH:
        nodeid_centrality[node] = NIdEigenH[node]
    for node_id in sorted(nodeid_centrality):
        centrality.append(nodeid_centrality[node_id])
    return centrality
Example #8
0
    def GetMaxKEigenvectorCentrality(self, k):
        lstEigenVector = []
        nodesId = []

        NIdEigenH = snap.TIntFltH()
        snap.GetEigenVectorCentr(self.graph, NIdEigenH)

        for i in NIdEigenH:
            nodesId.append(i)
            lstEigenVector.append(NIdEigenH[i])
        return self.GetMaxK(lstEigenVector, nodesId, k)
Example #9
0
def calculate_eigenvector_centrality(graph, hashtag):
    start = time.time()
    print("Calculating eigenvector centrality...")
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(graph, NIdEigenH)
    print("Saving results to file...")
    with open(hashtag+"_eigenvector_centrality.csv", "w") as fout:
        fout.write("Node,Eigenvector Centrality\n")
        for item in NIdEigenH:
            fout.write(",".join([str(item), str(NIdEigenH[item])])+"\n")
    end = time.time()
    print("Completed in: %s" % timedelta(seconds=(int(end-start))))
Example #10
0
def TopKEigCent(graph, K):
    eigscore = np.zeros((graph.GetNodes(), 2))
    
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(graph, NIdEigenH)
    
    i = 0
    for item in NIdEigenH:
        eigscore[i, 0] = int(item)
        eigscore[i, 1] = NIdEigenH[item]
        i+=1
    
    ind_sorted = np.argsort(-eigscore[:,1])
    eigscore = eigscore[ind_sorted, :]
    
    return eigscore[:K, :]
def get_eigenvector_centrality(graph, gtype='snap'):
    nids, ev_centr = [], []
    if gtype == 'snap':
        NIdEigenH = snap.TIntFltH()
        snap.GetEigenVectorCentr(snap_graph, NIdEigenH)
        for item in NIdEigenH:
            nids.append(item)
            ev_centr.append(NIdEigenH[item])
    elif gtype == 'nx':
        centrality = nx.eigenvector_centrality(graph)
        nids, ev_centr = [], []
        for node in np.sort(list(centrality.keys())):
            nids.append(node)
            ev_centr.append(centrality[node])

    return np.asarray(nids, dtype='uint32'), np.asarray(ev_centr,
                                                        dtype='float32')
    def eigenvector_centrality(self, Eps=1e-4, MaxIter=100):
        '''
        Computes eigenvector centrality of all nodes in Graph. 
        Eigenvector Centrality of a node N is defined recursively as the average of centrality values of N’s neighbors in the network.
        
        :param Eps: Convergence difference.
        :param MaxIter: Maximum number of iterations.
        
        '''
        snap = self.snap

        ret = []

        NIdEigenH = snap.TIntFlt64H()
        snap.GetEigenVectorCentr(self.graph, NIdEigenH, Eps, MaxIter)
        for item in NIdEigenH:
            ret.append((item, NIdEigenH[item]))

        return ret
Example #13
0
def main(genre):
    G_Multi, G_Directed, G_Undirected, dict = load_genre_graphs(genre)

    # clean up graph

    print(G_Undirected.GetNodes())

    G_Undirected = snap.GetKCore(G_Undirected, 3)
    print(G_Undirected.GetNodes())

    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(G_Undirected, NIdEigenH)
    centralities = []

    for item in NIdEigenH:
        centralities.append((dict[item], NIdEigenH[item]))

    centralities.sort(reverse=True, key=lambda l: l[1])
    for centrality in centralities:
        print centrality
def get_eigen_vector_centr(net, label, outpath):
    """
    get eigen vector centrality. For undirected graph
    :param net:
    :param label:
    :param outpath:
    :return:
    """
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(net, NIdEigenH)
    eigen_vector_centr_file = open(outpath + label + '-eigen_vector_centr', 'w')
    eigen_vector_centr_top_file = open(outpath + label + '-eigen_vector_centr-top100', 'w')
    eigen_vector_centr = {}
    for item in NIdEigenH:
        eigen_vector_centr[item] = NIdEigenH[item]
    eigen_vector_centr = sorted(eigen_vector_centr.items(), key=operator.itemgetter(1), reverse=True)
    id, value = zip(*eigen_vector_centr)
    for i in range(len(id)):
        eigen_vector_centr_file.write(str(id[i]) + '\t' + str(value[i]) + '\n')
    for i in range(100):
        eigen_vector_centr_top_file.write(str(id[i]) + '\t' + str(value[i]) + '\n')
    eigen_vector_centr_file.close()
    eigen_vector_centr_top_file.close()
    return id, value
Example #15
0
for item in pg_vec:
    pg_dict[item] = pg_vec[item]

pg_sort = sorted(pg_dict.values(), reverse=True)
pg_count10 = 0
for value in pg_sort:
    for key1, val1 in pg_dict.iteritems():
        if val1 == value:
            print val1, key1
            pg_count10 += 1
            break
    if pg_count10 == 10:
        break

evCntr_Vector = snap.TIntFltH()
snap.GetEigenVectorCentr(ugraph, evCntr_Vector)

evCntr_dict = dict()

for item in evCntr_Vector:
    evCntr_dict[item] = evCntr_Vector[item]

evCntr_sort = sorted(evCntr_dict.values(), reverse=True)
evCntr_count10 = 0
for value in evCntr_sort:
    for key1, val1 in evCntr_dict.iteritems():
        if val1 == value:
            print val1, key1
            evCntr_count10 += 1
            break
    if evCntr_count10 == 10:
                                                     for b in idratedbyu])
        if business.GetId() not in averateReceivedRate:
            averateReceivedRate[business.GetId()]=np.mean([user_to_rating[u]
                                                             for u in idratedb])
        features.append(
            averageSentRate[user.GetId()] * averateReceivedRate[
            business.GetId()])

        results[(user.GetId(), business.GetId())]=features


    # Get page ranks.
    PRankH=snap.TIntFltH()
    snap.GetPageRank(G, PRankH)
    NIdEigenH=snap.TIntFltH()
    snap.GetEigenVectorCentr(G, NIdEigenH)
    matrix=[]
    pair_to_node={}
    i=0
    for key in results:
        u, b=key
        results[key].append(PRankH[u] + PRankH[b])
        results[key].append(NIdEigenH[u] + NIdEigenH[b])
        matrix.append(results[key])
        pair_to_node[key]=i
        i += 1

    feats=np.array(matrix)
    feats=(feats - np.mean(feats, axis=0)) / np.std(feats, axis=0)

    return pair_to_node, feats
Example #17
0
    return cmap


def generate_legend(legend):
    return '\n'.join((f'{centr} : {color}' for centr, color in legend.items()))


#draw the graph
#snap.DrawGViz(g_rnd,snap.gvlNeato,"rnd_test.png","Random Network")
deg_centr = all_node_centrality(g_rnd, snap.GetDegreeCentr)
close_centr = all_node_centrality(g_rnd, snap.GetClosenessCentr)
nodes_betwn_centr = snap.TIntFlt64H()
edges_betwn_centr = snap.TIntPrFlt64H()
snap.GetBetweennessCentr(g_rnd, nodes_betwn_centr, edges_betwn_centr)
eigen_centr = snap.TIntFlt64H()
snap.GetEigenVectorCentr(g_rnd, eigen_centr)
pr_centr = snap.TIntFlt64H()
snap.GetPageRank(g_rnd, pr_centr)
centralities = {
    'degree': deg_centr,
    'closeness': close_centr,
    'betweenness': nodes_betwn_centr,
    'eigenvector': eigen_centr,
    'pagerank': pr_centr
}
color_names = cycle(('red', 'green', 'purple', 'blue', 'orange'))
pct = 0.05
combined_cmap = snap.TIntStr64H()
legend = {}
for k, v in centralities.items():
    color = next(color_names)
Example #18
0
for line in lines:
    tokens = line.split('||')
    if tokens[2] != '':
        nId = nameToNId[tokens[1]]
        uIdToNId[int(tokens[0])] = nId
graph = snap.ConvertGraph(snap.PUNGraph, network)
degCenters = {}
closeCenters = {}
pageRanks = snap.TIntFltH()
eigenCenters = snap.TIntFltH()
# btwnCenters = snap.TIntFltH()
# edgeHash = snap.TIntPrFltH()
print('Running PageRank...')
snap.GetPageRank(graph, pageRanks)
print('Running Eigenvector centrality...')
snap.GetEigenVectorCentr(graph, eigenCenters)
# print('Running Betweeness...')
# snap.GetBetweennessCentr(graph, btwnCenters, edgeHash)
print('Running Degree and Closeness...')
for uId, nId in uIdToNId.iteritems():
    print uId, nId
    degCenters[uId] = snap.GetDegreeCentr(graph, nId)
    closeCenters[uId] = snap.GetClosenessCentr(graph, nId)

outfile = open('csv/centralities.csv', 'w')
for uId, nId in uIdToNId.iteritems():
    outfile.write(str(uId) + ',' + str(pageRanks[nId]) + ',' +\
        str(eigenCenters[nId]) + ',' +\
        str(degCenters[uId]) + ',' + str(closeCenters[uId]) + '\n')
outfile.close()
Example #19
0
def getAttribute(filename):
    UGraph = snap.LoadEdgeList(snap.PUNGraph, filename, 0, 1)
    UGraph.Dump()

    attributes = pd.DataFrame(np.zeros(shape=(UGraph.GetNodes(), 12)), 
                              columns=['Graph', 'Id', 'Degree', 'DegreeCentrality', 'NodeBetweennessCentrality', 
                                       'ClosenessCentrality', 'FarnessCentrality', 'PageRank', 'HubsScore', 
                                       'AuthoritiesScore', 'NodeEccentricity', 'EigenvectorCentrality'])
    
    attributes['Graph'] = [filename] * UGraph.GetNodes()
    
    # Degree
    id = []
    degree = []
    OutDegV = snap.TIntPrV()
    snap.GetNodeOutDegV(UGraph, OutDegV)
    for item in OutDegV:
        id.append(item.GetVal1())
        degree.append(item.GetVal2())
    attributes['Id'] = id
    attributes['Degree'] = degree

    # Degree, Closeness, Farness Centrality, Node Eccentricity
    degCentr = []
    cloCentr = []
    farCentr = []
    nodeEcc = []
    for NI in UGraph.Nodes():
        degCentr.append(snap.GetDegreeCentr(UGraph, NI.GetId()))
        cloCentr.append(snap.GetClosenessCentr(UGraph, NI.GetId()))
        farCentr.append(snap.GetFarnessCentr(UGraph, NI.GetId()))
        nodeEcc.append(snap.GetNodeEcc(UGraph, NI.GetId(), False))
    attributes['DegreeCentrality'] = degCentr
    attributes['ClosenessCentrality'] = cloCentr
    attributes['FarnessCentrality'] = farCentr
    attributes['NodeEccentricity'] = nodeEcc

    # Betweenness Centrality
    betCentr = []
    Nodes = snap.TIntFltH()
    Edges = snap.TIntPrFltH()
    snap.GetBetweennessCentr(UGraph, Nodes, Edges, 1.0)
    for node in Nodes:
        betCentr.append(Nodes[node])
    attributes['NodeBetweennessCentrality'] = betCentr

    # PageRank
    pgRank = []
    PRankH = snap.TIntFltH()
    snap.GetPageRank(UGraph, PRankH)
    for item in PRankH:
        pgRank.append(PRankH[item])
    attributes['PageRank'] = pgRank

    # Hubs, Authorities score 
    hubs = []
    auth = []
    NIdHubH = snap.TIntFltH()
    NIdAuthH = snap.TIntFltH()
    snap.GetHits(UGraph, NIdHubH, NIdAuthH)
    for item in NIdHubH:
        hubs.append(NIdHubH[item])
    for item in NIdAuthH:
        auth.append(NIdAuthH[item])
    attributes['HubsScore'] = hubs
    attributes['AuthoritiesScore'] = auth

    # Eigenvector Centrality
    eigenCentr = []
    NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(UGraph, NIdEigenH)
    for item in NIdEigenH:
        eigenCentr.append(NIdEigenH[item])
    attributes['EigenvectorCentrality'] = eigenCentr

    return attributes
                           1)
Graph3 = snap.LoadEdgeList(snap.PUNGraph, 'American_recipes.elist.txt', 0, 1)
Graph4 = snap.LoadEdgeList(snap.PUNGraph, 'India_recipes.elist.txt', 0, 1)

#metrics
#1. Eigen Vector Centrality - most influencing ingredients
#2. Degree Centrality - most used ingredients

#Graph1

eigen1 = set()
degree1 = set()

#Eigen Vector Centrality - Graph1
NIdEigenH = snap.TIntFltH()
snap.GetEigenVectorCentr(Graph1, NIdEigenH)

maxd = 0.0
maxnode = 0
for node in NIdEigenH:
    if maxd < NIdEigenH[node]:
        maxd = NIdEigenH[node]
        maxnode = node
    eigen1.add(NIdEigenH[node])

print "Max Eigen node ->", maxnode
print "Max Eigen Value ->", maxd
#Degree Centrality - Graph1
maxd = 0.0
maxnode = 0
for node in Graph1.Nodes():
def eigenvector_centrality(graph, eps=1e-4, max_iter=100):
    nodes = sp.TIntFltH()
    sp.GetEigenVectorCentr(graph, nodes, eps, max_iter)
    return [nodes[n] for n in nodes]
Example #22
0
        gf_comm.AddNode(id)
    for id in node_id_list:
        ni = gf.GetNI(id)
        deg = ni.GetDeg()
        for nbr_i in xrange(deg):
            nbr_id = ni.GetNbrNId(nbr_i)
            if not gf_comm.IsNode(nbr_id):
                gf_comm.AddNode(nbr_id)
            gf_comm.AddEdge(id, nbr_id)
    return gf_comm


if __name__ == "__main__":
    gf_file = "comm_graph_edge.txt"
    gf = snap.LoadEdgeList(snap.PUNGraph, gf_file, 0, 1)
    print "Load graph! With nodes ", gf.GetNodes(), " and edges ", gf.GetEdges(
    )
    tmp_NIdEigenH = snap.TIntFltH()
    snap.GetEigenVectorCentr(gf, tmp_NIdEigenH)
    tmp_eignv_map = {}
    for key in tmp_NIdEigenH:
        tmp_eignv_map[key] = tmp_NIdEigenH[key]
    tmp_sorted_eignv = sorted(tmp_eignv_map.items(),
                              key=operator.itemgetter(1),
                              reverse=True)
    tmp_sorted_id_eignv = [item[0] for item in tmp_sorted_eignv]
    ##--dump file
    eignv_file = "eignv_comm_gf.pkl"
    with open(eignv_file, "wb") as fl:
        pickle.dump(tmp_sorted_id_eignv, fl)
PRankH = snap.TIntFltH()
snap.GetPageRank(UGraph, PRankH)
with open('na_power_pageranks.csv', 'w') as csvfile:  #print pageranks to CSV
    fieldnames = ['node_id', 'page_rank']
    page_writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    page_writer.writeheader()

    for item in PRankH:
        page_writer.writerow({'node_id': item, 'page_rank': PRankH[item]})

#Eigenvector Centrality
#epsilon = 10^-4, max_iters = 100
NIdEigenH = snap.TIntFltH()
snap.GetEigenVectorCentr(UGraph, NIdEigenH)
with open('na_power_eigcentr.csv',
          'w') as csvfile:  #print eig centralities to CSV
    fieldnames = ['node_id', 'eig_centr']
    eig_writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    eig_writer.writeheader()

    for item in NIdEigenH:
        eig_writer.writerow({'node_id': item, 'eig_centr': NIdEigenH[item]})

#Degree Centrality
#for some reason I get an error when I try to print all three in a single execution of the code;
#works if you comment one block out
with open('na_power_degcentr.csv', 'w') as csvfile:  #print degree centralities
    fieldnames = ['node_id', 'deg_centr']
    deg_writer = csv.DictWriter(csvfile, fieldnames=fieldnames)