绘图转录组

KEGGresults OR Enrichresults 结果导

2023-04-11  本文已影响0人  努力学习的消炎药

用到了这个需求,找教程的时候,其实也找到了比如这个

(1 封私信) Cytoscape整合GO富集分析和表达结果 - 知乎 (zhihu.com)
但是,这个老师讲的太多了,是属于手把手教学的,但是我的需求只是其中的一步,就是拿到kegg的结果后,把通路的基因转换为表格,然后导入cytoscape,进行绘图。

首先,明确需求,kegg通路,感兴趣的几条,和基因之间的网络图。

最开始,由此需求想到的就是Y叔的一个包,enrichplot::cnetplot(kk2,showCategory = 22,circular=F,colorEdge = TRUE)) 但是,直接出图的话,有点丑,没法改。
如下:

image.png

那么我们就要想办法从KEGG结果里面找材料了,
思路如下:
1.把结果保存下来,使用excle挑通路,
2.把挑好的通路,转换成cytoscape 的形式画图。
代码和做法

# 首先,获得kegg的结果
kk <- enrichKEGG(gene = deg4$ENTREZID,
                 keyType = "kegg",organism= "mmu", 
                 qvalueCutoff = 0.05, 
                 pvalueCutoff=0.05)
##通路的基因是entrezid,但是后面我们做网络图,就需要转换成symbol,(tip:senrichGO,里面可以直接设置readable = T)
#kegg需要转换,可以通过`setReadable()`,当然这个函数是针对的enrichresults,所以GO也是可以通过这个转换的。
library(DOSE)
#这里keyType设置为ENTREZID
kk<-setReadable(kk, OrgDb = org.Mm.eg.db, keyType="ENTREZID")
#转换完成后,便得到了symbol
#随后,报存一下到excle里面进行挑选通路
tmp = dataframe(kk)
write.csv(tmp,file = 'kegg.csv')
## 番外 ,挑选 保存,保存好后
tmp <- read.csv('kegg.csv')
#后面需要对Enrichresult对象进行操作,所以挑对象
kk2 <- dplyr::filter(kk,Description %in%tmp$Description) %>% ##挑出刚才挑选的通路
  data.frame()

## 删掉小尾巴  我这里是老鼠的小尾巴,请各位酌情更改。
kk2$Description <- gsub(' - Mus musculus \\(house mouse\\)','',kk2$Description)

#然后这个挑完的对象,记得画个KEGG的图,这个对象的任务就结束了
##提取需要的列
net <- kk2[,c('Description','geneID')]

到这里,我们拿到了,我们想要的通路名和基因名。
但是它是这样的
head(net)

image.png
这怎么能搞成网络图呢
需要转换,
关键步骤只有一步
netdata <- separate_rows(net,geneID,sep = '/')
意思就是通过后面的这个geneID把基因分组分开,并且保证不错乱。
结果如下
image.png
看着就很美好。
然后保存
tips来了:
colnames(netdata) <- c('source','target')
write.csv(netdata,file = 'tmp.csv',quote = F) 一定要写后面的F,不然,你就会遇到
这个文章的情况:

R语言/cytoscape 导入时候出现 引号 怎么办? - 简书 (jianshu.com)
对!姊妹篇,一个问题,互赚浏览量!!

对了,你还需要生成一个cytoscape 的nodes的备注分组信息,大概就是gene和pathway分开分类的那种。
就比较简单了,算了还是写一下吧
比如:

#从上面的network文档入手,
gene = data.frame( x = unique(netdata$target), y = rep("gene",length(x = unique(netdata$geneID))))  
##在简书里面临时写的,可能会报错,请认真查找修改一下。
path= data.frame( x = unique(netdata$source), y = rep("pathway",length(x = unique(netdata$geneID))))  
netdata2 = cbind(gene,path) #或者是rbind,这俩我经常分不清,需要试一下。

到这里就结束了。下面就该去cytoscape进行操作了
可以看看我那个导入的教程

R语言/cytoscape 导入时候出现 引号 怎么办? - 简书 (jianshu.com)

上一篇下一篇

猜你喜欢

热点阅读