[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