批量基因ID转换python版

不得不承认基因的ID种类确实很多,好在常用的就那么几个。做分析基本都会遇到基因ID转换的需求,能用来做这个的事资源还是比较多的。其中,NCBI作为生命科学领域的数据库,信息那是相当的全面,做个基因ID转换那肯定没问题,而且数据库也提供了相应的API方便调用,也有现在的软件可以用,如biopython。但这个方式在基因数量多、转换多个ID时不是很方便。此时,可用biomartmygene来替代,这两个软件分别是ensemblMyGene.info数据库API的访问软件,用这两个软件做基因ID转换真的很便捷了。

biomart使用的原则整体上遵循以下四个步骤:
Datasets -> Filters (filtering and inputs) -> Attributes (desired output) -> Results

import biomart

genes_list = ['JCHAIN', 'IGJ', 'IGHG1', 'MZB1', 'SDC1', 'CD79A', 'HSP90B1', 'FNDC3B', 'PRDM1', 'IGKC']
server = biomart.BiomartServer("http://www.ensembl.org/biomart")
ensembl = server.datasets['hsapiens_gene_ensembl']
res = ensembl.search({'filters': {'external_gene_name': genes_list}, 'attributes': ['external_gene_name', 'ensembl_gene_id']})
genes_conv_df = pd.read_csv(res.url, sep='\t', names=["Gene name", "Gene stable ID"]).dropna()
genes_conv_df.head()
  Gene name   Gene stable ID
0     IGHG1  ENSG00000277633
1      IGKC  ENSG00000211592
2     IGHG1  ENSG00000211896
3      MZB1  ENSG00000170476
4     PRDM1  ENSG00000057657

external_gene_nameGene Name,即symbol ID。如果想知道哪些字段可用来查询,可以直接查看ensembl对象的filters属性。类似的方式可以查看哪些字段可用来过滤。

上面biomart的转换过程已经挺简单了,相比较而言mygene使用起来更容易:

import mygene

genes = ['SDC1', 'CD79A', 'HSP90B1', 'FNDC3B', 'PRDM1']
mg = mygene.MyGeneInfo()
res = mg.querymany(genes, scopes="symbol", fields="symbol,entrezgene,ensembl.gene,uniprot.Swiss-Prot", species="human", as_dataframe=True)
res
           _id     _score entrezgene   symbol     ensembl.gene uniprot.Swiss-Prot
SDC1      6382  17.965767       6382     SDC1  ENSG00000115884             P18827
CD79A      973  17.849460        973    CD79A  ENSG00000105369             P11912
HSP90B1   7184  17.567043       7184  HSP90B1  ENSG00000166598             P14625
FNDC3B   64778  18.165148      64778   FNDC3B  ENSG00000075420             Q53EP0
PRDM1      639  18.178675        639    PRDM1  ENSG00000057657             O75626

以下是MyGene.info数据库支持的物种:

全部可用的字段见网页:
https://docs.mygene.info/en/latest/doc/data.html#available-fields

biomartmygene分别有对应的R包,习惯用R语言的人也可以很快乐地用起来。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容