我想节点置换图表。请参阅下面我创建的测试图。当我使用igraph R库中的permute()方法时,permute()生成的新图形不会发生任何变化。发生了什么事?
testG <- vector(mode="list", length=6); #assign initial probabilities
testG = list("gene1"=0, "gene2"=0, "gene3"=0, "gene4"=0, "gene5"=0, "gene6"=0);
adjacency_test <- matrix(c(0,1,1,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0), nrow=6, ncol=6);
rownames(adjacency_test) <- c("gene1", "gene2", "gene3","gene4","gene5","gene6");
colnames(adjacency_test) <- c("gene1", "gene2", "gene3","gene4","gene5","gene6");
require(igraph)
p <- graph.adjacency(adjacency_test, mode="undirected", weighted=TRUE);
vids.permuted <- c(6,5,4,3,2,1)
p2 <- permute(p, permutation=vids.permuted)
plot(p)
plot(p2)
号码:
P2:
我希望置换图(p2)中的集团再次成为gene6,gene5,gene4,而不是gene1,gene2和gene3,就像原来一样。
发生了什么事?
编辑:
根据下面的回复,这是正确的,我有另一个担心。当我手动重新排列节点名称时,为什么当我检查所有边缘是否相同,并且度数与原始图形与置换图形的度数相同时,igraph是否为真?
p <- graph.adjacency(adjacency_test, mode="undirected", weighted=TRUE);
p2 <- p
V(p2)$name <- V(p)$name[sample(length(V(p)$name), replace=FALSE)]
# p is for sure different from p2 now
plot(p, layout=layout.reingold.tilford)
plot(p2, layout=layout.reingold.tilford)
# But why are the degrees still the same, and edges still the same?
all(E(p)==E(p2))
degs1 <- degree(p)
degs2 <- degree(p2)
all(degs1==degs2)
答案 0 :(得分:2)
置换函数交换顶点ID并创建一个同构图。这不是你想要的。要交换顶点标签,请使用
p2=p
V(p2)$name=paste("gene ",6:1)