首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的社区检测要归功于igraph包

R中的社区检测要归功于igraph包
EN

Stack Overflow用户
提问于 2019-06-12 19:02:47
回答 1查看 209关注 0票数 0

我有一个关于OTUs和基因之间的相关性的data.frame。这些相关性将使我能够构建基因组。这个data.frame有1105854行。

代码语言:javascript
复制
      var1                var2  corr
1  OTU3978 UniRef90_A0A010P3Z8 0.846
2  OTU4011 UniRef90_A0A010P3Z8 0.855
3  OTU4929 UniRef90_A0A010P3Z8 0.829
4  OTU4317 UniRef90_A0A011P550 0.850
5  OTU4816 UniRef90_A0A011P550 0.807
6  OTU3902 UniRef90_A0A011QPQ2 0.836
7  OTU3339 UniRef90_A0A011RKI6 0.835
8  OTU1359 UniRef90_A0A011RLA7 0.801
9  OTU2085 UniRef90_A0A011RLA7 0.843
10 OTU3542 UniRef90_A0A011RLA7 0.866
11 OTU0473 UniRef90_A0A011TDE1 0.807

我使用igraph库来构建一个图形对象。

g<-graph.data.frame(df)

然后,我想提取这个图的组成部分来构建基因组:我的意思是,一个组成部分将对应于一个基因组。

我尝试了这个命令:genomes<-split(names(V(g)),components(g)$membership)

它返回了几个组件,例如:

代码语言:javascript
复制
> genomes[[4]]
[1] "OTU2417"             "UniRef90_A0A076H0Q4" "UniRef90_A0A2E8T3F8"
[4] "UniRef90_G5ZY43"

我检查OTU和每个组件的不同基因,这要归功于我的OTUs表和EMBL-EBI基因数据库。我可以确定每个重建的基因组是否有意义。

我还查看了文档,我发现了许多其他的社区检测方法:边缘中间,卢瓦恩,多层次...我想知道我使用的命令行(它给我提供了非常有意义的组件)和这些算法(它也给我提供组件)之间的主要区别是什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-06-12 21:51:37

如果你期望你想要找到的集群在你的图中彼此弱断开连接,使用组件搜索将会起作用。如果您希望集群之间存在连接,这些连接将在完整性搜索中组合在一起。

Louvain和edge-betweeness没有这个限制,他们试图通过分别最大化目标、模块性和中间性来找到最优的分区/社区分配/聚类。模块化方法受到分辨率限制:非常小但截然不同的社区永远不会在足够大的图中被识别。如果您希望找到许多较小的集群,请记住这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56560622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档