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 <[email protected]> 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=0,dim = 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
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/igraph-help
_______________________________________________
igraph-help mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/igraph-help

Reply via email to