igraph节点颜色根据基因表达值属性

时间:2014-10-03 09:51:47

标签: r igraph

我有一系列值-0.10100到0.28400(总共120个连续值)。该值代表120个基因的基因表达。在我的网络中,它们代表了TGFB1的相互作用基因。 我正在尝试使用igraph库绘制我的网络。 我想对我的节点颜色有两个效果: 第一个是:根据表示我的属性的值的范围,根据greenred中的基因表达值(绿色为负值,红色为正值)为我的节点着色。然后,我想透明-0.10100到-0.10100范围内的redgreen节点 0.04720。由于我不是R专家,因此在我的网络上遇到如此多的影响时遇到了麻烦。 有人可以帮帮我吗?

我的尝试:

 tmp1= read.delim("mynet.txt", header= T)
 g <- graph.data.frame(tmp1, directed=FALSE)
 V(g)$name
 [1] "COL6A3"    "PDGFRB"    "COL3A1"    "COL5A1"    "LOXL1"   ....

 g
 GRAPH UN-- 120 120 -- 
 + attr: name (v/c), GEX (v/c), color (v/c)

 tmp2= read.delim("myattributes.txt", header= T)
 GENE       S2N      
 COL6A3     0.28400
 PDGFRB     0.28100
 COL3A1     0.26300
 ......     .......    
 V(g)$GEX=as.numeric(tmp2$S2N[match(V(g)$name,tmp2$GENE)])
 V(g)$color=V(g)$GEX        

然后不幸的是我停了下来,我无法继续。 有人可以帮帮我吗?

最佳

2 个答案:

答案 0 :(得分:1)

您可以创建颜色到调色板的映射。假设您要让负值显示为绿色,将零值显示为白色,而将正值显示为红色,则应该可以使用:

my_palette <- colorRampPalette(c("green", "white", "red"))(n = 10000)

sf <- max(abs(tmp2$S2N))
node.colors <- (tmp2$S2N+sf) / (2*sf) * 10000

plot(g, vertex.color=my_palette[node.colors])

答案 1 :(得分:0)

可能这不是最佳解决方案,但让我们看看它是否对您有用。基本上,你必须分配V(g)$color一种颜色,而不是你现在正在做的数字。我的解决方案是在连续数据上定义间隔,并为每个间隔分配颜色。要将连续数据(即df $ S2N)映射到分类数据,您可以使用cut。这是一个例子:

library(igraph)
library(org.Hs.eg.db) # Bioconductor annotation package for human.

set.seed(123)

# create toy network:
g <- barabasi.game(10, directed = FALSE)

# assign random gene ids.
V(g)$name <- sample(keys(org.Hs.eg.db), 10)

# assign the gene symbol to the label attribute:
V(g)$label <- select(org.Hs.eg.db, keys = V(g)$name, columns="SYMBOL")$SYMBOL
plot(g)

# generate toy dataset:
df <- data.frame(GENE=V(g)$label, S2N=sample(seq(-2,2,.1),10,replace=TRUE))

# if you are plotting e.g. fold changes, you may want dark blue for 
# FC between -2 and -1, blue for FC between -1 and -.5, grey for -.5 and .5, and so on.
# define colors:
col <- c("darkblue", "blue", "grey", "orange", "red")

# map your continuous data to the intervals you want:
(colc <- cut(df$S2N, breaks = c(-2, -1, -.5, .5, 1, 2), include.lowest = TRUE))

[1] (-1,-0.5]  (0.5,1]    (-0.5,0.5] (1,2]      (0.5,1]    (-0.5,0.5]
[7] (-0.5,0.5] (1,2]      (1,2]      [-2,-1]   
Levels: [-2,-1] (-1,-0.5] (-0.5,0.5] (0.5,1] (1,2]

# assign the colors to the network
V(g)$color=col[colc]
plot(g)

请注意keysselect来自处理AnnotationDbi中注释的org.Hs.eg.db包(它是一个依赖项),但不是必需的。这里仅用于示例。