主讲老师第二十八课:基因ID转换
先把 TCGA 数据集的行名提取出来,对于这 6 万多个基因名字我们来看看,如何对 gene symbol 进行转换(id_trans.zip)。
1.读取 Ensemble 文件
首先,将需要转换的文件“ensemble.txt”进行读取。
由于该文件只有一列,也就不存在 rownames 参数,点开该文件看一下里面的内容在基因转换过程中,我们主要关心的基因名称的前半段,而基因信息是在不断更新的,点号后面的内容表示基因信息的更新情况,因此,我们需要对其进行分割操作。这里回顾一下前面学过的正则表达式里面的一个知识点,对于基因名称的操作,涉及到对字符串的操作
2.基因名的分割操作
方法一:
首先看一下 strsplit()函数的基本操作。
可以看到,这样一来把整个名字都进行了分割,因为"."代表通配符,表示任何内容,当 以"[.]"或者“\.”形式出现时,这时才代表按点号来进行分割。
这样进行分割以后,我们才真正的将其分割成了两个部分,接着,我们需要把对应的基因名字进行提取。
提取分割结果在第一个列表中的第一个元素,得到我们想要的基因名,此时只是对第一个基因名进行了分割提取,而我们需要对所有的基因名进行操作,这时候就需要涉及到循环,比如说使用 apply()函数。
方法二:
当然,我们还存在另外一种函数,可以快速完成操作。
这里介绍一下 stringr 包里面的 str_split() 函数,与前面的函数就相差了一个"_",但是stringr::str_split() 函数可以快速进行批量切分,接着使用 head()函数查看一下前 6 个点结果。
可以看到,经过切分,形成了一个列表,这里有另外一个函数, unlist() 函数,可以使结果不变成列表形式。
经过 unlist()函数的转换,最终得到了一个由字符串组成的结果可以看到,单数位置的字符为的结果为我们需要的结果,但是,实际上,在 str_split() 函数中,参数 simplify = T 可以快速完成操作。
可以看到,增加参数 simplify = T 后,直接生成一个矩阵格式的数据,查看一下矩阵 a 。
第一列即是我们需要的基因 Ensemble id 号,直接通过取子集的操作即可完成这样,切分,取子集,赋值,直接完成整个操作
3.基因 id 的转换
要进行基因 id 的转换,首先需要知道两者之间的注释关系,这里我们就需要借助 org.Hs.eg.db 包的作用了。
将 org.Hs.eg.db 包读取进来后,下面开始基因 id 的转换过程,首先,我们需要获得其中的两个参数。
此时得到了 gene id 和 gene symbol 相对应的表格得到 gene id 和 ensemble id 相对应的表格。这样,两个基本对应信息的表格就得到了。
接下来,我们需要对三者之间进行相关关联匹配。
(1). 首先,我们通过 ensembl_id 这一列,将数据框 rt 和 g2e 进行匹配,同时,设定 all.x = T 参数,以数据框 rt 为主,即是未能匹配到结果,也同样进行保留。
(2). 接着,再以 gene_id 为沟通,将 symbol 匹配到表格中同时,可以发现,以 gene_id 列为沟通,该列就会被提到第一列。
4.基因去重、排序
基因 id 转换完成后,我们需要对其去重复,并重新按输入文件 rt 中的顺序进行排序,首先,我们来看一下最终得到的数据集 d 中重复的数量这是因为一个 ensemble id 号可能对应多个 gene id ,可以看到,其中 190 个 ensemble id 号存在重复的现象,当然,我们也可以查看一下,具体哪些 ensemble id 号存在重复现象。
接着,排序,去重复,匹配顺序。
最后,将结果进行保存。
这样,整个基因转换过程就完成了。