我们以前写过一个很长的帖子,就将GEO的芯片处理,而且还给出了一个导学视频。
来完成你的生信作业,这是最有诚意的GEO数据库教程
里面有一个很重要的步骤就是,探针和ID的转换。除了使用R包注释,没有R包,我们可以自己从平台文件中获取探针和基因的对应关系。
skr!GEO芯片数据的探针ID转换
有些GEO平台的探针转换比较麻烦
正则表达式是我们认识世界的哲学
其中有一些平台是没有明显探针和基因对应关系的,比如GPL16686平台

其中唯一我们认识的可能是,GB_ACC 这一栏,其中NM,NR似曾相识,实际上他们是
RefSeq的基因识别号。
RefSeq is the NCBI database of reference sequences; a curated, non-redundant set including genomic DNA contigs, mRNAs and proteins for known genes, and entire chromosomes.
对应的关系如图所示:

那么我们先把NM开头转换试一下,使用ensemble旗下的一个包biomaRt
按照并加载
BiocManager::install("biomaRt")
library(biomaRt)
useMart函数获得要用的数据库
ensembl = useMart(biomart="ensembl",dataset="hsapiens_gene_ensembl")
还可以知道他的版本号
searchDatasets(mart = ensembl, pattern = "hsapiens")

创建要转换的名称:
refseqids = c("NM_005359","NM_000546")
使用getBM函数来转换
ipro = getBM(attributes=c("refseq_mrna","hgnc_symbol"),
filters="refseq_mrna",
values=refseqids,
mart=ensembl)
- 其中
attributes
参数输入的是要返回的列,可以是多个,通过listAttributes
函数可以获取可输入的attributes
,很多,有2722个,
listAttributes <- listAttributes(mart = ensembl)

-
filters
参数指定要转换的基因目前是什么格式。 -
values
参数输入要转换的基因。 -
mart
参数指定要使用的数据库
最终的结果是这样的:

当然,我们NR_开头的还没弄呢,如何弄是个问题,因为我们不知道他名称的Attributes是什么,又比如,NM_ 开头的用refseq_mrna
来表示,我是怎么知道的呢,官方示例文件里面就是这个样子的。
我猜想,NR_ 的表示方式应该差不多,一定含有refseq字样,所以,我就到Attributes中去抓取。
listAttributes <- listAttributes(mart = ensembl)
index <- grep("refseq",listAttributes$name)
listAttributes[index,]

这样我就知道NR_ 开头的用refseq_ncrna
来表示。下面进行NR_ 系列的转换。
refseqids = c("NR_036215","NR_026927","NR_015434")
ipro = getBM(attributes=c("refseq_ncrna","hgnc_symbol"),
filters="refseq_ncrna",
values=refseqids,
mart=ensembl)
输入三个,出来两个,意味着不是每一个可以转换

这时候我们就可以分别操作,再合并,最终merge一下就可以了。
也欢迎大家提供不好转换的平台号,我有时间,一一处理。在公众号同名帖子下面留言即可。
网友评论