我们首先运行帮助文档里的例子看例子里画图用到的数据是什么样子的
查看帮助文档
help(package="GOplot")
运行示例数据获得画弦图的数据
library(GOplot)
circ <- circle_dat(EC$david, EC$genelist)
chord <- chord_dat(circ, EC$genes, EC$process)
head(chord)
把这个示例数据写出到csv文件里
write.csv(chord,file = "chord_example.csv",quote=F)
作图的数据是这样的,我们模仿这个数据准备自己的数据
首先将示例数据写出到文件里
library(GOplot)
data(EC)
EC$david
write.table(EC$david,
file = "GO_enrich_result.tsv",
quote = F,
row.names = F,
sep = "\t")
write.csv(EC$genes,
file="genes.csv",
quote=F,
row.names=F)
write.csv(EC$process,
file = "process.csv",
quote = F,
row.names = F)
稍微手动编辑一下
最终结果假设
我们拿到了GO富集分析的结果,部分结果截图如下
这个结果我们需要用到的是Term和genes两列
感兴趣的Term,单独一个文件
感兴趣的基因,单独一个文件
这个地方如何用R语言来实现我暂时还想不出来了,我试着写python脚本吧
首先是将感兴趣的term添加到一个列表里
fprocess = open("process.txt",'r')
process_list = []
for line in fprocess:
process_list.append(line.strip())
print(process_list)
将感兴趣的基因名字添加到列表
fr = open("genes.txt",'r')
genes = []
for line in fr:
genes.append(line.strip())
将term和基因名对应成字典
fr = open("genes.txt",'r')
genes = []
for line in fr:
genes.append(line.strip())
最后输出结果文件
fw = open("example.txt",'w')
fw.write("\t")
for process in process_list:
fw.write("%s\t"%(process))
for gene in genes:
fw.write("\n%s\t"%(gene))
for process in process_list:
if gene in process2gene[process]:
fw.write("%d\t"%(1))
else:
fw.write("%d\t"%(0))
fw.close()
这个输出结果如下
接下来是读入R语言的操作
df<-read.csv("D:/Jupyter/GOplot/example.txt",
header = T,
sep="\t",
row.names = 1,
check.names = F)
df<-df[,1:7]
df$logFC<-sample(c(-1,1),dim(df)[1],replace = T)
GOChord(as.matrix(df), space = 0.02, gene.order = 'logFC', gene.space = 0.25, gene.size = 5)
这个是最终的结果,如果我自己拿到这个数据作图完全没有问题,但是这个推文写的内容可能是有些乱的,对于没有python基础的同学应该比较麻烦,争取花时间在研究研究,把这个脚本完善一下,写的更加具有普适性。
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
内容写于2021年5月5号,北京返回南京的火车上 D711,有没有做同一辆车的小伙伴呢?哈哈哈哈