从 igraph 中的图形中删除未连接的短路径
Delete unconnected short paths from a graph in igraph
我正在使用 igraph 中的网络,我有一个网络,其中有相互重叠的短连接节点,因此我们看不到边缘。我想删除所有这样的短连接节点,因为它们没有连接到主网络。度数在这里不起作用,因为节点不是 0 度。它们要么连接到 1 个或多个基因,但仍然不在主网络中 network.Even 主网络显示一些重叠的基因,我也想纠正它。
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)
完成所有这些后,我得到了这样的网络
你在主网络周围看到的基因不是孤立的节点,而是连接到重叠的其他节点。有没有办法删除这些基因,防止在主网重叠。
您想要 main component。首先,找到组件,然后根据这些组件对图进行子集化。其中 g 是您的网络:
V(g)$comp <- components(g)$membership
main <- induced_subgraph(g,V(g)$comp==1)
至于重叠节点,请查看 igraph 中可用的不同布局。 ?igraph::layout
.
注意:查看@hermidalc 的回答。最大的组件不一定是第一个提取的组件。
你想要 main/largest 组件,它不一定是第一个 id == 1 的组件
main <- induced_subgraph(
g, V(g)[components(g)$membership == which.max(components(g)$csize)]
)
我正在使用 igraph 中的网络,我有一个网络,其中有相互重叠的短连接节点,因此我们看不到边缘。我想删除所有这样的短连接节点,因为它们没有连接到主网络。度数在这里不起作用,因为节点不是 0 度。它们要么连接到 1 个或多个基因,但仍然不在主网络中 network.Even 主网络显示一些重叠的基因,我也想纠正它。
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)
完成所有这些后,我得到了这样的网络
你在主网络周围看到的基因不是孤立的节点,而是连接到重叠的其他节点。有没有办法删除这些基因,防止在主网重叠。
您想要 main component。首先,找到组件,然后根据这些组件对图进行子集化。其中 g 是您的网络:
V(g)$comp <- components(g)$membership
main <- induced_subgraph(g,V(g)$comp==1)
至于重叠节点,请查看 igraph 中可用的不同布局。 ?igraph::layout
.
注意:查看@hermidalc 的回答。最大的组件不一定是第一个提取的组件。
你想要 main/largest 组件,它不一定是第一个 id == 1 的组件
main <- induced_subgraph(
g, V(g)[components(g)$membership == which.max(components(g)$csize)]
)