GEO实战演练(一)

《Epidermal Growth Factor Receptor Activation: An Upstream Signal for Transition of Quiescent Astrocytes into Reactive Astrocytes after Neural Injury》

首先ncbi中检索该文章,得到数据GSE5282

第一步:Start:获取数据并得到表达矩阵

rm(list = ls())
options(stringsAsFactors = F) 
library(GEOquery)
eSet <- getGEO("GSE5282", 
               destdir = '.',   
               getGPL = F)
class(eSet)
length(eSet)
class(eSet[[1]]) 
exp <- exprs(eSet[[1]])
exp[1:4,1:4] 
exp1 <- exp[,c(4,5,7,1,2)]
exp1[1:4,1:3]
pd <- pData(eSet[[1]])
pd
save(pd,exp,exp1,file = "step1output.Rdata")
eSet[[1]]@annotation

第二步:设置分组信息

##control:EGF4h
m(list = ls())  
options(stringsAsFactors = F)
load(file = "step1output.Rdata")
class(pd)
dim(pd)
colnames(pd)
group_list1=rep(c('control','EGF_4h'),c(3,2)) 
group_list1 

save(group_list1,file = "step2output.Rdata")

第三步:检验组间数据的显著性(PCA)

rm(list = ls())  ## 魔幻操作,一键清空~
options(stringsAsFactors = F)
load(file = "step1output.Rdata")
load(file = "step2output.Rdata")
exp1[1:4,1:4]
dat1=as.data.frame(t(exp1))
dim(exp1)
dim(dat1)
dat1=cbind(dat1,group_list1)

library(FactoMineR)
library(factoextra)
dat.pca <- PCA(dat1[,-ncol(dat1)], graph = FALSE)
fviz_pca_ind(dat.pca,
             geom.ind = "point", 
             col.ind = dat1$group_list1, 
             palette = c("#00AFBB", "#E7B800"),
             addEllipses = TRUE, 
             legend.title = "Groups") 
cg=names(tail(sort(apply(exp,1,sd)),1000)) 
n=t(scale(t(exp[cg,]))) 
thr=2
n[n>thr]=thr    
n[n< -thr]= -thr  
n[1:4,1:4]
pheatmap(n,show_colnames =F,show_rownames = F)

Result:


PCA

通过图示,很明显发现两者的组间差异明显,数据合理。

第四步:筛选差异基因

rm(list = ls())  
options(stringsAsFactors = F)
options(digits = 4)   
load(file = "step1output.Rdata")
load(file = "step2output.Rdata")
exp1[1:4,1:4]
table(group_list1) 
boxplot(exp1[1,]~group_list1)

bp=function(g){         
  library(ggpubr)
  df=data.frame(gene=g,group=group_list1)
  p <- ggboxplot(df, x = "group", y = "gene",
                 color = "group", palette = "jco",
                 add = "jitter")
  p + stat_compare_means(label.y = 8)
}
bp(exp1[1,])

library(limma)
design=model.matrix(~factor(group_list1))
fit=lmFit(exp1,design)
fit=eBayes(fit)
deg1=topTable(fit,coef=2,number = Inf)
head(deg1)
deg1$logFC <- (deg1$logFC)
bp(exp1[rownames(deg1)[1],])
bp(exp1[rownames(deg1)[2],])
library(dplyr)
deg1 <- mutate(deg1,probe_id=rownames(deg1))  

head(deg1)
library(rat2302.db)
ls("package:rat2302.db") 
ids <- toTable(rat2302SYMBOL)  
head(ids)

deg1 <- inner_join(deg1,ids,by="probe_id")
head(deg1)
logFC_t=1
change=ifelse(deg1$P.Value>0.01,'stable', 
              ifelse( deg1$logFC >logFC_t,'up', 
                      ifelse( deg1$logFC < -logFC_t,'down','stable') )
)

deg1 <- mutate(deg1,change)
head(deg1)
table(deg1$change)


library(ggplot2)
library(clusterProfiler)
library(org.Hs.eg.db)
#s2e <- bitr(unique(deg1$symbol), fromType = "SYMBOL",
            toType = c( "ENTREZID"),
            OrgDb = org.Hs.eg.db)


#######################################################
head(s2e)
head(deg1)
deg1 <- inner_join(deg1,s2e,by=c("symbol"="SYMBOL"))

head(deg1)
save(group_list1,deg1,file = "step4output.Rdata")

Q:s2e <- bitr(unique(deg1$symbol), fromType = "SYMBOL", toType = c( "ENTREZID"), OrgDb = org.Hs.eg.db)deg1 <- inner_join(deg1,s2e,by=c("symbol"="SYMBOL"))
得到的很尴尬,全部成了stable基因,如果用这个deg1去画热图 就天下大乱了。

第五步:火山图

rm(list = ls())  
options(stringsAsFactors = F)
load(file = "step4output.Rdata")

head(deg1)

plot(deg1$logFC,-log10(deg1$P.Value))

library(ggpubr)

table(dat1$change)
ggscatter(dat1, x = "logFC", y = "v",size=0.5,color = "change")


ggscatter(dat1, x = "logFC", y = "v", color = "change",size = 0.5,
          label = "symbol", repel = T,
          label.select = dat1$symbol[1:30] ,
          #label.select = c('CD36','DUSP6'), #挑选一些基因在图中显示出来
          palette = c("#00AFBB", "#999999", "#FC4E07") )

Result:


volcano

第五步:heatmap

rm(list = ls())  ## 魔幻操作,一键清空~
options(stringsAsFactors = F)
load(file = 'step1output.Rdata')
load(file = 'step2output.Rdata')
load(file = 'step4output.Rdata')


x=deg1$logFC 
names(x)=deg1$probe_id 
cg=c(names(head(sort(x),100)),
     names(tail(sort(x),100)))

library(pheatmap)
pheatmap(exp1[cg,],show_colnames =F,show_rownames = F)

n=t(scale(t(exp1[cg,])))

thr=2
n[n>thr]=thr 
n[n< -thr]= -thr

n[1:4,1:4]
pheatmap(n,show_colnames =F,show_rownames = F)
#显示分组
ac=data.frame(group=group_list1)
rownames(ac)=colnames(n) 

pheatmap(n,show_colnames =T,
         show_rownames = F,
         annotation_col = ac,color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
#保存
pdf(file = "heatmap.pdf")
pheatmap(n,show_colnames =F,
         show_rownames = F,
         #cluster_cols = F,
         annotation_col=ac
)
dev.off()

Result:


heatmap
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • 经过思考,结合自己的实际情况,对于本周的学习,我设置了如下学习目标:1、了解并熟悉与GEO分析相关的一些统计学知识...
    ShanSly阅读 459评论 0 3
  • 下面对“GSE78179”进行GEO实战分析 第一部分 读入 1、读入数据 解释:destdir下载到哪里,'....
    ShanSly阅读 1,158评论 0 4
  • library(Biobase)library(GEOquery)library(limma)## load se...
    苏慕晨枫阅读 1,875评论 1 1
  • 一、统计学相关知识 首推参考推文:https://mp.weixin.qq.com/s/OtB2h6f00U2SR...
    桃浪桃浪阅读 2,118评论 0 8
  • 今天是母亲节,祝天下所有的母亲,节日快乐! 早上起来,也给妈妈发了微信,内容为“老妈,母亲节快乐!要健健康康,开开...
    贺頓阅读 221评论 0 0