190303 GEO数据分析文章热图重现

文章Tinagl1 Suppresses Triple-negative Breast Cancer Progression by Simultaneously Targeting Integrin/FAK and EGFR Signaling Pathways,根据文章找到GSE号: GSE99507,
实验设计:Tinagl1过表达三个样本+正常对照三个样本。
画出来的图如下:

heatmap.png

1. 安装包,并准备工作

install.packages("GEOquery")
Installing package into ‘/usr/local/lib/R/3.5/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘GEOquery’ is not available (for R version 3.5.0)
source("[http://bioconductor.org/biocLite.R](http://bioconductor.org/biocLite.R)")
biocLite("GEOquery")
library(GEOquery)

此步骤耗费我1h,本来满满的成就感,直到我看到这篇文章的开头,http://www.bio-info-trainee.com/bioconductor_China/software/GEOquery.html,平时不看文,实操两行泪

2. 下载数据

  • 第三种方法下载数据
gset <- getGEO('GSE99507', destdir=".")
  • 第二种下载
    a = read.table('文件名', sep = '\t',quote = "", fill = T, comment.char = "!", header = T)
  • jimmy 现成版,将下载GEO数据集的表达矩阵封装成函数。后续操作过程中,发现将过程封装成函数后,在后续还是要将exprSet调出来,索性不封装了。

3. ID转换

GPL中的探针和基因名称 与 GSE中探针对应的表达关系 相match。

  • 下载并转换表达矩阵
rm(list = ls())
options(stringsAsFactors = F) #读表的时候,不要把字符读成factor
library(GEOquery)
eSet <- getGEO('GSE99507', destdir = '.')
exprSet <-  exprs(eSet[[1]]) #exprs用来提取表达矩阵
pdata <- pData(eSet[[1]]) #pData用来提取样本信息
View(pdata) #瞅一眼看分组信息

#以下进行分组,分别是Tinagl1过表达组和正常组
library(stringr)
group_list <- trimws(str_split(pdata$title,' ',simplify = T)[,5])
group_list <- str_replace(group_list,'LM2','Vector')
table(group_list)
group_list
  • 对芯片进行注释
gpl <- getGEO("GPL17077", destdir = ".") #此GPL没有注释的R包,只能手动找
colnames(Table(gpl))
head(Table(gpl)[,c(1,7)])
write.csv(Table(gpl)[,c(1,7)],"GPL17077.csv")
ids <- read.csv("GPL17077.csv") #获得探针对应基因的表达矩阵
ids = ids[,-1]
View(ids)
  • 将表达矩阵中的探针用对应的基因名ID转换
length(unique(ids$GENE_SYMBOL))  
tail(sort(table(ids$GENE_SYMBOL)))
table(sort(table(ids$GENE_SYMBOL)))
table(rownames(exprSet) %in% ids$ID)
dim(exprSet)
exprSet <- exprSet[rownames(exprSet) %in% ids$ID,] 
dim(exprSet)
ids <- ids[match(rownames(exprSet),ids$ID),] #改ID顺序
View(ids)
head(ids)
exprSet[1:5,1:5] #瞅一眼表达矩阵的开始和ids的是否相同

#ids的GENE_SYMBOL对表达矩阵进行分类
tmp <- by(exprSet,
         ids$GENE_SYMBOL,
         function(x)
         rownames(x)[which.max(rowMeans(x))] ) 
#分类,如果有一个基因对应多个探针,只保留在所有样本里面平均表达量最大的那个探针
probes <- as.character(tmp)
dim(exprSet)
exprSet=exprSet[rownames(exprSet) %in% probes ,] #过滤出有多个探针的基因
dim(exprSet)
save(exprSet,group_list,file = "step1.Rdata")

rownames(exprSet)=ids[match(rownames(exprSet),ids$ID),2]
exprSet[1:5,1:5]
View(exprSet)
library(reshape2)
exprSet_L<- melt(exprSet) 
colnames(exprSet_L) <- c('probe','sample','value')
exprSet_L$group <- rep(group_list,each=nrow(exprSet)) 
head(exprSet_L)
View(exprSet_L)
save(exprSet_L,group_list,file = "step2.Rdata")

#看表达矩阵样本分组信息是否合理
exprSet["ACTB",] #关键蛋白常见蛋白β-actin表达量是否合理
library("ggplot2")
p <- ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_boxplot()
print(p)

4. 画图

  • PCA图
install.packages("ggfortify")
library("ggfortify")
df <- as.data.frame(t(exprSet))
df$group <- group_list
autoplot(prcomp(df[,1:(ncol(df)-1)]),data = df, colour = "group")
  • 差异分析
library( "limma" )
dim(exprSet)
group_list
design <- model.matrix( ~0 + factor( group_list ) ) #根据分组变成矩阵
colnames( design ) <-  levels( factor( group_list ) )
rownames( design ) <-  colnames( exprSet )
design

#下面做比较矩阵
contrast.matrix <- makeContrasts(paste0(unique(group_list),
                                        collapse = "-"), levels = design )
contrast.matrix
fit <- lmFit(exprSet, design )
fit2 <- contrasts.fit( fit, contrast.matrix )
fit2 <- eBayes( fit2 )
nrDEG <-  topTable( fit2, coef = 1, n = Inf )
write.table( nrDEG, file = "nrDEG.out")
head(nrDEG)
View(nrDEG)
  • 画热图
install.packages("pheatmap")
library( "pheatmap" )
choose_gene <- head( rownames( nrDEG ), 20 ) #取了前20个差异最大的基因,这数可以自己定
choose_matrix <-  exprSet[ choose_gene, ]
annotation_col = data.frame( CellType = factor( group_list ) )
rownames( annotation_col ) = colnames( exprSet )
pheatmap( fontsize = 5, choose_matrix, annotation_col = annotation_col, show_rownames = T,annotation_legend = T, filename = "heatmap_1.png")

跌跌撞撞,终于花了8h作了一张图出来,使用的都是别人写的代码,主要参考的代码有:
http://www.bio-info-trainee.com/3409.html
https://www.jianshu.com/p/0dcc6030343e
https://mp.weixin.qq.com/s/nVnL_uc6GEkD_cLpMHCYXg
目前还有部分代码不是很理解,还要继续努力啊。

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

推荐阅读更多精彩内容

  • 项目总览 第一个视频主要是项目总览,介绍了整个课程的结构,每一讲主要要讲得东西,介绍了jimmy的github形式...
    力达兄弟阅读 3,180评论 0 11
  • GEO数据挖掘看老大哔哩哔哩 看了三遍了,随着理解,后续还要更新这篇记录,现在还太不全,有些还没跟上,代码随着理解...
    小梦游仙境阅读 2,168评论 1 7
  • 健明大神说过若是想学会使用R包,就去看那个包的说明书,因此去学习了GEOquery包说明书。翻译不当之处请去看原文...
    土豆学生信阅读 41,303评论 1 80
  • “一个人知道自己为什么而活,就可以忍受任何一种生活。”浮云易老,陌路沧桑。转眼又过一年,却还是没有找到人生的意义。...
    Ann安墨染阅读 716评论 0 11
  • Top 10 Cancer Causing Foods to Cut Your Cancer Risk in Ha...
    Annie大讲堂阅读 248评论 0 0