一、背景

对于每个生物信息分析的人来说,ID 匹配(映射)是一项非常常见,但又很繁琐的任务。假设,我们有一个来自上游分析的 gene symbol 或报告的 ID 列表,然后我们的下一个分析却需要使用基因 ID(例如 Entrez gene id 或 Ensembl gene id)。这时候,我们就希望将基因符号或报告的 ID 的列表转换为相应的基因 ID。

在开始介绍今天的主角 mygene 前,我们先来认识一下 MyGene.info

MyGene.info

MyGene.info 是一个由 NIH(美国国立卫生研究院)/NIGMS 资助,用于提供简单易用的 REST Web 服务来查询/检索基因注释数据的 API。 MyGene.info 目前包含了 NCBI Entrez、Ensembl、Uniprot、UCSC 在内的 20 多个数据库,MyGene.info 会每周从这些数据库中进行数据更新。虽然 MyGene.info 中包含的各个数据源可能有数据使用限制,但 MyGene.info 本身的服务是免费的,其源码托管在:https://github.com/biothings/mygene.info

MyGene.info 提供两种简单的 Web 服务:一种用于基因查询,另一种用于基因注释检索。两者都以 JSON 格式返回结果。截至 2019 年 3 月 6 日,MyGene.info 最新的 API 为 v3,相比 v1、v2,v3 新增了以下几点内容:

  • Refseq accession number now contains version
  • “ensembl”, “refseq” and “accession” contains associations between RNA and protein
  • Better mapping between Ensembl and Entrez gene IDs
  • JSON structure slightly changed
  • and more bugfixes

虽然 MyGene.info 是一个在线的 web 服务,但它同时也提供了基于 R 和 Python 的第三方模块,源码均在 GitHub 上开源:

在这里,我们简单展示如何在 Python 中使用 mygene 模块来快速轻松地进行类似的 ID 匹配(映射)。mygene 本质上是一个方便的 Python 模块,通过这个模块我们可以访问 MyGene.info 的基因查询 Web 服务。

二、mygene 安装与使用

1. 安装 mygene

在 Python 中 mygene 的安装非常简单,直接使用 pip 就可以安装。

  1. pip install mygene

mygene 安装完成后,现在我们只需要导入它并实例化 mygeneinfo 类:

  1. import mygene
  2. mg = mygene.MyGeneInfo()

2. 把 gene symbols 转换成 Entrez gene ids