[R] community finding in a graph and heatplot

Aziz, Muhammad Fayez aziz4 at illinois.edu
Sun Jun 3 22:11:28 CEST 2012


Hmm interesting. To come to think of it there could be many disconnected components in the graph and thus there should be a generic way to either mitigate the disconnectedness in the dendrogram or in the original graph. I had no luck in finding such a trick though google search. I then ran the script on minute-scale graphs and have following results:

1) disconnected graph with three modules:

*Vertices 9
*Edges
1 2 1
2 3 1
3 1 1
4 5 1
5 6 1
6 4 1
7 8 1
8 9 1
9 7 1

corresponding fgc$merges matrix:

     [,1] [,2]
[1,]    1    0
[2,]    2    9
[3,]    7    6
[4,]    8   11
[5,]    4    3
[6,]    5   13

2) connected graph by adding links 1-2 and 4-7 in graph 1):

*Vertices 9
*Edges
1 2 1
2 3 1
3 1 1
4 5 1
5 6 1
6 4 1
7 8 1
8 9 1
9 7 1
1 4 1
4 7 1

corresponding fgc$merges matrix:

     [,1] [,2]
[1,]    2    1
[2,]    0    9
[3,]    8    7
[4,]    6   11
[5,]    5    4
[6,]    3   13
[7,]   14   12
[8,]   15   10

There needs to be a generic way to get fgc$merges of the form 2) from 1). Hints please.

Thank you so much Gabor for your help so far and marvelous job in identifying the problem.

Best,
Fayez




________________________________________
From: csardi.gabor at gmail.com [csardi.gabor at gmail.com] on behalf of Gábor Csárdi [csardi at rmki.kfki.hu]
Sent: Sunday, June 03, 2012 8:56 AM
To: Aziz, Muhammad Fayez
Cc: r-help at r-project.org; Caetano-Anolles, Gustavo
Subject: Re: [R] community finding in a graph and heatplot

The problem is that your graph is unconnected, it has two components
and the as.dendrogram() function in igraph cannot handle that.
fastgreedy.community() returns a matrix of merges that is not a
complete dendrogram, the final top level merge of the components is
missing.

A workaround is to modify the result of fastgreedy.community and add
the missing row to the merges matrix, before calling as.dendrogram().

G.

On Thu, May 31, 2012 at 7:42 PM, Aziz, Muhammad Fayez
<aziz4 at illinois.edu> wrote:
>
> Thank you so much Gabor for taking this on. Please find attached a sample scenario with the problem of malfunctioning dendogram by fgc. I hope this helps you narrow down to the solution.
>
> Best,
> Fayez
>
> ________________________________________
> From: csardi.gabor at gmail.com [csardi.gabor at gmail.com] on behalf of Gábor Csárdi [csardi at rmki.kfki.hu]
> Sent: Thursday, May 31, 2012 4:23 PM
> To: Aziz, Muhammad Fayez
> Cc: r-help at r-project.org
> Subject: Re: [R] community finding in a graph and heatplot
>
> On Thu, May 31, 2012 at 12:08 PM, Aziz, Muhammad Fayez
> <aziz4 at illinois.edu> wrote:
>>
>> Thank you so much Gabor for your reply. I had spotted your post earlier and it worked like a charm. Interestingly I have just ran into a trouble with the stament dend <- igraph:::as.dendrogram.igraph.walktrap(fc). Apparently the members are empty as when I print(dend) it says 'dendrogram' with 2 branches and  members total, at height 93" while the error with using dend with dendrapply remians to be
>>
>> Error in `[[.dendrogram`(X, 2L) : attempt to set an attribute on NULL
>>
>> Any ideas?
>
> I would need to see fgc for this. Can you send it to me in private? Or
> send some self-contained example that generates the same error?
>
> Gabor
>
>> My code looks like this
>>
>>                File2Open = paste(FilePath, "NetworkFiles\\net\\", NetPrefix, " ", TPPostfix, ".net", sep = "")
>>                g <- read.graph(File2Open, format="pajek")
>>
>>                g <- delete.isolates(g)
>>                g <- simplify(g)
>>
>>                fgc <- fastgreedy.community(g, modularity=TRUE, weights = E(g)$weight)
>>                ModularityIndexfgc <- max(fgc$modularity) # fgc modularity
>>                ModularityIndexng <- modularity(g, membership, weights = E(g)$weight) # newman-girvan modularity
>>                dend <- igraph:::as.dendrogram.igraph.walktrap(fgc)
>>
>>                png(filename = paste(FilePath, "Analysis\\Graphs\\EColiStressModuleHeatMap", NetPrefixAbbr, TPPostfix, ".png", sep = ""), width = 800, height = 800) # heat map is square
>>
>>                adjMatrix = get.adjacency(g, attr="weight")
>>                DendNodeCounter <- 0 # counter for ColorGroupsOrdered
>>                ColorGroupsOrdered <- rep("red", vcount(g))
>>                dendrapply(dend, colLab) # modifies ColorGroupsOrdered
>> ________________________________________
>> From: csardi.gabor at gmail.com [csardi.gabor at gmail.com] on behalf of Gábor Csárdi [csardi at rmki.kfki.hu]
>> Sent: Thursday, May 31, 2012 10:45 AM
>> To: Aziz, Muhammad Fayez
>> Cc: r-help at r-project.org
>> Subject: Re: [R] community finding in a graph and heatplot
>>
>> On Tue, May 29, 2012 at 1:16 AM, Aziz, Muhammad Fayez
>> <aziz4 at illinois.edu> wrote:
>>>
>>> Hi everyone,
>>>
>>> I am using the fastgreedy.community function to get the $merges matrix and the $modularity vector. This serves my purpose of testing modularity of my graph. But I am "greedy" to plot the heat map and dendrrogram based on the $merges dendogram matrix. I know that heatplot does the graphics part but I am not sure if the dendogram generated by the heatplot will match the one given by fastgreedy.community in all cases and that the heat map will represent the same clustering.
>>
>> No, they are different. To plot fast-greedy results as a dendrogram,
>> see this and the follow-ups:
>> http://lists.gnu.org/archive/html/igraph-help/2010-11/msg00059.html
>>
>> Gabor
>>
>>> Tell me if my apprehension is incorrect. Otherwise please let me know of any alternatives. Here is the code I am testing so far:
>>>
>>> # http://igraph.sourceforge.net/doc/R/modularity.html
>>> # http://igraph.sourceforge.net/doc/R/fastgreedy.community.html
>>> # http://igraph.sourceforge.net/doc/R/graph.constructors.html
>>>
>>> library(igraph)
>>> library(made4)
>>>
>>> g <- graph(c(1,2, 2,3, 3,1, 4,5)-1, , FALSE)
>>> print(g)
>>> ModuleInfo <- fastgreedy.community(g)
>>> print(ModuleInfo)
>>> heatplot(c(1,2, 2,3, 3,1, 4,5))
>>>
>>>
>>> Thanks
>>> Fayez
>>> Grad student UIUC
>>> IL, USA
>>>
>>>        [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>>
>> --
>> Gabor Csardi <csardi at rmki.kfki.hu>     MTA KFKI RMKI
>
>
>
> --
> Gabor Csardi <csardi at rmki.kfki.hu>     MTA KFKI RMKI



--
Gabor Csardi <csardi at rmki.kfki.hu>     MTA KFKI RMKI



More information about the R-help mailing list