GEO挖掘?qū)崙?zhàn)二瞳氓、差異分析及富集分析

「生信技能樹」三陰性乳腺癌表達(dá)矩陣探索 系列筆記
GEO挖掘?qū)崙?zhàn)一恩沛、初步探索數(shù)據(jù) - 簡(jiǎn)書
GEO挖掘?qū)崙?zhàn)二、差異分析及富集分析 - 簡(jiǎn)書
GEO挖掘?qū)崙?zhàn)三已卷、GSVA - 簡(jiǎn)書
GEO挖掘?qū)崙?zhàn)四、TNBC相關(guān)探索 - 簡(jiǎn)書

在之前的步驟中,已經(jīng)準(zhǔn)備好表達(dá)矩陣與分組信息腐螟;并且在兩組分組存在一定區(qū)分度。接下來就可進(jìn)行差異分析困后。得到差異基因結(jié)果后可繪制火山圖乐纸、熱圖;進(jìn)行富集分析(ORF摇予,GSEA)等汽绢。

4、limma差異分析

芯片數(shù)據(jù)的差異分析一般使用limma包

4.1

#可選
#先隨便選擇一個(gè)探針在兩組樣本間的分布進(jìn)行可視化
rm(list = ls())
load('exp_group.Rdata')
library(ggpubr)
bp=function(g){
  df <- data.frame(gene=g,group=group_list)
  ggboxplot(df, x='group', y='gene',
            color = "group", palette = 'jco',
            add = "jitter") +  #散點(diǎn)圖抖動(dòng)
    stat_compare_means()  #添加p值
}
bp(exp[2,])
4-1

4.2侧戴、limma差異分析

library(limma)
design <- model.matrix(~factor(group_list))
fit=lmFit(exp, design)
fit=eBayes(fit)
options(digits = 4)
deg <- topTable(fit,coef=2,adjust='BH',number = Inf)
head(deg,3)
t.test(exp[rownames(deg)[1],]~group_list)
bp(exp[rownames(deg)[1],])


4-2

如上圖宁昭,logFC即logFoldchange,為raw counts變化倍數(shù)的log值酗宋。由于數(shù)據(jù)已經(jīng)是log后的所有是兩組對(duì)應(yīng)的均值的差值积仗。
此外根據(jù)logFC的正負(fù)性,我們能夠判斷這里是TNBC與nonTNBC相比蜕猫。若想修改比較順序斥扛,簡(jiǎn)單的方法是直接取logFC的相反數(shù)即可

4-3

TCGA學(xué)習(xí)02:差異分析 - 簡(jiǎn)書的筆記中是limma配合edgeR包差異分析的pipeline,二者區(qū)別暫時(shí)還未弄清。

4.3稀颁、探針名轉(zhuǎn)化

if (!require("hgu133plus2.db"))
  BiocManager::install("hgu133plus2.db")
ls('package:hgu133plus2.db')
ids <- toTable(hgu133plus2SYMBOL)
#得到這個(gè)平臺(tái)里颊糜,所有探針與基因名(symbol格式)的對(duì)應(yīng)關(guān)系
ide <- toTable(hgu133plus2ENTREZID)
head(ids);dim(ids)
head(ide);dim(ide)
deg$probe_id=rownames(deg)
deg <- merge(deg, ids, by='probe_id')
deg <- merge(deg, ide, by='probe_id')
head(deg)

save(deg, file = 'deg.Rdata')
rm(list = ls())

此外知道symbol等標(biāo)準(zhǔn)基因ID后,也可通過clusterProfiler包進(jìn)行基因名間的轉(zhuǎn)換秃踩。例如
4.3-3

5衬鱼、差異分析結(jié)果可視化

5.1、火山圖

load('deg.Rdata')
head(deg)
deg$change=as.factor(
  ifelse(deg$P.Value>0.01, 'stable', 
          ifelse(deg$logFC>1.5,'UP',
                 ifelse(deg$logFC< -1.5,'DOWN','stable'))
         )
  )
table(deg$change)
deg$'-log10(pvalue)' <- -log10(deg$P.Value)
head(deg)
ggscatter(deg, x="logFC", y="-log10(pvalue)",
          color="change",size = 0.7,
          label = "symbol", repel = T, #自動(dòng)調(diào)整標(biāo)簽位置
          label.select = c("AGR3","CYP4Z1","PROM1","SHC4"))

save(deg,file = "deg.Rdata")
rm(list = ls())
5.1

此外也可利用ggplot繪制憔杨,可參考TCGA學(xué)習(xí)02:差異分析 - 簡(jiǎn)書

5.2鸟赫、熱圖

  • 繪制熱圖根據(jù)差異探針,選取表達(dá)矩陣的子集消别;
  • 這里我們分別選取上調(diào)抛蚤、下調(diào)的top100基因繪圖。
load("deg.Rdata")
head(deg)
tmp <- deg$logFC; names(tmp) <- deg$probe_id
head(tmp)
cg_up <- names(head(sort(tmp,decreasing = T),100))
cg_down <- names(head(sort(tmp),100))

load("exp_group.Rdata")
n=t(scale(t(exp[c(cg_up,cg_down),])))
n[n>2]=2; n[n< -2]= -2
n[1:4,1:4]
group_dat <- data.frame(group=group_list, row.names = colnames(exp))
library(pheatmap)
pheatmap(n,
         show_rownames = F,
         show_colnames = F,
         #cluster_cols = F,
         annotation_col = group_dat)
5.2

6寻狂、富集分析

之前學(xué)習(xí)RNA-seq轉(zhuǎn)錄組學(xué)習(xí)時(shí)岁经,對(duì)富集分析的概念與流程有過一定的了解。主要分為ORF與GESA兩類蛇券,都可用clusterProfiler包完成缀壤。在曾老師的視頻中后者是使用了MsigDB的數(shù)據(jù)集進(jìn)行分析的。
-RNA-seq學(xué)習(xí):No.5富集分析--ORF過表達(dá) - 簡(jiǎn)書
-RNA-seq學(xué)習(xí):No.6富集分析--GESA - 簡(jiǎn)書

6.1 ORF過表達(dá)富集分析

主要需要上下調(diào)基因的ENTREZID

rm(list=ls())
library(clusterProfiler)
load('deg.Rdata')
gene_up <- deg[deg$change=="UP","gene_id"]
gene_down <- deg[deg$change=="DOWN","gene_id"]

##kegg.up
kk.up <- enrichKEGG(gene = gene_up,
                    organism = "hsa",
                    pvalueCutoff = 0.9,
                    qvalueCutoff = 0.9)
head(kk.up)
kegg_up_dt <- as.data.frame(kk.up)
##kegg.down
kk.down <- enrichKEGG(gene = gene_down,
                    organism = "hsa",
                    pvalueCutoff = 0.9,
                    qvalueCutoff = 0.9)
head(kk.down)
kegg_down_dt <- as.data.frame(kk.down)
kegg_plot <- function(up_kegg,down_kegg){
dat=rbind(up_kegg,down_kegg)
dat$pvalue <- -log10(dat$pvalue)
dat$pvalue <- dat$pvalue*dat$group
dat=dat[order(dat$pvalue,decreasing = F),]
ggplot(dat, aes(x=reorder(Description,order(pvalue,decreasing= F)),y=pvalue, fill=group)) + 
  #x軸按對(duì)應(yīng)的pvalue值從大到小排列pathway的Description
  geom_bar(stat='identity') +
  #設(shè)置柱狀圖高低直接為數(shù)值大小纠亚,而不是counts
  scale_fill_gradient(low="blue",high = "red", guide = F) +
  scale_x_discrete(name="pathway names") +
  #針對(duì)字符型軸標(biāo)簽注釋
  scale_y_continuous(name="log10P-value") +
  #針對(duì)連續(xù)型軸標(biāo)題注釋
  coord_flip() + theme_bw() + theme(plot.title = element_text(hjust = 0.5)) +
  ggtitle("pathway enrichment")
}
up_kegg <- kegg_up_dt[kegg_up_dt$pvalue<0.05,];up_kegg$group <- -1
down_kegg <- kegg_down_dt[kegg_down_dt$pvalue<0.05,];down_kegg$group <- 1
kegg_plot(up_kegg,down_kegg)
  • 分別查看上下調(diào)基富集到哪些通路里诉位。


    6.1

此外還有 go的富集分析大同小異,這里不做介紹菜枷,可參考上面的鏈接。

6.2 GSEA的FCS富集分析(基于MsigDB數(shù)據(jù)庫)

(1)genelist

需要準(zhǔn)備genelist數(shù)值型字符串叁丧,即為logFC值啤誊,從大到小排列;并以ENTREZID/SYMBOL命名拥娄。

rm(list = ls())
load("deg.Rdata")
head(deg);table(deg$change)
dat <- deg[deg$change %in% c("DOWN","UP"), c('logFC','gene_id')]
dim(dat);head(dat)
genelist <- dat$logFC
names(genelist) <- dat$gene_id
genelist <- sort(genelist, decreasing = T)

(2)下載MsigDB

  • GSEA | MSigDB https://www.gsea-msigdb.org/gsea/msigdb/index.jsp
    需要注冊(cè)一個(gè)郵箱蚊锹,才能下載。這里我們用的ENTREZID稚瘾,故下載對(duì)應(yīng)的版本即可牡昆,保存到自己工作目錄的一個(gè)子目錄即可。
d <- "./msigdb/"
gmts <- list.files(d, pattern = 'all')
gmts
#[1] "c1.all.v7.1.entrez.gmt" "c2.all.v7.1.entrez.gmt" "c3.all.v7.1.entrez.gmt"
#[4] "c4.all.v7.1.entrez.gmt" "c5.all.v7.1.entrez.gmt" "c6.all.v7.1.entrez.gmt"
#[7] "h.all.v7.1.entrez.gmt" 

(3)富集分析

if (!require("BiocManager"))
  install.packages("BiocManager")
if (!require("GSEABase"))
  BiocManager::install("GSEABase")
gsea_results <- lapply(gmts, function(gmtfile){
  geneset <- read.gmt(file.path(d,gmtfile))
  print(paste0("Now process the ", gmtfile))
  egmt <- GSEA(genelist, 
               TERM2GENE = geneset, 
               pvalueCutoff = 0.05) #默認(rèn)值,導(dǎo)致有的數(shù)據(jù)庫就沒有富集到丢烘,可適當(dāng)調(diào)大)
  head(egmt)
  return(egmt)
})
gsea_results_df <- lapply(gsea_results, function(x){
  cat(paste(dim(x@result)), '\n')
  x@result
}) #得到的list包含各個(gè)result

gsea_results_df <- do.call(rbind,gsea_results_df) #合并list里的所有result

gseaplot(gsea_results[[2]],gsea_results[[2]]@result$ID[3])
gsea_results[[2]]@result$ID[3]

如下圖柱宦,可看出差異基因在這個(gè)geneset里主要富集下調(diào)了。更多解讀可見上文的筆記鏈接播瞳。此外clusterfile包也可做GSEA分析掸刊,主要是go、kegg數(shù)據(jù)庫赢乓。


6.2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忧侧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子牌芋,更是在濱河造成了極大的恐慌蚓炬,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躺屁,死亡現(xiàn)場(chǎng)離奇詭異肯夏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)楼咳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門熄捍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人母怜,你說我怎么就攤上這事余耽。” “怎么了苹熏?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵碟贾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我轨域,道長(zhǎng)袱耽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任干发,我火速辦了婚禮朱巨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枉长。我一直安慰自己冀续,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布必峰。 她就那樣靜靜地躺著洪唐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吼蚁。 梳的紋絲不亂的頭發(fā)上凭需,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼粒蜈。 笑死顺献,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的薪伏。 我是一名探鬼主播滚澜,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嫁怀!你這毒婦竟也來了设捐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤塘淑,失蹤者是張志新(化名)和其女友劉穎萝招,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體存捺,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡槐沼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捌治。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岗钩。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肖油,靈堂內(nèi)的尸體忽然破棺而出兼吓,到底是詐尸還是另有隱情,我是刑警寧澤森枪,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布视搏,位于F島的核電站,受9級(jí)特大地震影響县袱,放射性物質(zhì)發(fā)生泄漏浑娜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一式散、第九天 我趴在偏房一處隱蔽的房頂上張望筋遭。 院中可真熱鬧,春花似錦暴拄、人聲如沸漓滔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至反肋,卻和暖如春那伐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工罕邀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畅形,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓诉探,卻偏偏與公主長(zhǎng)得像日熬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肾胯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容