R语言做生信

有些GEO平台的探针转换比较麻烦。

2019-04-23  本文已影响13人  9d760c7ce737

这个帖子是为了回答一个学员的提问,GPL4381的 平台的探针和gene symbol转换怎么做?
这个平台的信息在这个页面:
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL4381

找不到ID和genesymbol的转换,准确地说是没有直接的对应关系


但是我们知道gene symbol藏在那串长长的名字中,此刻,即使不知道如何提取,也要想到R语言是万能的。

我们下载这个平台的信息


然后读入R语言

GPL4381 <- data.table::fread("GPL4381-4306.txt")

大概是这个样子的


我们先观察一下,提取一个名称该用什么逻辑。举个例子

Homo sapiens myelin expression factor 2 (MYEF2), mRNA

首先,他必须在两个括号之内,括号里面第一个元素是大写字母,后面是大写字母和数字的组合,那么stringr这个包中的str_extract可以实现。

str_extract("Homo sapiens myelin expression factor 2 (MYEF2), mRNA","\\([A-Z]{1}[A-Z,0-9]{2,}\\)")

[1] "(MYEF2)"

我这里编写的不好,能够实现功能,这种情况下如果碰到这样的元素,有两个括号

Homo sapiens intraflagellar transport 80 homolog (Chlamydomonas) (IFT80), mRNA

这个表达式也是能够顺利实现的

str_extract("Homo sapiens intraflagellar transport 80 homolog (Chlamydomonas) (IFT80), mRNA","\\([A-Z]{1}[A-Z,0-9]{2,}\\)")

(IFT80)

既然我们明确地定义了做一件事情的步骤,那么我们就可以批量做。

library(dplyr)
library(tidyr)
library(stringr)
probeGenesymbol <- GPL4381 %>% 
  # 选择出需要的两列
  select(ID,GB_DEFINITION) %>% 
  # 过滤掉GB_DEFINITION为空的行
  filter(GB_DEFINITION != "") %>% 
  # 增加一个新的列gene_symbol,这个列获取了括号中的内容,这里的点号代表当前传入的数据,就是上一步产生的数据
  mutate(gene_symbol = str_extract(.$GB_DEFINITION, "\\([A-Z]{1}[A-Z,0-9]{2,}\\)")) %>% 
  # 过滤掉gene_symbol 为空的行
  filter(gene_symbol !="") %>% 
  # 下面我们去掉两边的括号,我们采取另类的作为,用separate
  separate(gene_symbol,into=("gene_symbol"),sep = "\\)")%>% 
  separate(gene_symbol,into = c("drop","gene_symbol"),sep = "\\(")%>% 
  # 选择最终需要呈现的列
  select(ID,gene_symbol,GB_DEFINITION)

最终把行数从14112变成了10715
我们来看看得到的probeGenesymbol


我们觉得效果还可以,这时候就可以用merge,inner_join等方法跟表达矩阵合并了
参看这个帖子:
skr!GEO芯片数据的探针ID转换

我们刚才发现,行数从14112变成了10715,理论上我们得到的是mRNA的信息,肯定是损失了非编码RNA的信息,这个信息如何获得呢?
回看平台信息


红框内是每一个探针的序列,如果把这个序列比对到基因组,可以对每一行的信息进行注释,
方法可以参考这个:
芯片探针序列的基因组注释

也可以在微店中检索小丫画图,其第58个作品就是如何提取lncRNA。

但是,对于初学者来说,都相对困难,需要有比较好的R语言基础才能驾驭。

好了总结一下今天帖子的三个注意点,

而这个用法也隐藏在了这个帖子里面
skr!GEO芯片数据的探针ID转换

想想我出去培训学员,所有的中间材料和录屏全部赠送给学员,
资料:



视频:


这本质上是我让渡了讲师的一部分权益,但是我根本不怕有人录屏传播和抄袭。
原因有3个:

下次见。

上一篇下一篇

猜你喜欢

热点阅读