GEO上无法下载gpl文件 如何改symbol

该博客介绍了如何使用R语言的GEOquery、dplyr和tidyverse库下载并处理GEO数据集GSE149507。在因网络问题无法直接获取GPL文件时,提供了两种方法:一是通过getGPL参数下载;二是手动下载soft文件。然后利用org.Hs.eg.db包将ENTREZ_GENE_ID转换为gene symbol,并将平台信息与表达矩阵合并,最后整理成标准的表达矩阵exp.pl.3。
摘要由CSDN通过智能技术生成

 

### 加载r包
library(GEOquery)
library(dplyr)
library(tidyverse)


#########################################################################################
##下载数据 getGPL = F 这个代表不下载平台注释文件,因为有时候网络不稳定。所以我们会在网页中下载GPL文件,然后读取。
#对一个文章的数据进行分析 一定要得到两个文件  一个是表达矩阵 一个是gpl文件  由于无法通过网站的形式下载gpl文件  介绍以下两种方法

#方法一 参数里面改为getGPL =T 直接下载了注释文件  
#为什么要这样下呢,因为这个GSE149507的GPL文件无法网页下载
gset = getGEO('GSE149507', destdir=".",getGPL =T)  #即相比getGPL =F 中在featureData下的data中多了注释信息  但是有一些不好下  因为很大
gpl=gset[["GSE149507_series_matrix.txt.gz"]]@featureData@data  #观察一下注释文件 发现无symbol信息 只有ID与对应ENTREZ_GENE_ID的信息
gset=gset[[1]]
exprSet=exprs(gset)
#这样就获得了两个文件 一个是表达矩阵 一个是gpl信息  可以准备后面的ID与symbol的转换了


#方法二 将网页版的soft文件下载
soft=getGEO(filename ="GSE149507_family.soft/GSE149507_family.soft") #要解压
gpl=soft@gpls[["GPL23270"]]@dataTable@table
gset=gset[[1]]
pdata=pData(gset) #专门用于提取临床信息的function   
exprSet=exprs(gset)
#这样就获得了两个文件 一个是表达矩阵 一个是gpl信息  可以准备后面的ID与symbol的转换了


#由于这里涉及的是ENTREZ_GENE_ID与id 然后再转换为symbol
##BiocManager::install("org.Hs.eg.db")
library(org.Hs.eg.db)
###查看一下有哪些基因ID
keytypes(org.Hs.eg.db)
#keytypes(org.Mm.eg.db)
x1=gpl$ENTREZ_GENE_ID
x1=as.character(x1)    #后面要求是字符型的向量  keys为转换对象
x2=AnnotationDbi::select(org.Hs.eg.db, keys=x1, columns=c("ENTREZID","SYMBOL"), keytype="ENTREZID")   #首先是数据库    keys为转换对象   columns为将对象转化为谁   keytype=为转化对象本身的类型
                                                                                                      #colnums将对象转化 假如要转换出"ENSEMBL"这种容易重复的对象来说 会导致后面merge容易报错
gpl=gpl[,c(1,2)]   #去掉gpl中多余的信息
gpl$gene=x2$SYMBOL #添加symbol在gpl数据框中,因为向量是有方向的  会按照symbol的方向添加 而symbol的方向是根据id号来排序的

###平台和表达矩阵合并
colnames(gpl)
exp=as.data.frame(exprSet)
exp.pl=merge(gpl,exp,by.x=1,by.y=0)   #gpl的第一列与exp的第0列进行merge
####将gene symbol名变为行名
#首先要对gene.symbol这一列进行处理
exp.pl.1=distinct(exp.pl,gene,.keep_all = T)  #首先删除重复的基因名 因为多个探针对应同一个基因,这时候行名已经从22283变成了13238  distinct函数(对象, 特定列)
exp.pl.2=na.omit(exp.pl.1)  #删除缺失值
rownames(exp.pl.2)=exp.pl.2$gene  
View(exp.pl.2)
###去除第一列和第二列
exp.pl.3=exp.pl.2[,-c(1:3)]  #这样就整理好了表达矩阵  标准的表达矩阵为exp.pl.3

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值