igraph-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] calculating the number of edges on the boundary of S


From: Tamás Nepusz
Subject: Re: [igraph] calculating the number of edges on the boundary of S
Date: Thu, 27 Nov 2014 11:06:26 +0100

Hi,

1. assign an edge weight of 1 to each edge
2. Use contract.vertices with the membership vector of your community structure to contract each community to a single vertex. Then simplify the graph and tell igraph to sum the edge weights when it merges multiple edges into a single one during simplification. 

3. The edge weights in the contracted graph will tell you rhe number of edges between the communities in the original graph.

T. 

On 25 Nov 2014, at 21:22, Fatemeh a <address@hidden> wrote:

Hi,

I would appreciate if some one could help me to speed up this piece of code  :

what I am trying to do is to calculate the number of edges on the boundary of community S but it is really slow.

numberofedge<-function(graph,community)

cs <- data.frame(combn(unique(membership(community)),2)) #----considering a combination of communities two by two
cx <- sapply(cs, function(x) {   #calculating edges in between two communities
    es<-E(graph)[V(graph)[membership(community)==x[1]] %--% 
              V(graph)[membership(community)==x[2]]] 
    length(es)})
y=cbind(t(cs),cx)
i=1                 
CS=array( data="" = length(unique(membership(community))))
while (i<length(y[,1])+1){    # calculating the edges on the boundary for each community
 CS[y[i,1]]=CS[y[i,1]]+y[i,3]
  CS[y[i,2]]=CS[y[i,2]]+y[i,3] 
  i=i+1
}


--
regards
F..A
_______________________________________________
igraph-help mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/igraph-help

reply via email to

[Prev in Thread] Current Thread [Next in Thread]