某天,想收集一類藥物的作用靶點,上了Drugbank獲取了全部數(shù)據(jù),加載到R中,解析出來后蒙圈了,它居然一個基因靶點對應(yīng)了多個名稱。這就很為難了。 能不能從基因的全稱來批量獲取其縮寫呢? 到群上提了問,又雙叒叕得到 jimmy老師的點撥。 library(org.Hs.eg.db)#org.Hs.eg.db 是用于geneID轉(zhuǎn)換的包。物種為人類。Bioconductor上還有提供其他物種的。eg2Symbol=toTable(org.Hs.egSYMBOL)##將包中g(shù)ene_symbol轉(zhuǎn)換成數(shù)據(jù)框eg2name=toTable(org.Hs.egGENENAME)##將包中GENENAME轉(zhuǎn)換成數(shù)據(jù)框anno=merge(eg2Symbol,eg2name,by='gene_id')#根據(jù)gene_id合并兩個數(shù)據(jù)框genes=read.table('symbol.txt',stringsAsFactors = F)[,1]##導入自己的gene數(shù)據(jù)anno[match(genes,anno$gene_name),]##match函數(shù)匹配索引,獲得自己的數(shù)據(jù)在包中整出來的數(shù)據(jù)框中的行位置write.csv(anno[match(genes,anno$symbol),],'symbol2name.csv')##寫出文件0 代碼里面很巧妙地用了兩次Totable函數(shù),雖然還不太懂它的作用,但好不好用,看效果,一運行就得到了基因和全稱對應(yīng)的數(shù)據(jù)框。 OK,之后導入數(shù)據(jù)執(zhí)行代碼。 此外,讀了下生信菜鳥團的相關(guān)推文,發(fā)現(xiàn)這個包還有其他轉(zhuǎn)換的用法。
比如,可以借助select函數(shù)從ENSG0編號或是ENTREZID獲取對應(yīng)的基因名稱及全稱。當然從基因的名稱或者全稱反過來獲取前兩者也是可以的。 ##例如 想通過基因全稱獲取它的縮寫和ENTREZID 。這里的基因名就是keytype ensids <- c('tumor protein p53')#基因的全稱cols <- c('SYMBOL','ENTREZID')#想提取的包中含有的相應(yīng)信息所在的列select(org.Hs.eg.db, keys=ensids, columns=cols, keytype='GENENAME')##keytype設(shè)置輸入的類型。這里是基因的名字。 bingo!運行完的結(jié)果 ![]() image.png 以此類推,要獲取什么類別的信息,只要改函數(shù)中數(shù)據(jù)的key、colums對象,和keytype就好了! |
|
來自: 起風了xmj7lizp > 《生信》