美文网首页
七步带你解构GEO芯片数据分析-脚本化(二)

七步带你解构GEO芯片数据分析-脚本化(二)

作者: 不如好好学生信吧 | 来源:发表于2022-07-02 22:03 被阅读0次

一、数据集介绍

1.运行准备与获取输入数据及输入数据检查

  • 01步R包加载、加载数据处理脚本与加载绘图脚本

清空环境,加载R包与脚本----

source("scripts/step0-load-packages.R") #加载R包
source("scripts/functions.R") #加载数据处理脚本
source('scripts/draw-figures.R')#加载绘图脚本
  • 02步获取输入数据
  • 主要获得三方面输入数据:(表达矩阵、临床信息与芯片注释包)
# 获取表达矩阵、临床信息与芯片注释包----
getOption('timeout')
options(timeout=10000)
gse_number = "GSEGSE62452"#需要指定gse_number 
f="step1-data.Rdata"
source("scripts/step1-download-data.R") #下载三方面输入数据
  • 03步输入数据检查(两方面)
  • 主要检查两方面:1.检查exp列名与pd的行名顺序是否完全一致 2.检查是否需要取log(箱线图)
# 数据两方面检查----

## 01-检查1:exp列名与pd的行名顺序是否完全一致
p = identical(rownames(pd),colnames(probeM));p
if(!p) probeM = probeM[,match(rownames(pd),colnames(probeM))]

## 02-检查2:是否需要取log
probeM[1:4,1:4]#检测整体探针是否需要取log,小于20则不需要取
#probeM =log2(probeM+1) #不取log则不要运行此步,不运行可以加个注释

## 03-开始绘图
draw_p1_boxplot(probeM)#箱线图初看组内与组间测序差异 p1

2.整理数据

  • 整理两方面:1.整理获得去除冗余探针的表达矩阵 2.整理获得分组信息
  • 04步整理探针矩阵获取基因表达矩阵,去除冗余探针
# 整理探针矩阵获取基因表达矩阵,去除冗余探针----

## 01将探针表达矩阵转换为基因表达矩阵,探针ID与基因symbol一一对应
geneM = probeM2geneM(ids,probeM)

## 02检查转换情况,看两个管家基因表达范围(正常10-15之间)
fivenum(geneM['ACTB',])
fivenum(geneM['GAPDH',])
  • 05步整理获得分组信息(根据生物学背景及研究目的人为分组)
# 获取样品分组信息并进行分组----

## 01查找分组信息所在列,通过使用ifelse与str_detect进行分组
pd$source_name_ch1 #找列,看有无分组信息
Group=ifelse(str_detect(pd$source_name_ch1,"Non"),"Normal","PDAC") #进行分组

## 02将Group转换成因子,指定levels;对照组在前,处理组在后
Group = factor(Group,levels = c("Normal","PDAC"))
table(Group)

## 03保存基因表达矩阵与样品分组信息
save(geneM,Group,file = "step2-genemGro.Rdata")
    1. 3个质控图及其拼图(样本PCA图、高变基因热图与样品相关性图)
  • 3个图的作用:从样本间的差异与样本内的差异来看测序效果与分组是否有差异
# 绘制三个质控图----

## 01PCA看组内与组间整体差异  p2
p2=draw_p2_PCA(probeM,gse_number,Group)

## 02高变基因热图(画sd排名前1000基因的热图)p3
p3=draw_p3_pheatmap(geneM,Group,gse_number)

## 03样品相关性热图 p4
p4=draw_p4_colsample(Group,exp,gse_number)

## 04拼图与保存
##注热图得转换为ggplot格式才能进行拼图
p2+as.ggplot(p3)+ as.ggplot(p4)  
ggsave("png/p234.pdf",width = 12,height = 5)
p2 |(as.ggplot(p3)/ as.ggplot(p4) ) 
  • 4.差异基因-limma分析(火山图与热图,两图)
# 差异分析与绘制火山图与热图----

## 01差异分析-limma分析(得到6列差异基因表达矩阵)
deg=DEG_limma(Group,probeM)

## 02第7列:加上下调基因列(为绘制火山图与差异基因热图做准备)
logFC_t=1;P.Value_t = 0.05  #设置显著差异过滤条件
k1 = (deg$P.Value < P.Value_t)&(deg$logFC < -logFC_t)
k2 = (deg$P.Value < P.Value_t)&(deg$logFC > logFC_t)
deg <- mutate(deg,change = ifelse(k1,"down",ifelse(k2,"up","stable")))

## 03第8列:加ENTREZID列及其余列,为富集分析
s2e <- bitr(deg$symbol, 
            fromType = "SYMBOL",
            toType = "ENTREZID",
            OrgDb = org.Hs.eg.db)#人类
#其他物种http://bioconductor.org/packages/release/BiocViews.html#___OrgDb
deg <- inner_join(deg,s2e,by=c("symbol"="SYMBOL"))

## 04去重ENTREZEID对应多个基因的现象
deg=deg[order(deg$symbol,abs(deg$logFC),decreasing = T),] #先按绝对值排
deg = deg[!duplicated(deg$symbol),]
table(deg)

## 05差异基因好了,绘制火山图 p5
p5=draw_p5_volcano(Group,deg,gse_number)

## 06前十与后十个差异基因绘制热图 p6

### 001挑选前十与后十变化最为显著的差异基因
dat1=filter(deg,change!="stable") #去组别间不发生显著变化的基因
dat2=arrange(dat1,logFC)#排序
cg = c(head(dat2$symbol,10),tail(dat2$symbol,10)) #取前十与后十
n=geneM[cg,]  ##差异表达矩阵里取前十与后十
dim(n)

## 002 20个差异表达矩阵好了,绘制热图
p6 <- draw_p6_geneheatmap(Group,n)
p6

## 07拼图与保存图片
plot_grid(p5, as.ggplot(p6))
ggsave("png/p56.pdf",width=15, height=15)
plot_grid(p5, as.ggplot(p6))
  • 5利用GO与KEGG富集分析差异功能与差异通路
# GO富集分析----

## 01先对差异基因进行富集,包括上调、下调与整体差异基因
ego=GO_enrich(deg) 

## 02对富集后的结果可视化
p7=draw_p7_GObarplot(ego)

# KEGG富集分析---

## 01先对上下调差异基因进行KEGG富集
load(paste0(gse_number,"_GO.Rdata")) #输入已有的上下调参数
KEGG_enrich(deg)

## 02按照q值分别挑选10条上调与下调最显著的KEGG通路
load(paste0(gse_number,"_KEGG.Rdata"))
top10updownKEGG(kk.down,kk.up)

## 03绘制top10down与top10up的KEGG条形图
load("top10updown.Rdata")
p8 <- draw_p8_KEGGBarplot (up.data,down.data)

## 04拼图(GO与KEGG结果拼图)
plot_grid(p7,p8)
ggsave("png/p78.pdf",width = 15,height=15)
plot_grid(p7,p8)
  • 6 GSEA富集分析
# KEGG的GSEA富集分析---

## 01KEGG的GSEA富集
KeggGSEA_enrich(deg)

## 02挑选前6个上调与后6个下调通路
load('Rdata/gsea_kk.Rdata')
dat=top6downupGSEA(deg)

## 03绘制KEGG的GSEA富集分析条形图
p9 <- draw_p9_gsea(dat)

7.KEGG的GSEA富集分析具体通路可视化(折线图)

# 针对上面获得的12条通路进行具体GSEA可视化

## 01先看下调的6个通路并绘折线图
load("top6downup.Rdata")
p10 <- gseaplot2(kk, geneSetID = rownames(down_k))
p10
ggsave("png/p10.png")

## 02再看上调的6个通路并绘折线图
p11=gseaplot2(kk, geneSetID = rownames(up_k))
ggsave("png/p11.png")

## 03拼图并保存
plot_grid(p9,p10,p11)
ggsave("png/p91011.pdf",width = 15,height=15)
plot_grid(p9,p10,p11)

以上脚本均来自生信技能树,生信技能树目前正在进行万能芯片数据的处理,Jimmy老师现场演示。详情请见生信技能树公众号,以上脚本以及各种芯片数据的处理,你也可以手到擒来,轻松复现。

相关文章

网友评论

      本文标题:七步带你解构GEO芯片数据分析-脚本化(二)

      本文链接:https://www.haomeiwen.com/subject/nqgkbrtx.html