R语言小记3:ENSG和基因symbol间的名称转换

0. 数据准备(加载自己需要转换的数据)

Data <- read.table("GSE197543/GSE197543_UMIsMatrix.txt", header = T)

head(row.names(Data))
## [1] "ENSG00000225972" "ENSG00000225630" "ENSG00000237973" "ENSG00000248527" "ENSG00000237491" "ENSG00000228794"

1. 使用其他R包"AnnotationDbi"和"org.Hs.eg.db"

# 加载需要的包
library(AnnotationDbi)
library(org.Hs.eg.db)

# 进行转换
gene_symbols <- select(org.Hs.eg.db, keys = row.names(Data), columns = "SYMBOL", keytype = "ENSEMBL")
## 'select()' returned 1:many mapping between keys and columns

ꔷ 发现存在一个ENSG(Ensembl基因ID)可能对应多个基因符号(gene symbols),这通常是由于以下几个原因:
1)基因的异构体:同一基因可能产生多个转录本,每个转录本有不同的基因符号
2)基因重命名:基因符号可能会随时间的推移而变化,特别是在注释版本更新时
3)基因家族:某些基因可能属于同一基因家族,导致多个基因符号被标记为相同的ENSG

# 计算每个值的频次
freq_table <- table(gene_symbols$ENSEMBL)

# 提取频次大于1的值
duplicate_values <- names(freq_table[freq_table > 1])

# 取出重复行
duplicates <- gene_symbols[gene_symbols$ENSEMBL %in% duplicate_values, ]
ENSG-1

2. 从Ensembl下载GTF文件自行转换

2.1 GTF文件的下载(网页端或服务器端)

1)打开浏览器,访问 Ensembl数据库. 选择物种:Human
2)在物种页面,找到"Gene annotation"版面,通常在页面的右侧,点击Download GTF or GFF3
3)在下载页面,查找"GTF"格式的文件,选择最新版本下载。这里下载"Homo_sapiens.GRCh38.113.gtf.gz"

# 也可在服务器端直接进行下载
$ wget https://ftp.ensembl.org/pub/release-113/gtf/homo_sapiens/Homo_sapiens.GRCh38.113.gtf.gz

2.2 数据的提取及整合

# 加载需要的包
library(rtracklayer)

# 读取GTF文件
gtf_data <- import("/data/shumin/GBM/GSE197543/Homo_sapiens.GRCh38.113.gtf.gz")

# 查看数据结构
head(gtf_data)
## GRanges object with 6 ranges and 22 metadata columns:
##       seqnames          ranges strand |         source        type     score     phase         gene_id gene_version   gene_name    gene_source   gene_biotype   transcript_id transcript_version transcript_name transcript_source transcript_biotype
##          <Rle>       <IRanges>  <Rle> |       <factor>    <factor> <numeric> <integer>     <character>  <character> <character>    <character>    <character>     <character>        <character>     <character>       <character>        <character>
##   [1]        1 3069168-3438621      + | ensembl_havana gene               NA      <NA> ENSG00000142611           17      PRDM16 ensembl_havana protein_coding            <NA>               <NA>            <NA>              <NA>               <NA>
##   [2]        1 3069168-3434342      + | havana         transcript         NA      <NA> ENSG00000142611           17      PRDM16 ensembl_havana protein_coding ENST00000511072                  5      PRDM16-206            havana     protein_coding
##   [3]        1 3069168-3069296      + | havana         exon               NA      <NA> ENSG00000142611           17      PRDM16 ensembl_havana protein_coding ENST00000511072                  5      PRDM16-206            havana     protein_coding
##   [4]        1 3069260-3069296      + | havana         CDS                NA         0 ENSG00000142611           17      PRDM16 ensembl_havana protein_coding ENST00000511072                  5      PRDM16-206            havana     protein_coding
##   [5]        1 3069260-3069262      + | havana         start_codon        NA         0 ENSG00000142611           17      PRDM16 ensembl_havana protein_coding ENST00000511072                  5      PRDM16-206            havana     protein_coding
##   [6]        1 3186125-3186474      + | havana         exon               NA      <NA> ENSG00000142611           17      PRDM16 ensembl_havana protein_coding ENST00000511072                  5      PRDM16-206            havana     protein_coding
##                   tag transcript_support_level exon_number         exon_id exon_version      protein_id protein_version     ccds_id
##           <character>              <character> <character>     <character>  <character>     <character>     <character> <character>
##   [1]            <NA>                     <NA>        <NA>            <NA>         <NA>            <NA>            <NA>        <NA>
##   [2] gencode_primary                        5        <NA>            <NA>         <NA>            <NA>            <NA>        <NA>
##   [3] gencode_primary                        5           1 ENSE00002048533            1            <NA>            <NA>        <NA>
##   [4] gencode_primary                        5           1            <NA>         <NA> ENSP00000426975               1        <NA>
##   [5] gencode_primary                        5           1            <NA>         <NA>            <NA>            <NA>        <NA>
##   [6] gencode_primary                        5           2 ENSE00001754112            1            <NA>            <NA>        <NA>
##   -------
##   seqinfo: 70 sequences from an unspecified genome; no seqlengths

# 提取ENSG ID和基因符号
gene_info <- data.frame(
  ensembl_gene_id = gtf_data$gene_id,
  gene_symbol = gtf_data$gene_name
)

# 去重(如果有重复项)
gene_info <- unique(gene_info)

# 查看结果
head(gene_info)
##     ensembl_gene_id gene_symbol
## 1   ENSG00000142611      PRDM16
## 221 ENSG00000284616        <NA>
## 227 ENSG00000157911       PEX10
## 347 ENSG00000260972        <NA>
## 350 ENSG00000224340    RPL21P21
## 353 ENSG00000229280     EEF1DP6

ꔷ 发现存在多个ENSG(Ensembl基因ID)可能对应一个基因符号(gene symbols),猜测原因:
1)基因重叠和融合:一些基因在基因组上可能会相互重叠,或者通过基因融合事件而形成新的基因。在这种情况下,新的基因可能会共享相同的基因符号。
2)转录本的多样性:基因可以产生多个转录本,这些转录本可能在功能上有不同的角色。尽管它们共享相同的基因符号,但在不同的情况下可能会被分配到不同的ENSG ID。
3)基因家族:某些基因可能属于同一基因家族,可能共享相同的基因符号。

# 计算每个值的频次
freq_table_2 <- table(gene_info$SYMBOL)

# 提取频次大于1的值
duplicate_values_2 <- names(freq_table_2[freq_table_2 > 1])

# 取出重复行
duplicates_2 <- gene_info[gene_info$SYMBOL %in% duplicate_values_2, ]
ENSG-2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容