GEO数据库学习总结(三)ID转换

通过前面的数据下载,我们一般都可以得到如下矩阵,为了后续分析及文章需要,我们则需要吧探针名转化为gene_symbol

ID转化主要分为二步

Ⅰ、得到探针一一对应的基因名
Ⅱ、将 矩阵中的探针 转换成 对应的基因名

而转化的核心就是在第一步——“如何得到对应的基因名”,方法有三

① 通过平台已有R包进行转化
② 通过下载平台数据,提取信息
③ 通过 bitr()函数进行转化

方法一、通过平台已有R包进行转化

(1)、首先下载数据,获取平台信息及表达矩阵

library(GEOquery)
eSet <- getGEO("GSE42872", 
               destdir = '.', 
               getGPL = F)
exp <- exprs(eSet[[1]])   # 表达矩阵
GPL <- eSet[[1]]@annotation # 平台信息——提取芯片平台编号
GPL

平台编号GPL6244

(2)、 得到平台信息后,我们可以去到 jimmy 大神总结的GPL平台对应R包网站
用R获取芯片探针与基因的对应关系三部曲中找到对应的R包

注意, jimmy 大神网页里面的R包名称不是全称,要在后面加“.db”

例如:hugene10sttranscriptcluster----->hugene10sttranscriptcluster.db

#如果没有下载过这个包,就下载一下,代码如下
BiocManager::install(hugene10sttranscriptcluster.db)
#提取信息
library(hugene10sttranscriptcluster.db)
ls("package:hugene10sttranscriptcluster.db") #大致查看R包中的信息,寻找我们需要的SYMBOL
ids <- toTable(hugene10sttranscriptclusterSYMBOL)  #用toTable()函数提取
head(ids) #查看提取内容

probe_id 和 symbol 就是我们想要的探针、基因名

方法二、通过下载平台数据,提取信息

不是每个平台都提供了很好的平台信息,有一些平台的平台信息就没有对应的gene symbol,所以我们需要尝试多种方法,由于GSE42872平台恰好没有,我就换了个GSE举例子,但对于GSE42872能够用R包转化就够了,不需要再找平台信息多此一举,换GSE只是为了更好的举例子
读取GPL文件可参考GEO数据库学习总结(一)数据下载

library(GEOquery)
# 读取在GEO官网下载的平台文件
GPL=getGEO(filename = 'GSE42872_family.soft.gz')
# 提取信息(可以通用)
gpl=GPL@gpls[[1]]@dataTable@table
# 我只要ID和symbol
ids=gpl[,c(1,12)]
# 写出文件
write.table(ids,file = "ids.txt",siep = "\t",row.names=F,col.names = T)

平台信息
具体内容
我们要的

方法三、通过 bitr()函数进行转化

有些GSE的ID着实可恨,既没有对应的R包,官网的平台数据也没有对应的symbol (例如GSE42872平台信息没有对应的symbol),寻寻觅觅,只能放出终极大招——通过 bitr()函数进行转化,强制将ID转成我们需要的symbol格式,!注意,这个方法不一定可以将全部的ID转化成gene symbol

# 首先打开这两个R包
library(clusterProfiler) 
library(org.Hs.eg.db)
# 如果没有这两个R包,就运下面的代码进行下载
# if(!require("BiocManager")) install.packages("BiocManager",update = F,ask = F)
# options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
# BiocManager::install("clusterProfiler")
# BiocManager::install("org.Hs.eg.db")

# 查看数据类型(就是这个R包提供哪些个ID类型可供转化)
keytypes(org.Hs.eg.db) 
## 下面这个是R包org.Hs.eg.db拥有的ID类型,可供选择,对应原来的ids里面的类型
## ID的格式,你挑一个出来和下面的是对应的
# [1] "ACCNUM"       "ALIAS"        "ENSEMBL"      "ENSEMBLPROT"  "ENSEMBLTRANS" [图片上传中...(661771789232197568.jpg-f54963-1593781817202-0)]
"ENTREZID"    
# [7] "ENZYME"       "EVIDENCE"     "EVIDENCEALL"  "GENENAME"     "GO"           "GOALL"       
# [13] "IPI"          "MAP"          "OMIM"         "ONTOLOGY"     "ONTOLOGYALL"  "PATH"        
# [19] "PFAM"         "PMID"         "PROSITE"      "REFSEQ"       "SYMBOL"       "UCSCKG" 

# 确保数据格式为数据框
ids1=as.data.frame(ids)

ids <- bitr(ids1$ID,  #你的数据框
             fromType = "ENSEMBLPROT", #你的ID的数据类型
             toType = "SYMBOL", #转化的数据类型
             OrgDb = org.Hs.eg.db)  #org.Hs.eg.db——人类
#最后得出的ids就是结果

暂时没找到合适的数据,就拿了以前的图,转化之后就是这个样子 红色字都是正常的,百分之三四十就成功了

通过上述三个方法我们得到了ID对应的symbol,接下来只需要将symbol列对应进矩阵就好了

# 如果打不开这个包就下载一下
# install.packages("dplyr")
library(dplyr)

colnames(ids) = c("probe_id" ,"symbol")
exp <- mutate(exp,probe_id=rownames(probe_exp))#将行名变为列名为probe_id的一列
# exp是原来的表达矩阵


exp2= merge(exp,ids,by.x="probe_id", by.y="probe_id") # 合并数据

exp2=exp2[!duplicated(probe_exp$symbol),]# 按照symbol列去重

rownames(exp2)=exp2$symbol # 数据框probe_exp的行名变成symbol

gene_exp_matrix <- na.omit(exp2 ) # 去空值

 #输出文件
write.table(gene_exp_matrix2,file = "Gastric.cancer.geneid.exprs.txt",sep = "\t",row.names=T,col.names = T)

最后就可以得到了我们需要的表达矩阵了\(^ _ ^)/
感谢生信技能树的无私分享,如果上述有因学艺不精表述错误的地方,请大家多多指正

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,408评论 4 371
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,690评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,036评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,726评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,123评论 3 296
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,037评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,178评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,964评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,703评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,863评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,333评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,658评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,374评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,195评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,988评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,167评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,970评论 2 279