2019-09-02R包第二天:差異分析包(二)DEseq2

本文轉(zhuǎn)載自:presentlife的簡(jiǎn)書括囊無(wú)譽(yù)的簡(jiǎn)書
建議直接跳轉(zhuǎn):康君愛(ài)上了蕊醬的簡(jiǎn)書

摘要

測(cè)序產(chǎn)生的數(shù)據(jù)內(nèi)容為拭嫁,每個(gè)樣本中可免,每個(gè)基因分配到多少個(gè)測(cè)序片段,各種類型的測(cè)序(RNA-seq噩凹,CHIP-Seq巴元,HiC)產(chǎn)生的數(shù)據(jù)類似。RNA-seq數(shù)據(jù)分析的一個(gè)基本任務(wù)就是檢測(cè)差異性表達(dá)的基因驮宴。其中一個(gè)重要的問(wèn)題就是對(duì)不同條件下產(chǎn)生的系統(tǒng)學(xué)差異進(jìn)行量化和統(tǒng)計(jì)學(xué)推斷逮刨。DESeq2使用負(fù)二項(xiàng)式廣義線性模型來(lái)檢測(cè)基因表達(dá)的差異性,對(duì)分散和LFC的估計(jì)包含數(shù)據(jù)的先驗(yàn)分布堵泽。這篇短文介紹了包的使用和工作流程修己。

Deseq2的基本流程

#準(zhǔn)備count tables
cnts <- matrix(rnbinom(n=1000, mu=100, size=1/0.5),ncol = 10) #構(gòu)建滿足隨機(jī)負(fù)二項(xiàng)分布的一組數(shù)
cond <- factor(rep(1:2,each=5))

#創(chuàng)建DEseqDataSet
dds2 <- DESeqDataSetFromMatrix(cnts,DataFrame(cond), ~cond)
#前過(guò)濾
keep <- rowSums(counts(dds)) >= 10
dds <- dds[keep,]

#標(biāo)準(zhǔn)分析
dds2 <- DESeq(dds2)
res <- results(dds2)
##另一種檢驗(yàn),LRT迎罗,似然率檢驗(yàn)
#ddsLRT <- DESeq(dds2,test="LRT",reduced=~1)
#resLRT <- results(ddsLRT)

#moderate lfc
resultsNames(dds2)
resLFC <- lfcShrink(dds2,coef = 2,type = "apeglm")

#提取結(jié)果
summary()睬愤、subset()
已有基因表達(dá)矩陣,通過(guò)給定樣本信息纹安,因子公式設(shè)計(jì)來(lái)進(jìn)行差異分析尤辱,最后可生成普通差異分析結(jié)果和收縮后的差異分析結(jié)果,詳細(xì)的后續(xù)厢岂。

示例

1光督、加載DESeq2并設(shè)置樣品信息

library(DESeq2) # 加載DESeq2包
countData <- raw_count_filt2 # 表達(dá)矩陣
condition <- factor(c("control","control","KD","KD")) # 定義condition
colData <- data.frame(row.names=colnames(countData), condition) # 樣品信息矩陣

2、構(gòu)建dds矩陣并進(jìn)行差異分析

dds <- DESeqDataSetFromMatrix(countData, DataFrame(condition), design= ~ condition ) # 構(gòu)建dds矩陣
head(dds) # 查看dds矩陣的前6行
dds2 <- DESeq(dds) # 對(duì)dds進(jìn)行Normalize
resultsNames(dds) # 查看結(jié)果的名稱
res <- results(dds) # 使用results()函數(shù)獲取結(jié)果塔粒,并賦值給res
head (res, n=5) # 查看res矩陣的前5行
mcols(res,use.names= TRUE) # 查看res矩陣每一列的含義
summary(res) # 對(duì)res矩陣進(jìn)行總結(jié)

3结借、提取差異分析結(jié)果

table(res$padj<0.05) # 取padj小于0.05的數(shù)據(jù),得到743行
res <- res[order(res$padj),] # 按照padj的大小將res重新排列
diff_gene_deseq2 <- subset(res,padj < 0.05 & (log2FoldChange >1 | log2FoldChange < -1)) # 獲取padj小于0.05卒茬,表達(dá)倍數(shù)取以2為對(duì)數(shù)后絕對(duì)值大于1的差異表達(dá)基因船老,賦值給diff_gene_deseq2
head (diff_gene_deseq2, n=5) # 查看diff_gene_deseq2矩陣的前5行
diff_gene_deseq2 <- row.names(diff_gene_deseq2) # 提取diff_gene_deseq2的行名
head (diff_gene_deseq2, n=5)
resdata <- merge (as.data.frame(res),as.data.frame(counts(dds,normalize=TRUE)),by="row.names",sort=FALSE)
head (resdata,n=5)
write.csv(resdata, file="control_vs_akap95.csv") # 將結(jié)果寫入control_vs_akap95.csv文件

示例2

1咖熟、count 矩陣導(dǎo)入

#使用pasilla包中附帶的數(shù)據(jù)
library("pasilla")
#讀入表達(dá)矩陣,樣本注釋
pasCts <- system.file("extdata",
                      "pasilla_gene_counts.tsv",
                      package="pasilla", mustWork=TRUE)
pasAnno <- system.file("extdata",
                       "pasilla_sample_annotation.csv",
                      package="pasilla", mustWork=TRUE)
cts <- as.matrix(read.csv(pasCts,sep="\t",row.names="gene_id"))
coldata <- read.csv(pasAnno, row.names=1)
coldata <- coldata[,c("condition","type")]

#樣本注釋修改柳畔,排序
rownames(coldata) <- sub("fb", "", rownames(coldata))
cts <- cts[, rownames(coldata)]

#加載DESeq2包馍管,構(gòu)建dds對(duì)象
library("DESeq2")
dds <- DESeqDataSetFromMatrix(countData = cts,
                              colData = coldata,
                              design = ~ condition)

#為結(jié)果附加描述信息
featureData <- data.frame(gene=rownames(cts))
mcols(dds) <- DataFrame(mcols(dds), featureData)

2、前過(guò)濾

keep <- rowSums(counts(dds)) >= 10
dds <- dds[keep,]

3薪韩、標(biāo)注因子水平

dds$condition <- factor(dds$condition, levels = c("untreated","treated"))
dds$condition <- relevel(dds$condition, ref = "untreated")
dds$condition <- droplevels(dds$condition)
注:在進(jìn)行后續(xù)操作前指定咽斧,如果沒(méi)有指定,采用的是默認(rèn)
levels對(duì)應(yīng)的分別為躬存,分母,分子
ref為指定的對(duì)照組舀锨,即分母
當(dāng)公式中的某個(gè)變量對(duì)應(yīng)的樣本沒(méi)有的時(shí)候岭洲,可以通過(guò)dropleveles移除

4、差異性分析

dds <- DESeq(dds)
res <- results(dds)
res <- results(dds, contrast=c("condition","treated","untreated"))

5坎匿、可選操作

1)LFC收縮

resultsNames(dds)
resLFC <- lfcShrink(dds, coef="condition_treated_vs_untreated", type="apeglm")

2)任務(wù)并行

library("BiocParallel")
register(MulticoreParam(4))

3)p值和矯正p值

resOrdered <- res[order(res$pvalue),]
summary(res)
sum(res$padj < 0.1, na.rm=TRUE)
res05 <- results(dds, alpha=0.05)
sum(res05$padj < 0.05, na.rm=TRUE)

4)獨(dú)立假設(shè)權(quán)重

library("IHW")
resIHW <- results(dds, filterFun=ihw)
summary(resIHW)
sum(resIHW$padj < 0.1, na.rm=TRUE)
metadata(resIHW)$ihwResult

6盾剩、探索并導(dǎo)出結(jié)果

1)MA-plot

plotMA(res, ylim=c(-2,2))
plotMA(resLFC, ylim=c(-2,2))

注:效果好的話,收縮的圖形不會(huì)出現(xiàn)左寬右窄替蔬。

2)多種收縮方法

#查看你coef的順序序號(hào)
resultsNames(dds)
#通過(guò)序號(hào)代替全稱告私;三種收縮方法
resNorm <- lfcShrink(dds, coef=2, type="normal")
resAsh <- lfcShrink(dds, coef=2, type="ashr")
resApe <- lfcShrink(dds, coef=2, type="apeglm")

3)counts繪圖

plotCounts(dds, gene=which.min(res$padj), intgroup="condition")

4)結(jié)果的更多信息

mcols(res)$description

可以通過(guò)mcol函數(shù)來(lái)查看結(jié)果表中各個(gè)變量的含義。其中變量LFC就是變化的倍數(shù)承桥,存在NA的可能原因有:

1驻粟、一個(gè)基因在所有樣本中的表達(dá)值都為0
2、一個(gè)基因的某個(gè)樣本的表達(dá)值為離群值(通過(guò)Cook距離檢測(cè))
3凶异、一個(gè)基因counts標(biāo)準(zhǔn)化后數(shù)值過(guò)低
后續(xù):結(jié)果的導(dǎo)出和豐富的可視化
ReportingTools蜀撑,regionReport,Glimma剩彬,pcaExplorer等工具可以生成一個(gè)報(bào)表形式的結(jié)果酷麦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市喉恋,隨后出現(xiàn)的幾起案子沃饶,更是在濱河造成了極大的恐慌,老刑警劉巖轻黑,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糊肤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苔悦,警方通過(guò)查閱死者的電腦和手機(jī)轩褐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)玖详,“玉大人把介,你說(shuō)我怎么就攤上這事勤讽。” “怎么了拗踢?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵脚牍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我巢墅,道長(zhǎng)诸狭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任君纫,我火速辦了婚禮驯遇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蓄髓。我一直安慰自己叉庐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布会喝。 她就那樣靜靜地躺著陡叠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肢执。 梳的紋絲不亂的頭發(fā)上枉阵,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音预茄,去河邊找鬼兴溜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛反璃,可吹牛的內(nèi)容都是我干的昵慌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼淮蜈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼斋攀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起梧田,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淳蔼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后裁眯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹉梨,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年穿稳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了存皂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旦袋,靈堂內(nèi)的尸體忽然破棺而出骤菠,到底是詐尸還是另有隱情,我是刑警寧澤疤孕,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布商乎,位于F島的核電站,受9級(jí)特大地震影響祭阀,放射性物質(zhì)發(fā)生泄漏鹉戚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一专控、第九天 我趴在偏房一處隱蔽的房頂上張望抹凳。 院中可真熱鬧,春花似錦伦腐、人聲如沸却桶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至嗅剖,卻和暖如春辩越,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背信粮。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工黔攒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人强缘。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓督惰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親旅掂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赏胚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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