分享

Bulk RNA-seq | 第3期. 基因ID转换,一键搞定

 新用户4064dVjo 2023-10-28 发布于北京

之前我们探讨了Bulk RNA-seq的价值和学习成本(第1期. 快2024年了,还有必要学习Bulk RNA-seq?),并一起零基础完成了主成分分析(PCA)图(第2期. 零基础画PCA图)。今天我们穿插一个在转录组测序中常用的知识点与技能:不同基因ID的转换。本文将从3个方面分享:有哪些常见的基因ID类型、为什么要进行基因ID转换、如何进行基因ID转换?


一、有哪些常见的基因ID类型

一个具体的基因可以对应多个名字,比如人内皮细胞的maker是CD31,你可能不知道它同时是PECAM1、5175、ENSG00000261371。每个命名都对应这一个命名体系,那么上面的名字分别对应什么命名体系呢?

1. CD31和PECAM1:二者都属于gene symbol,它们属于同一个基因,这就如同我们同时有大名和小名。gene symbol是由人类基因命名委员会(Human Gene Nomenclature Committee, HGNC)指定的基因标识符。

2. 5175:属于Gene ID命名,又称为Entrez ID,这里的Entrez,实际上和我们经常提到的“NCBI数据库”是指一个东西,只不过NCBI是一个组织(美国国家生物技术信息中心),而Entrez是一个生信检索引擎。

3. ENSG00000261371:属于Ensemble ID命名,是欧洲生物信息数据库的基因标识符。Ensemble ID由4个字母和一串数字组成,字母ENSG代表基因,字母ENST代表转录本。总的来说,Ensemble ID的命名规则是:ENS[物种符号][分子特征][独一无二的11位数字]。

其中,分子特征对应的编号如下:

大家可以去NCBI数据库(或者说去Entrez)搜索一下,先进入https://www.ncbi.nlm./,选择Gene数据库,输入CD31。

可以看到不同物种的CD31基因的信息,可以点击第一排(human的信息)。

可以同时看到gene symbol、Gene ID/Entrez ID、Ensemble ID。

二、为什么要进行基因ID转换

不同的命名有着各自的适用场景,比如

1. Gene symbol:包括两种,其中基因亚名如CD31可以让非生信人员快速辨认出这个基因,而正式的gene symbol如PECAM1则可以做基因ID转换和富集分析,以及多个数据集的整合分析。

2. Gene ID或Entrez ID:进行富集分析如GO,KEGG和GSEA。

3. Ensemble ID:往往是为了给一个分子提供一个独一无二的ID,在实践中,基本上是将Ensemble ID转化为其他ID,很少将其他ID转化为 Ensemble ID。

三、如何进行基因ID转换

对于单个的基因,我们可以通过第一部分分享的CD31的例子在NCBI里面检索;但是对于一串基因(如1000个),则需要借助网页工具(如DAVID的ID Conversion Tool,https://david./conversion.jsp)和R语言来实现。今天我们主要分享基于R语言的基因ID批量转换的实现。我们将分别展示基于2种R包的转换方法。

clusterProfiler

代码如下:

1.R包的下载及安装

BiocManager::install("clusterProfiler"#没有下载的,需要先下载
library(clusterProfiler) 
2.读取数据
data <- read.csv("./Bulk_RNA_seq_Practice_1.csv",header = T,row.names = 1)

3.提取gene列数据

genes <- row.names(data)

4. 基因ID转换(用到bitr函数)

ids <- bitr (genes, fromType = 'SYMBOL', toType = c('ENTREZID','ENSEMBL'), OrgDb = 'org.Hs.eg.db')

 

综上,基于clusterProfiler包的基因ID转化方法为:

#1.R包的下载及安装(没有下载的,需要先下载)
BiocManager::install("clusterProfiler"#没有下载的,需要先下载
library (org.Hs.eg.db) 
#2.读取数据
data <- read.csv("./Bulk_RNA_seq_Practice_1.csv",header = T,row.names = 1)
#3.提取gene列数据
genes <- row.names(data)
#4. 基因ID转换
ids <- bitr (genes, fromType = 'SYMBOL', toType = c('ENTREZID','ENSEMBL'), OrgDb = 'org.Hs.eg.db')

BiomaRt

1.R包的下载及安装
#BiocManager::install("biomaRt")
library("biomaRt")

2.读取数据

data <- read.csv("./Bulk_RNA_seq_Practice_1.csv",header = T,row.names = 1)

3.提取gene列数据

genes <- row.names(data)

4. 基因ID转换

4.1 先加载想要的数据库(biomart)和数据集(dataset):先listMarts(),后useMart()

1)如何确定选哪个数据库(biomart?

 listMarts()

Biomart目前提供了4种数据库,我们将数据库biomart 选定为ENSEMBL_MART_ENSEMBL,且目前对应的版本为Ensembl Genes 110。确定了数据库(以及其版本)之后,还需要确定该数据库中的数据集。
(2)如何确定选哪个数据集(dataset)?
tmp_mart <- useMart(biomart = "ENSEMBL_MART_ENSEMBL",version = "Ensembl Genes 110")
listDatasets(tmp_mart)

ENSEMBL_MART_ENSEMBL数据库中提供了214个物种,我们用的演示数据来源于人,所以选定为hsapiens_gene_ensembl。

4.2 根据选定的数据库(biomart)和数据集(dataset),构建用于转换的数据集: useMart

my_mart <- useMart(biomart = "ENSEMBL_MART_ENSEMBL", dataset = "hsapiens_gene_ensembl")

4.3 基于前面构建的数据集和需要转换的基因ID,实现不同基因ID的转换

gene_id_info<- getBM(attributes=c("ensembl_gene_id","entrezgene_id","hgnc_symbol"),
 filters = "hgnc_symbol"#取决于我们演示数据
 values = genes, #前期提前提取好
 mart= my_mart) #构建的数据库 
综上,基于biomaRt包的基因ID转化方法为:
#1.R包的下载及安装(没有下载的,需要先下载)
#BiocManager::install("biomaRt")
library("biomaRt")
#2.读取数据
data <- read.csv("./Bulk_RNA_seq_Practice_1.csv",header = T,row.names = 1)
#3.提取gene列数据
genes <- row.names(data)
#4. 基因ID转换
my_mart <- useMart(biomart = "ENSEMBL_MART_ENSEMBL", dataset = "hsapiens_gene_ensembl")

gene_id_info<- getBM(attributes=c("ensembl_gene_id","entrezgene_id","hgnc_symbol"),
 filters = "hgnc_symbol"#取决于我们演示数据
 values = genes, #前期提前提取好
 mart= my_mart) #构建的数据库


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多