GEO数据挖掘

文章目录

  • GEO数据挖掘
  • 0. 安装并加载包
  • 1. 下载GSE数据和探针注释
    • 1.1 下载GSE数据
    • 1.2 下载探针注释数据
    • 1.3 将表达矩阵中的探针id 转换为 基因symbol
    • 1.4 表达矩阵检验
  • 2. 差异基因表达分析
    • 2.1 设计分组信息
    • 2.2 差异分析
    • 2.3 绘制火山图
    • 2.4 绘制热图
  • 待续

0. 安装并加载包

if (!requireNamespace("BiocManager", quietly = TRUE))install.packages("BiocManager")
BiocManager::install("KEGG.db",ask = F,update = F)
BiocManager::install(c("GSEABase","GSVA","clusterProfiler" ),ask = F,update = F)
BiocManager::install(c("GEOquery","limma","impute" ),ask = F,update = F)
BiocManager::install(c("genefu","org.Hs.eg.db","hgu133plus2.db" ),ask = F,update = F)
install.packages('WGCNA')
install.packages(c("FactoMineR", "factoextra"))
install.packages(c("ggplot2", "pheatmap","ggpubr"))library("FactoMineR")
library("factoextra")
library(GSEABase)
library(GSVA)
library(clusterProfiler)
library(genefu)
library(ggplot2)
library(ggpubr)
library(hgu133plus2.db)
library(limma)
library(org.Hs.eg.db)
library(pheatmap)

1. 下载GSE数据和探针注释

1.1 下载GSE数据

setwd("E:/GitHub/Bioinformatics-1000days/day11-GEO/")
f='E:/GitHub/Bioinformatics-1000days/day11-GEO/GSE42872_eSet.Rdata'
library(GEOquery)
if(!file.exists(f)){gset <- getGEO('GSE42872', destdir=".",AnnotGPL = F, ## 注释文件getGPL = F) ## 平台文件save(gset,file=f) ## 保存到本地
}

下载后加载数据

load('E:/GitHub/Bioinformatics-1000days/day11-GEO/GSE42872_eSet.Rdata') ## 载入数据
class(gset) #查看数据类型
length(gset) #
class(gset[[1]])
gset

获取gset中的表达矩阵数据和临床表型数据

a=gset[[1]] #
dat=exprs(a)  # 使用exprs函数取出表达矩阵
boxplot(dat,las=2) # 看一下数据分布的箱线图
pd=pData(a) # 使用pData函数取出表型数据
head(pd) # 看一下表型数据情况

可以看到pd表型数据的title中显示了表型的处理情况

                                     title geo_accession                status
GSM1052615     A375 cells 24h Control rep1    GSM1052615 Public on May 20 2014
GSM1052616     A375 cells 24h Control rep2    GSM1052616 Public on May 20 2014
GSM1052617     A375 cells 24h Control rep3    GSM1052617 Public on May 20 2014
GSM1052618 A375 cells 24h Vemurafenib rep1    GSM1052618 Public on May 20 2014
GSM1052619 A375 cells 24h Vemurafenib rep2    GSM1052619 Public on May 20 2014
GSM1052620 A375 cells 24h Vemurafenib rep3    GSM1052620 Public on May 20 2014

所以我们就把title中的这个处理分组提取出来

library(stringr)
group_list=str_split(pd$title,' ',simplify = T)[,4] ## title中由于是空格号隔开的,所以分割后,取第四列就是表型处理分组的信息:Control 和 Vemurafenib
table(group_list) ## table()函数 以因子表格的方式,用于计数每个元素出现的次数
#>group_list
#>    Control Vemurafenib
#>          3           3

1.2 下载探针注释数据

探针注释数据有三种获取方法,法1:直接通过getGEO函数下载GEO上准备好的soft文件注释,法2:各大芯片厂商有的会将芯片注释封装成R包,所以可以下载R注释包来注释芯片,法3:直接去芯片厂商官网下载芯片注释。(比较麻烦)
此处我们直接下载GEO上的soft注释,来作为我们芯片探针的注释

  library(GEOquery)library(tidyverse)#Download GPL file, put it in the current directory, and load it:gpl <- getGEO('GPL6244', destdir="E:/GitHub/Bioinformatics-1000days/day11-GEO/")colnames(Table(gpl))  ## Table函数用于提取soft文件head(Table(gpl)[,c(1,1:11)]) ## you need to check this , which column do you needtmp <- Table(gpl) ## gene name is in "//",we should separate themtmp <- separate(tmp,gene_assignment,into = c("ensembl_id","geneSymbol","other"),sep = "//")probe2gene=tmp[,c(1,11)]head(probe2gene)
#  library(stringr)  save(probe2gene,file='probe2gene.Rdata') ## 保存芯片探针注释

1.3 将表达矩阵中的探针id 转换为 基因symbol

# load(file='probe2gene.Rdata')
# ids=probe2gene

1.4 表达矩阵检验

下载完表达矩阵后,要仔细check一下表达矩阵是否正确,id转换有没有出错(基因和probe_id对应的是对的)
所以就要画一系列的图来看数据的整齐性等等
首先,对所有样本画boxplot 查看样本数据的整齐性
样本数据只要基本都在同一条线上,那么就说明样本之间是可以比较的

  • 如果不可比较,就用sv包的 combine()函数矫正

PCA图
看PCA图 可以使用ggfortify画图

2. 差异基因表达分析

使用limma包对表达矩阵进行差异基因分析

rm(list = ls())
options(stringsAsFactors = F)
load(file = 'step1-output.Rdata') # 加载上一步处理好的表达矩阵数据和分组信息
library(limma) ## 关于limma的使用 可以参考limmaUsersGuide()来查看使用指南

2.1 设计分组信息

limma包的说明书里给出过很详细的关于实验设计分组的方法(limmaUsersGuide(),查看P35-P40页)
我们的数据是6个样本,3个是用了药的黑色素瘤细胞,另外3个是未用药的细胞样本
因此这样来设计我们的分组信息

design <- model.matrix(~0+factor(group_list))  # group_list是一个向量的分组信息
# 使用model.matrix来构建分组
colnames(design)=levels(factor(group_list))     # 设置分组的colname
head(design) # 查看分组情况
# Control Vemurafenib
#1       1           0
#2       1           0
#3       1           0
#4       0           1
#5       0           1
#6       0           1
exprSet=dat # 将表达数据赋给exprSet
rownames(design)=colnames(exprSet) # 用样本名给分组信息添加行名
design # 查看分组信息
#           Control Vemurafenib
#GSM1052615       1           0
#GSM1052616       1           0
#GSM1052617       1           0
#GSM1052618       0           1
#GSM1052619       0           1
#GSM1052620       0           1contrast.matrix<-makeContrasts("Vemurafenib-Control", levels = design) # 使用makeContrasts函数构建比对的矩阵分组
contrast.matrix #这个矩阵声明,我们要把 Tumor 组跟 Normal 进行差异分析比较

2.2 差异分析

##step1
fit <- lmFit(exprSet,design)
##step2
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2) ## default no trend !!!
##eBayes() with trend=TRUE
##step3
tempOutput = topTable(fit2, coef=1, n=Inf)
nrDEG = na.omit(tempOutput)
#write.csv(nrDEG2,"limma_notrend.results.csv",quote = F)
head(nrDEG)
deg = nrDEG
save(deg,file = 'deg.Rdata')

2.3 绘制火山图

2.4 绘制热图

待续

【生信进阶练习1000days】day11day12-GEO data mining相关推荐

  1. 生信识图之 点图进阶-3(MA)

    各位亲爱的土豪富婆,承蒙您慧眼识珠大驾光临大Y老师为您准备的小灶课堂. -----以下是日常碎碎念,日理万机的您,可以直接跳到图图图图分割线享用----- 对于"诈尸式"更新,大Y ...

  2. 生信识图之 点图进阶-6(UMAP)

    各位亲爱的土豪富婆,见字如面. -----以下是日常碎碎念,日理万机的您,可以直接跳到图图图图分割线享用----- 春天来啦,又到了--考研计划的时候.大Y老师不是会把咱们公众号的更新陆续同步到知乎上 ...

  3. 生信识图之 点图进阶-4 (PCA下篇)

    各位亲爱的土豪富婆,承蒙您慧眼识珠大驾光临大Y老师为您准备的小灶课堂. 近期有朋友说发现有人抄袭咱们的文章,自标为"原创".对此大Y老师有心理准备,咱们的每一篇文章都是大Y老师仔细 ...

  4. 生信识图 之 点图进阶-1

    各位亲爱的土豪富婆,承蒙您慧眼识珠大驾光临大Y老师为您准备的小灶课堂. -----以下是日常碎碎念,日理万机的您,可以直接跳到图图图图分割线享用----- 大Y老师做生信分析十多年了,在此期间结识很多 ...

  5. 生信宝典教程大放送,一站式学习生信技术

    生物信息学包含生物数据分析.数据可视化.重复工作程序化,是生物.医学科研必备的技能之一.生信宝典精心组织生信学习系列教程.生信工具精品教程,通过大量的生信例子.关键的注释.浓缩的语句和录制的视频帮助快 ...

  6. 送书 | 知乎阅读300w+的生信学习指南(更新版)

    先送书 在上周的留言送书活动中,恭喜下面这位读者获得书籍"Oracle高性能系统架构实战大全",请及时与生信宝典编辑(shengxinbaodian)联系. 2020过去三分之一了 ...

  7. 生信数据库ID大总结-想踏入生信大门的你值得拥有

    花了差不多一周写了这个总结 希望对一些小伙伴有帮助 目录 各大生信资源的使用流行程度 生信数据库的霸主-NCBI以及Entrez检索系统 Gene查找好帮手-Entrez Gene数据库 人类基因命名 ...

  8. 生信宝典:生物信息学习系列教程、视频、资源

    生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题.但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程 ...

  9. 生信宝典文章集锦,一站式学习生信!众多干货,有趣有料

    生信的作用越来越大,想学的人越来越多,不管是为了以后发展,还是为了解决眼下的问题.但生信学习不是一朝一夕就可以完成的事情,也许你可以很短时间学会一个交互式软件的操作,却不能看完程序教学视频后就直接写程 ...

  10. 生存分析系列教程(一)使用生信人工具盒进行生存分析

    生信人工具盒是生信人团队的开发的一款软件,非常方便.下面我将演示一下如何通过这款软件进行生存分析.为了方便大家理解,形式依然是  数据结构-操作-结果解读. 1. 表达矩阵与生存信息矩阵 表达矩阵依然 ...

最新文章

  1. 基于 MVP 的 Android 组件化开发框架实践
  2. 到底什么是极简主义?
  3. 前端学习(2371):组件之间的通讯方式
  4. java 静态导入_Java中静态导入的使用
  5. sql 数据分组统计与合计
  6. MySQL实战45讲
  7. python控制安捷伦频谱仪_安捷伦频谱仪使用说明
  8. 会声会影2022Win64中文版特别版
  9. 【车牌识别】基于模板匹配算法实现车牌识别matlab源码
  10. Win7网络和共享中心显示“依赖服务或组无法启动”,无法连接网络
  11. CH32V103C8T6入门指导
  12. NUISTOJ/P1285 达朗贝尔的台阶
  13. 【转】史上最全Android 开发和安全系列工具
  14. SSM框架+Plupload实现分块上传(Spring+SpringMVC+MyBatis+Plupload)
  15. Razer Fintech 委任林祥源先生为顾问委员会成员
  16. 【网络】HTTP请求报文和响应报文
  17. 昆明理工大学控制工程考研经验贴
  18. 圆形检测--轮廓检测法
  19. 美剧《反恐24小时》
  20. 哪个充电宝额定容量最高?额定容量高的充电宝盘点

热门文章

  1. (大家发表一下看法)微软研发智能系统 可通过电脑24小时监控员工
  2. mysql5.7 systemctl启动_CentOS 7上配置MySQL5.7开机自启动方法
  3. linux 文件夹中过滤文件内容,【shell】对指定文件夹中文件进行过滤,并修改文件内容的shell脚本...
  4. 车内看车头正不正技巧_交规理论最全技巧口诀,学会后100%过关!
  5. 如何将本地窗口上方地址栏隐藏_Firefox火狐浏览器将提供导出密码至本地的功能...
  6. python循环语句for 循环十次_Python 循环 while,for语句
  7. python调用c++动态库_python调用c++开发的动态库
  8. JAVA里的jsp网页背景_Java-带CSS的JSP不显示背景图像
  9. java 向文件写数据结构_Java Note 数据结构(5)映射
  10. 3台机器配置hadoop集群_复制Hadoop集群之后无法访问端口50070的问题