对miRNA进行go和kegg等功能数据库数据库注释

如果大家对go和kegg等功能数据库注释有一定了解,就应该是知道kegg里面其实就记录各个物种不到一半的蛋白编码基因功能,比如人类, 约2万个蛋白编码基因,也就七千多个是有kegg功能注释的。其它物种就更是惨不忍睹,没有那么多科研经费投入进去,实际上对它们的基因功能就无从得知!

不过,哪怕是对人类来说,kegg注释的也仅仅是蛋白编码基因,但是如果你了解人类gtf文件,就应该知道,里面有6万左右的基因,如果我们的差异分析,定位到了 lncRNA,假基因,miRNA的基因,其实就不能直接进行功能数据库注释。

我们以miRNA为例,每个miRNA都是可以靶向调控数百甚至数千个蛋白编码基因,所以我们如果要对miRNA进行go和kegg等功能数据库数据库注释,就需要以靶向调控为桥梁。

前面我们介绍了两次关于miRNA的靶向基因的查询工具,分别是:

而且我们也多次讲解了go和kegg等功能数据库数据库注释,见:

所以,理论上你能够查询到miRNA的靶向基因,就可以用靶基因作为桥梁去进行数据库注释啦!

当然,如果你不想看这个中间过程,自己也可以写一个函数,或者使用造好的轮子,比如:

rm(list = ls())
library(miRNAtap)
library(topGO)
library(org.Hs.eg.db)

mir = 'miR-10b'
predictions = getPredictedTargets(mir, species = 'hsa',
 method = 'geom', min_src = 2) 

rankedGenes = predictions[,'rank_product']
selection = function(x) TRUE 
# we do not want to impose a cut off, instead we are using rank information
allGO2genes = annFUN.org(whichOnto='BP', feasibleGenes = NULL,
 mapping="org.Hs.eg.db", ID = "entrez")
GOdata = new('topGOdata', ontology = 'BP', allGenes = rankedGenes, 
 annot = annFUN.GO2genes, GO2genes = allGO2genes, 
 geneSel = selection, nodeSize=10)
GOdata

results.ks = runTest(GOdata, algorithm = "classic", statistic = "ks")
results.ks

allRes = GenTable(GOdata, KS = results.ks, orderBy = "KS", topNodes = 20)
allRes[,c('GO.ID','Term','KS')]

这个topGO也是一个老牌的R包,虽然说因为Y书的原因,我们一直在强推clusterProfiler,但是并不意味着clusterProfiler 唯一的解决方案哈!

image-20200421084935147

其它功能数据库同样的注释流程哈!

文末友情宣传

强烈建议你推荐我们生信技能树给身边的博士后以及年轻生物学PI,帮助他们多一点数据认知,让科研更上一个台阶:

Comments are closed.