GEO数据挖掘全流程分析

声明:以下学习资料根据“生信技能树”网络系列免费教学材料整理而成,代码来自“生信技能树”校长jimmy的github。GEO数据库挖掘系列知识分享课程,于2016年首发于生信菜鸟团博客配套教学视频在B站,特此声明。

前言:关于GEO数据

我们的目标是要从读懂文献到复刻文献实验,再到掌握GEO数据挖掘的能力。首先便是要广泛阅读,在读文献时,提炼脉络,读懂文献使用了哪个或哪些GSE数据集,对数据做了哪些处理。了解清楚后,便可下载相应的数据集,得到表达矩阵,作差异分析,注释等一系列下游分析。
一篇文章可以有一个或多个GSE数据集,一个GSE里可以有一个或多个GSM样本。多个研究的GSM样本可以根据研究目的整合为一个GDS,每个数据集有着自己对应的芯片平台(GPL),一个GSE里可能有多个平台测出的数据。
本分析是基于R语言的平台,所以需要一些R语言的基础知识。
了解GEO,表达芯片与R

第一部分:GEO芯片数据下载及整理

GEO官网
本例以GSE42872数据集为例,学习GEO数据挖掘分析,分析文献
在这里插入图片描述
通过阅读文献找到相应的GSE数据集,并在官网可以下相应的数据集信息及背景知识
https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE42872
在这里插入图片描述
这个数据集使用的是GPL6244这个芯片平台,由6个样本组成,前三个为对照组,后三个为处理组。了解了这个数据集的相关背景后,接下来就需要进行数据下载了。数据下载的方式有很多种,这里我们用R包GEOquery来下载,具体下载代码如下:

rm(list = ls())  
## 魔幻操作,一键清空~当前环境中对象全部删除
options(stringsAsFactors = F)
#在调用as.data.frame的时,将stringsAsFactors设置为FALSE可以避免character类型自动转化为factor类型
f='GSE42872_eSet.Rdata'
#把GSE42872_eSet.Rdata赋值给f,方便后面流程化处理
##根据数据集不同修改相应的GSE号

library(GEOquery)
# 这个包需要注意两个配置,一般来说自动化的配置是足够的。
#Setting options('download.file.method.GEOquery'='auto')
#Setting options('GEOquery.inmemory.gpl'=FALSE)

if(!file.exists(f)){
  gset <- getGEO('GSE42872', destdir=".",
                 AnnotGPL = F,     ## 注释文件
                 getGPL = F)       ## 平台文件
  save(gset,file=f)   ## 保存到本地
}
##这是一个函数,利用包将数据集的表达信息下载下来,赋值给了gset,而不下载注释信息和平台信息,病保存到本地,文件名为f。

load('GSE42872_eSet.Rdata') 
 ## 载入数据
class(gset) 
 #查看数据类型
length(gset) 
 ##看一下有几个元素
gset[[1]]
#取第一个元素
class(gset[[1]])
 #查看改元素的数据类型
# 因为这个GEO数据集只有一个GPL平台,所以下载到的是一个含有一个元素的list

a=gset[[1]] 
##取出第一个元素赋值给一个对象a
dat=exprs(a) 
#a现在是一个对象,取a这个对象通过看说明书知道要用exprs这个函数,该函数得到表达矩阵
#现在 得到的dat就是一个表达矩阵,只不过基因的ID是探针名
dim(dat)
#看一下dat这个矩阵的维度
dat[1:5,1:5] 
#查看dat这个矩阵的1至4行和1至4列,逗号前为行,逗号后为列
#这个表达矩阵是已经log之后的,表达量一般是0-10左右,如果是原始芯片表达的信号值一般是几千到一万,则需要log处理。

boxplot(dat,las=2) 
#画个图看一下各样本之间有没有批次效应,一般中位数都差不多,las是将横坐标样本信息竖着排列

pd=pData(a) 
#通过查看说明书知道取对象a里的临床信息用pData
View(pd)
## 查看一下,挑选一些感兴趣的临床表型,这里我们欲得到其分组title信息。
library(stringr)
#运行一个字符分割包
group_list=str_split(pd$title,' ',simplify = T)[,4]
#抽取title一列,按照空格分割,取第四个元素即Control和Vemurafenib
table(group_list)
#看一下两个分组各有几个

也可以使用中国镜像下载:

library(devtools)
install_github("jmzeng1314/A
### GEO 数据挖掘的补充信息与资料 GEO(Gene Expression Omnibus)是由美国国家生物技术信息中心(NCBI)维护的一个公共功能基因组数据存储库,主要用于存储和共享高通量基因表达数据,包括微阵列、RNA测序和芯片测序等类型的数据。GEO 数据挖掘是生物信息学领域的重要组成部分,涉及对这些数据的分析、可视化和解释。 #### 1. GEO 数据挖掘的常见方法 - **主成分分析(PCA)** PCA 是一种降维技术,用于识别数据中的主要变异来源。通过将高维数据投影到低维空间,可以更直观地观察样本之间的关系。例如,在 R 中可以使用 `FactoMineR` 和 `factoextra` 包进行 PCA 分析并绘制样本分布图。 ```r library(FactoMineR) library(factoextra) dat <- as.data.frame(t(exp)) # 转置数据并转换为 data.frame dat.pca <- PCA(dat, graph = FALSE) # 进行 PCA 分析 fviz_pca_ind(dat.pca, geom.ind = "point", col.ind = Group, palette = c("#00AFBB", "#E7B800"), addEllipses = TRUE, legend.title = "Groups") # 可视化样本分布 ``` - **差异分析(Differential Expression Analysis)** 差异分析用于识别在不同实验条件下显著变化的基因。常用工具包括 `limma`(适用于微阵列数据)和 `DESeq2` 或 `edgeR`(适用于 RNA-seq 数据)。 - **功能富集分析(Functional Enrichment Analysis)** 功能富集分析用于识别在差异表达基因中显著富集的功能类别,如 GO(Gene Ontology)和 KEGG(Kyoto Encyclopedia of Genes and Genomes)通路分析。可以使用 `clusterProfiler` 包进行富集分析。 #### 2. GEO 数据挖掘的实践教程 - **数据获取与预处理** 可以通过 GEO 的官方网站(https://www.ncbi.nlm.nih.gov/geo/)下载原始数据,通常以 Series Matrix 文件或 SOFT 格式提供。使用 R 中的 `GEOquery` 包可以方便地下载和解析 GEO 数据集。 ```r library(GEOquery) gse <- getGEO("GSE12345", GSEMatrix = TRUE) # 下载并解析 GEO 数据集 exp <- exprs(gse) # 提取表达矩阵 ``` - **数据标准化** 对于微阵列数据,通常需要进行背景校正和归一化处理,可以使用 `limma` 包中的 `backgroundCorrect` 和 `normalizeBetweenArrays` 函数。 - **差异表达分析** 使用 `limma` 进行差异分析的示例代码如下: ```r library(limma) design <- model.matrix(~ 0 + Group) # 构建设计矩阵 fit <- lmFit(exp, design) # 拟合线性模型 contrast.matrix <- makeContrasts(Group1 - Group2, levels = design) # 定义对比 fit2 <- contrasts.fit(fit, contrast.matrix) # 应用对比 fit2 <- eBayes(fit2) # 计算 p 值 topTable(fit2) # 显示显著差异的基因 ``` - **可视化与富集分析** 使用 `pheatmap` 包绘制热图,使用 `clusterProfiler` 进行 GO 或 KEGG 富集分析: ```r library(pheatmap) pheatmap(exp[1:50, ]) # 绘制前 50 个基因的热图 library(clusterProfiler) gene_list <- rownames(exp)[which(fit2$p.value < 0.05)] # 提取显著差异的基因 go_enrich <- enrichGO(gene = gene_list, OrgDb = org.Hs.eg.db, keyType = "SYMBOL", ont = "BP") # 进行 GO 富集分析 dotplot(go_enrich) # 可视化富集结果 ``` #### 3. 推荐的学习资源 - **R/Bioconductor 教程** Bioconductor 提供了大量用于分析 GEO 数据的包,如 `GEOquery`、`limma` 和 `clusterProfiler`。可以通过 Bioconductor 官方网站(https://www.bioconductor.org/)获取相关教程。 - **在线课程与书籍** - Coursera 上的《Bioconductor for Genomic Data Science》课程提供了关于使用 R 进行基因组数据分析的系统培训。 - 书籍《Bioinformatics and Functional Genomics》由 Jonathan Pevsner 编写,涵盖了 GEO 数据挖掘的基础知识和实践技巧。 - **社区与论坛** - Biostars(https://www.biostars.org/)是一个活跃的生物信息学社区,用户可以在其中提问并获取关于 GEO 数据挖掘的帮助。 - Stack Overflow 和 GitHub 也是获取代码示例和技术支持的重要资源。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值