乐于分享
好东西不私藏

下载GEO数据的常用的两个问题

下载GEO数据的常用的两个问题

如果我们需要使用表达数据来验证某个疾病是不是由什么基因影响,我想我们想到的就是GEO,当然TCGA也可以,就是下载更困难。
今天就来讲一下常见的两个错误,就不用付费请教其他人了
第一个就是网络问题,本地久久不能成功下载,导致下载失败
解决办法要么使用国外服务器,要么就手动下载表达数据到当前工作目录,
打开https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi
在GEO accession处输入想要的GEO数据,点击go即可跳到对应数据面板,有数据的各种信息.
表达数据一般在这里
点击Series Matrix File,
然后就可以找到对应的表达数据了,这里是12M,正常数据,含表达矩阵,如果是只有几k,那就没有表达数据,需要自己从补充文件制作。
下载数据到当前工作目录下,我这里是
setwd("E:/wd/20260524")
代码会自动识别当前工作目录下的数据,代码和在线的保持一致即可
然后就是一般过程,转换探针id到symbol,这里就会设计第二个常见错误,会出现很多探针id对应同一个symbol,这是我们往往不能将转换出的sysbol直接作为行名,需要处理
下载平台数据中探针id和sysbol之间的对应关系
点击平台文件
下载表格
即可得到GPL10558-50081.txt文件,放在当前工作目录下面。
处理代码,去重
###报错的原因就是有重复的基因名 多个探针对应同一个基因exp2.1=distinct(exp1,Symbol,.keep_all = F)exp2=distinct(exp1,Symbol,.keep_all = T)###这时候行名已经从22283变成了13238rownames(exp2)=exp2$Symbol
完整代码如下
##系统报错改为英文Sys.setenv(LANGUAGE = "en")##禁止转化为因子options(stringsAsFactors = FALSE)##清空环境rm(list=ls())## 加载r包library(GEOquery)library(dplyr)library(tidyverse)##设置路径getwd()###一定要设置自己的路径#setwd("E:/peixun/mr/m2/")####################################################################################################### 获取表达矩阵##下载数据 getGPL = F 这个代表不下载平台注释文件,因为有时候网络不稳定。#后面我们会在网页中下载,然后读取。gset = getGEO(GEO='GSE69528', destdir=".",getGPL = F)##列表listgset1 = getGEO(filename = "GSE69528_series_matrix.txt.gz", destdir = ".", getGPL = TRUE)## 查看对象View(gset1)huage=gset1@assayData[["exprs"]]######################保存数据 保存为rdata的数据结构#save(gset,file ="GSE69528.rdata")###打开工作路径的文件夹 我们会发现 GSE69528.rdata出现在文件夹下##保存下载的数据 保存为rdata 当然也可以保存为rds########### 这时候可以清空环境 保存的数据可以用load函数加载#load("GSE69528.rdata")############加载完数据后 gset对象又出现在环境中###########也可以保存环境中的全局变量 自己看视频##########将gset中的第二部分数据提取出来names(gset)e1=gset[[1]]e1=gset1e2=gset[["GSE69528_series_matrix.txt.gz"]]############################################################## S4对象深入解读##在环境中点击对象查看,然后再选中的层级数据中点击绿色箭头提取exp=e1@assayData[["exprs"]]df.exp=as.data.frame(exp)class(exp)class(df.exp)## 获取分组信息pdata=e1@phenoData@datax1=e2@phenoData@data$characteristics_ch1x2=e2@assayData$exprs#### s4  s3:matrix 矩阵 data.frame() 数据框 character() 向量字符型 list 列表############################################################################################################ 整理探针转化文件getwd()#install.packages("data.table")library(data.table)###读取测序平台信息,为了进行探针的转化  这里的探针就是exprSe的行名比如:10344614###平台文件在geo中下载,下载之后要放在指定的路径下面###用fread函数读取的目的是多线程快速读取anno=fread("GPL10558-50081.txt",sep = "\t",header = T,data.table = F)#第一行作为列名anno1=fread("GPL10558-50081.txt",sep = "\t",header = F,data.table = F)?freadView(anno)colnames(anno)gene=anno[,c(1,13)]gene.1=anno[,c("ID","Symbol" )]###exp是矩阵 merge合并必须是数据框的合并################################################ merge用法演示?mergeexp.anno=merge(x=gene,y=df.exp,by.x=1,by.y=0)View(exp.anno)###到此为止  我们讲注释的gene symbol文件与表达矩阵都已经准备好了##############################################################################################进行探针的转化## 做个备份exp1=exp.anno###整理表达矩阵rownames(exp1)=exp1$Symbol###报错的原因就是有重复的基因名 多个探针对应同一个基因exp2.1=distinct(exp1,Symbol,.keep_all = F)exp2=distinct(exp1,Symbol,.keep_all = T)###这时候行名已经从22283变成了13238rownames(exp2)=exp2$Symbol###exp3=na.omit(exp2)#去除NA值View(exp3)###去除第一列和第二列exp4=exp3[,-c(1,2)]View(exp4)write.csv(exp4,file = "4.12.exp.csv")write.csv(pdata,file = "4.12.pdata.csv")
上面这两种报错其实很简单,不用问其他人,自己实操一下就可以解决。