TCGA ID 转化的小插曲

下载TCGA数据后,我们会发现新版的TCGA表达数据有6万个ENSG(ENSEMBL ID),听说旧版时是用gene symbol的,而且我也觉得有时gene symbol更能说明问题。如果用过Firehose下载的TCGA数据,会发现其是用entrez id和gene symbol共同来表示基因的。如果是使用生信人的那款工具的话,其提供了ID转化功能,即把ENSG转化为gene symbol。

作为一个生信工作者,当然有自己的一套ID转化方法,所以我想把从官网下载方式下载下来的TCGA数据,以不同的方法将ENSG转化为gene symbol,然后跟生信人工具进行比较下~~!

如果对生信技能中ID转化没什么概念的话,可以先看看我们生信技能树中曾经的一道编程题练练手生信编程直播第8题-几个ID转换咯 http://www.biotrainee.com/thread-941-1-1.html

NCBI数据库脚本转化

名字有点绕,其实是依靠NCBI提供一些ID对应关系的文件,其中有一个gene2ensembl文件就提供了gene id和ensembl id的对应关系。当然我们是想将ensembl id转化为gene symbol,所以还需要gene_info文件,其提供了gene id和gene symbol的对应关系,这样思路清楚了:整理上述2个文件,获得ensembl id与gene symbol的对应关系文件。

两个文件的下载地址:ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/

接着我们要从这两个文件中分别提取人类(taxid:9606)的gene id,ensembl id,gene symbol等信息:

  1. perl -alne 'print $_ if ($F[0] == 9606)' gene2ensembl |cut -f 2,3 >9606.gene2ensembl.list

  2. perl -alne 'print $_ if ($F[0] == 9606)' gene_info |cut -f 2,3 >9606.gene2symbol.list

获得9606.gene2ensembl.list和9606.gene2symbol.list文件后,我们还需要将两个文件合并,整合成一个9606.ensembl2symbol.list文件,写一个简单的脚本 1.pl

  1. #!/bin/perl -w

  2. use strict;

  3. my $gene2ensembl = shift @ARGV;

  4. my $gene2symbol = shift @ARGV;

  5. my %hash;

  6. open my $fh1, $gene2ensembl or die;

  7. while (<$fh1>) {

  8.    chomp;

  9.    my @array = split /\t/, $_;

  10.    $hash{$array[0]} = $array[1];

  11. }

  12. close $fh1;

  13. open my $fh2, $gene2symbol or die;

  14. while (<$fh2>) {

  15.    chomp;

  16.    my @array = split /\t/, $_;

  17.    if ($hash{$array[0]}) {

  18.        print "$hash{$array[0]}\t$array[1]\n";

  19.    }

  20. }

  21. close $fh2;

运行脚本 perl 1.pl 9606.gene2ensembl.list 9606.gene2symbol.list> 9606.ensembl2symbol.list,其中ensembl id与gene symbol有对应的ID数目有25385个,其中有3个gene symbol是重复的,应该是不同的几个ensembl id对应到同一个gene symbol的原因。

R包转换

这个方法就比较好理解了,就是利用注释R包中的数据进行ID转化,比如TCGA肯定是用org.Hs.eg.db包了,然后利用 org.Hs.egENSEMBL2EG和 org.Hs.egSYMBOL中的数据;从命名上应该很好理解,前者是ensembl id和gene id的对应关系,后者是gene id和gene symbol的对应关系。最后整理下获得跟上述一样的ensembl id和gene symbol的对应关系。

  1. library(org.Hs.eg.db)

  2. ensembl2gene <- toTable(org.Hs.egENSEMBL2EG)

  3. gene2symbol <- toTable(org.Hs.egSYMBOL)

  4. ensemble2symbol <- merge(ensembl2gene, gene2symbol, by = "gene_id")[2:3]

  5. write.table(ensemble2symbol, file = "ensembl2symbol.txt", sep = "\t", quote = F, row.names = F)

ensembl2symbol.txt文件中有28945个ID对应关系,这比第一种方法获得的结果还多3000多个。。。然后我粗略的检查了下,发现是由于有多个gene id对应到同一个ensembl id上的情况,然后我也有理由相信第一种方法也会有这种情况发生(但是检查了下,第一种方法这种情况比较少,大约只有39个。。)。但是我在ENSEMBL官网查到一般一个ensemble id也只有一个gene Symbol,所以还是由于两者数据库的数据有部分不统一所造成的。

HGNC Symbol

既然从ensembl id转换到gene id,再转化到gene symbol会有这么曲折,那我干脆直接从ensembl id转化到HGNC symbol吧(现在很多官方symbol都用HGNC symbol了?),第一个想到是用EMSEMBL的biomart,然后想了想,还是从HGNC官网上下载信息然后用代码来提取symbol与ensembl id的对应关系吧

下载地址:ftp://ftp.ebi.ac.uk/pub/databases/genenames/new/tsv/hgnccompleteset.txt

然后看了下第2列是symbol,第20列是ensembl id,所以用perl提取下

  1. perl -F'\t' -alne 'print "$F[19]\t$F[1]" if ($F[19])' hgnc_complete_set.txt >hgnc_ensembl2symbol.list

总共有37358个对应关系,然后再查看下有无同一个ensembl id对应到多个symbol上的

  1. perl -alne '$hash{$F[0]}++;print $_ if ($hash{$F[0]}>1)' hgnc_ensembl2symbol.list

结果还真有9个,再把9个查了下ncbi和ensembl网站,都是存在,只是有几个NCBI的symbol跟emsembl的不一致,好尴尬。

那为何这种的ensembl id与symbol的对应关系相比前两种方法多这么多呢。后来我查了下,发现NCBI的gene2ensembl文件里的gene id和ensembl id的对应关系一般都是有对应RNA和protein的(官网解释:This file reports matches between NCBI and Ensembl annotation based on comparison of rna and protein features;而且R包中数据也是基于NCBI的那个data数据库,所以可以粗略前2种方法是没有假基因存在的。那我们也剔除掉假基因,再看看对应关系,可以看到假基因在标签在hgnccompleteset.txt文件的第4列,那么代码如下

  1. perl -F'\t' -alne 'next if ($F[3] eq "pseudogene"); print "$F[19]\t$F[1]" if ($F[19])' hgnc_complete_set.txt >hgnc_ensembl2symbol_2.list

这个剔除掉假基因的hgncensembl2symbol2.list文件只有26034个对应关系了,但是跟方法1还是只有90%的相似度。好吧,还是以这次的为准。毕竟我还是挑了好几个(有差异的)查了下的,都跟ENSEMBL数据库中收录的保持一致,毕竟NCBI收录的跟ensembl收录的还是有点差别的。

HGNC Symbol与生信人工具的比较

在我查看生信人这款工具的时候,我猜想其ID转化功能必然有一个ID对应关系的文件,果然在软件的首目录下就有个ENSG_ID.txt文件,打开就能发现其就是ensembl id与symbol的对应关系,总共有25527条信息。

其结果跟我通过HGNC Symbol找到的对应关系也有出入,简单做个venn图比较下,ENSGID.txt 文件中有2414条信息没有在 hgncensembl2symbol_2.list 文件中找到。然后我找了几个ensembl id 在ENSEMBL 官网上搜下了,发现没找到的那2414个ID中有些是假基因。

所以我拿未剔除假基因的对应关系 hgncensembl2symbol.list 文件与ENSGID.txt 文件再做个venn图看看,结果ENSGID.txt 文件中有2010条信息没在 hgncensembl2symbol.list 文件中找到。然后也挑了几个在ENSEMBL官网搜了下,这次结果还是可以接受,hgnc_ensembl2symbol.list 结果跟官网还是保持一致的,而生信人工具一些symbol是 HGNC symbol 的别名,当然也不是说别名就不能用啦。

Summary

这篇文章主要还是练习了下ID转化的方法,至于TCGA到底用哪个ID转化方法的还是看情况了吧,如果只是转化为entrez id(gene id,类似Firehose下载的数据),而且也不考虑假基因的情况,那么方法1和方法2都是可以的;如果需要转化为symbol,我觉得如果是我自己来做的话,一般会选择方法3。

如果是ID转换知识,推荐我们技能树以前的总结帖:

ID转换大全

(0)

相关推荐

  • 生信基础 | 人-小鼠基因之间的比较

    先看看MSigDB中的基因ENTREZID是否可以全部转化为SYMBOL. library(biomaRt)library(clusterProfiler)library(org.Hs.eg.db)l ...

  • 从TCGA下载的甲基化数据格式解读

    谢京合关注 0.5022020.10.28 17:56:10字数 844阅读 600 我的天,第一次接触甲基化数据,真是令人头大. 那就先从TCGA上下载某一种癌症的甲基化数据开始吧. 1.下载. 数 ...

  • Probe id 如何转换为gene symbol?

    之前有很多人问我们,有时候没有DataSet full SOFT file文件,只有图二的界面,该怎么办呢? 我们可以下载Series Matrix File(s),然后进行分析 但是这样得到的仅有p ...

  • Gene ID 转换工具

    写在前面 我们在研究基因的时候,尤其是在研究高通量数据分析,经常会碰到我们研究的这个数据的基因ID不是我们通常意义上的基因名.拿TCGA的数据举例,TCGA RNA-seq的数据比对的基因是ID是En ...

  • 阿登战役之前的小插曲:卢森堡民兵大战武装党卫军

    维埃登城堡战斗 背景:1944年,卢森堡迎来了解放,德军不得不退守德国-卢森堡旧边界的界河.卢森堡被解放后,原卢森堡抵抗组织在美军的援助下,建立了民兵组织.这些民兵被部署在绍尔河和奥尔河的沿岸作为观察 ...

  • 【原创】《麦收小插曲》 文/诵:赵 霞

    第510期 [原创] <麦收小插曲> 文/诵:赵  霞 麦收季又恰逢父亲节,自然又想起了过去过麦收的点点滴滴. 多年来,割麦子的辛苦一直萦绕心底,总盼望着有联合收割机来替去好多辛劳和繁琐. ...

  • 5月19日父母成功日记:一些小插曲

    这是月方客厅的第507篇原创文章! 文丨月方 柠檬: 5月19日打卡14天 也许是因为最近没有把过多的精力放在孩子身上,反而发现有些事情孩子一直按我们的约定在执行.比如:晨读.收拾自己的床铺.每天打卡 ...

  • 课前演讲小插曲

    我们语文课前演讲现在开讲<西游记>,每天两位同学,按照顺序每人讲一回.昨天讲到第五回,那位同学讲得比较粗糙简短,声音也有点儿小.所以我要求今天演讲的同学,把第五回再讲一遍. 今天我刚一到教 ...

  • 朗诵“小插曲”

    2016年6月17日,妮妮参加了河南省第三届"经典照亮人生"诵读比赛复赛,在来自全省各地的60多位选手中,获得第15名.复赛中的前5名进入决赛,妮妮这个成绩显然无缘决赛,但这个位次 ...

  • word稿纸如何设置-word出现了未经授权产品小插曲

    在写这篇文章之前,有一个小插曲,那就是当我打开word软件时,发现软件的大部分功能都被禁用了,再一瞧,嗨,文件的顶部出现了未经授权产品几个字,为了找方法破解软件,我耗费了两个小时,试了多种方法,如果您 ...

  • 客栈小插曲

    "明天几点出发?" "7点起床,收拾完就走!" 次日一早,有人咚咚敲窗,接着传来焦急的声音:我在楼下等你们! 闹钟没响.睁眼,看表:6:55!于是不由得笑出声来 ...

  • 疫情是一场生命教育。张守权:“抗疫”中的一段小插曲

    蒋小华<逆行者> "抗疫"中的小插曲 张守权 刚吃过早饭,老伴就迫不及待地给女儿和京东快递分别打电话,催问从哈尔滨给我寄的药是否发出.女儿和京东的回答都令人失望:一个说 ...

  • 张琼:遭遇埋伏/有惊无险的湘西剿匪小插曲

    遭遇埋伏  张  琼 在一个晴朗的夏夜里,在湘西山区一个偏远的小站,一位年轻的姑娘用柔和的声音,给我讲述了她的父辈们亲身经历过的一个令人难以忘记的真实故事-- 那是1950年初,湘西解放不久,一些边远 ...