天天看點

對miRNA進行go和kegg等功能資料庫資料庫注釋

如果大家對go和kegg等功能資料庫注釋有一定了解,就應該是知道kegg其實裡面就記錄各個物種不到一半的蛋白編碼基因功能,比如人類, 約2萬個蛋白編碼基因,也就七千多個是有kegg功能注釋的。其它物種就更是慘不忍睹,沒有那麼多科研經費投入進去,實際上對它們的基因功能就無從得知!

不過,哪怕是對人類來說,kegg注釋的也僅僅是蛋白編碼基因,但是如果你了解人類gtf檔案,就應該是知道,裡面有6萬左右的基因,如果我們的差異分析,定位到了 lncRNA,假基因,miRNA的基因,其實就不能直接進行功能資料庫注釋。

我們以miRNA為例,每個miRNA都是可以靶向調控數百甚至數千個蛋白編碼基因,是以我們如果要對miRNA進行go和kegg等功能資料庫資料庫注釋,就需要以靶向調控為橋梁。

前面我們介紹了兩次關于miRNA的靶向基因的查詢工具,分别是:

  • microRNAs靶基因資料庫哪家強
  • 使用miRNAtap資料源提取miRNA的預測靶基因結果

而且我們也多次講解了go和kegg等功能資料庫資料庫注釋,見:

  • 從基因名到GO注釋一步到位
  • 3大線上分析工具:Enrichr、WebGestalt、gprofiler與R包clusterprofiler的比較

是以,理論上你能夠查詢到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 唯一的解決方案哈!

對miRNA進行go和kegg等功能資料庫資料庫注釋

其它功能資料庫同樣的注釋流程哈!