【问题标题】:Delete unconnected short paths from a graph in igraph从 igraph 中的图中删除未连接的短路径
【发布时间】:2019-04-18 22:18:18
【问题描述】:

我正在使用 igraph 中的网络,我有一个网络,其中有相互重叠的短连接节点,所以我们没有看到边缘。我想删除所有这些短连接节点,因为它们没有连接到主网络。度数在这里不起作用,因为节点不是0度。它们要么连接到1个或多个基因,但仍然不在主网络中。即使主网络显示一些重叠基因,我也想纠正。

 net <- simplify(InnatedGraph, remove.multiple = T, remove.loops = T, ) 
 bad.vs<-V(net)[degree(net) == 0] 
 net <-delete.vertices(net, bad.vs)
 plot(net,vertex.label=NA, edge.curved=.1, edge.width = 1,edge.arrow.width = 0.3,vertex.size = 3,asp=-1,edge.arrow.size = 0.5,vertex.label.cex = 0.3)

做完这一切后,我得到了一个像这样的网络

你在主网络周围看到的基因不是孤立的节点,而是与其他重叠的节点相连。有没有办法删除这些基因并防止主网络中的重叠。

【问题讨论】:

    标签: r graph igraph


    【解决方案1】:

    你想要main component。首先,找到组件,然后根据这些组件对图进行子集化。 g 是您的网络:

    V(g)$comp <- components(g)$membership
    main <- induced_subgraph(g,V(g)$comp==1)
    

    至于重叠节点,请查看 igraph 中可用的不同布局。 ?igraph::layout.

    注意:查看@hermidalc 的回答。最大的分量不一定是第一个提取的分量。

    【讨论】:

    • 这实际上是错误的。在 igraph 中,最大的组件并不总是第一个 id == 1
    • 不错的收获@hermidalc。我的假设很糟糕。
    • Np,我知道这一点是因为我过去做了同样的假设,因为对于许多图表,最大的组件是第一个,但我发现某些图表并非如此。
    【解决方案2】:

    你想要主要/最大的组件,它不一定是第一个 id == 1 的组件

    main <- induced_subgraph(
      g, V(g)[components(g)$membership == which.max(components(g)$csize)]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多