分享

无痛解决基因全称与缩写的转换

 起风了xmj7lizp 2019-10-30

“山穷水尽疑无路,柳暗花明又一村”

某天,想收集一类药物的作用靶点,上了Drugbank获取了全部数据,加载到R中,解析出来后蒙圈了,它居然一个基因靶点对应了多个名称。这就很为难了。
怎么从基因全称获取它的缩写呢?
我知道Uniprot可以弄,但小白一个个输入查询,那就很痛苦了!

能不能从基因的全称来批量获取其缩写呢?

到群上提了问,又双叒叕得到 jimmy老师的点拨。
当然可以!org.Hs.eg.db包可以做!
代码如下:

library(org.Hs.eg.db)#org.Hs.eg.db 是用于geneID转换的包。物种为人类。Bioconductor上还有提供其他物种的。eg2Symbol=toTable(org.Hs.egSYMBOL)##将包中gene_symbol转换成数据框eg2name=toTable(org.Hs.egGENENAME)##将包中GENENAME转换成数据框anno=merge(eg2Symbol,eg2name,by='gene_id')#根据gene_id合并两个数据框genes=read.table('symbol.txt',stringsAsFactors = F)[,1]##导入自己的gene数据anno[match(genes,anno$gene_name),]##match函数匹配索引,获得自己的数据在包中整出来的数据框中的行位置write.csv(anno[match(genes,anno$symbol),],'symbol2name.csv')##写出文件0

代码里面很巧妙地用了两次Totable函数,虽然还不太懂它的作用,但好不好用,看效果,一运行就得到了基因和全称对应的数据框。
这样的数据放到R里可是轻轻松松可以认识的!

OK,之后导入数据执行代码。
几秒钟,瞬间无痛解决基因从全称到缩写的转换问题!
虽然Drugbank有点坑,有些基因全称因为和包中提供的全称不一致所有没办法匹配上,但总算是最大程度解决了我的困惑。


此外,读了下生信菜鸟团的相关推文,发现这个包还有其他转换的用法。
看一眼包中的所含的信息

keytypes(org.Hs.eg.db)#包里面有的数据注释类别共有26个# [1] 'ACCNUM'       'ALIAS'        'ENSEMBL'    'ENSEMBLPROT'  'ENSEMBLTRANS' 'ENTREZID'    
 #[7] 'ENZYME'       'EVIDENCE'     'EVIDENCEALL'  'GENENAME'     'GO'           'GOALL'       #[13] 'IPI'          'MAP'          'OMIM'         'ONTOLOGY'     'ONTOLOGYALL'  'PATH'        #[19] 'PFAM'         'PMID'         'PROSITE'      'REFSEQ'       'SYMBOL'       'UCSCKG'      #[25] 'UNIGENE'      'UNIPROT'  

比如,可以借助select函数从ENSG0编号或是ENTREZID获取对应的基因名称及全称。当然从基因的名称或者全称反过来获取前两者也是可以的。
select函数的结构
select(org.Hs.eg.db, keys= , columns= , keytype=' ')

##例如 想通过基因全称获取它的缩写和ENTREZID 。这里的基因名就是keytype ensids <- c('tumor protein p53')#基因的全称cols <- c('SYMBOL','ENTREZID')#想提取的包中含有的相应信息所在的列select(org.Hs.eg.db, keys=ensids, columns=cols, keytype='GENENAME')##keytype设置输入的类型。这里是基因的名字。

bingo!运行完的结果


image.png

以此类推,要获取什么类别的信息,只要改函数中数据的key、colums对象,和keytype就好了!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多