前言
在一開(kāi)始學(xué)習(xí)基因差異表達(dá)分析時(shí),老師就強(qiáng)調(diào)用raw count做差異分析,相關(guān)文獻(xiàn)和資料我也保存了不少,我之前弄清楚log2/cpm與count fpkm等不是在一個(gè)水平上討論的問(wèn)題,但是具體用的時(shí)候還是要栽個(gè)跟頭才能印象深刻。
我在復(fù)現(xiàn)這篇推文時(shí)老文新看,今天來(lái)看看兩個(gè)數(shù)據(jù)集的整合分析
一般情況下我自以為已經(jīng)掌握一般差異分析流程,就看看把作者代碼跑一邊就行了,在這篇推文中作者沒(méi)有給出差異分析部分代碼和數(shù)據(jù),但是后面介紹并使用了一種我很感興趣的RRA算法,所以自己動(dòng)手分別用DESeq2和limma做了差異分析,結(jié)果一動(dòng)手問(wèn)題就出來(lái)了,兩個(gè)包的差異分析結(jié)果都表明沒(méi)有顯著差異表達(dá)的基因!我一開(kāi)始甚至認(rèn)為是是數(shù)據(jù)集的問(wèn)題,但昨天恰好在討論群里也有一位uu有相同的問(wèn)題,我跟他交換了代碼才發(fā)現(xiàn)了log2這個(gè)端倪。
uu的流程
uu用的是是GSE26728芯片數(shù)據(jù)集,我用我的流程跑一一遍他的數(shù)據(jù),起初發(fā)現(xiàn)跟他結(jié)果一致,沒(méi)有什么差異表達(dá)的基因,但是我的結(jié)果數(shù)值都比他大一點(diǎn)。查看他自己的代碼,發(fā)現(xiàn)他在exp表達(dá)矩陣range在20以?xún)?nèi)的情況下仍然進(jìn)行了log2,所以導(dǎo)致數(shù)據(jù)比我?。ㄆ鋵?shí)不是,是因?yàn)橹苯觢og2和使用limma::voom算法的不同導(dǎo)致的微小差異,后面會(huì)提)。
但是我同時(shí)注意到,他在使用limma包進(jìn)行差異分析時(shí)直接使用了exp表達(dá)矩陣進(jìn)行(這里面他的數(shù)據(jù)框格式下的表達(dá)矩陣有一個(gè)小坑)
fit=lmFit(exp1,design)
# Error in lmFit(exp1, design) :
# Expression object should be numeric, instead it is a data.frame with 11 non-numeric columns
# 我那里這個(gè)是DGEList voom后 EList對(duì)象
fit=eBayes(fit)
deg=topTable(fit,coef=2,number = Inf)
(小坑,他在處理數(shù)據(jù)框時(shí)里面有許多描述信息,屬于字符元素,而差異分析需要numeric數(shù)值型元素,如果你不把所有字符型元素去除就會(huì)發(fā)現(xiàn)為了統(tǒng)一所有的元素類(lèi)型都變成了字符型)
但是當(dāng)我將他的log2處代碼注釋掉后再次進(jìn)行發(fā)現(xiàn)差異分析結(jié)果變得“正常了”,而不是預(yù)期中與我一致
所以我開(kāi)始懷疑我的流程中存在我不知的log2或者說(shuō)標(biāo)準(zhǔn)化操作
我的流程
我查看我的流程發(fā)現(xiàn)我在這部分先將exp表達(dá)矩陣轉(zhuǎn)換成了一個(gè)DEGList對(duì)象后使用voom轉(zhuǎn)換成了一個(gè)EList對(duì)象
一開(kāi)始我以為voom函數(shù)是線(xiàn)性化矩陣以便后面擬合,而當(dāng)我再次查看voom函數(shù)的功能時(shí)發(fā)現(xiàn)voom函數(shù)同樣對(duì)表達(dá)矩陣進(jìn)行了log2標(biāo)準(zhǔn)化處理
真相大白
原來(lái)我和他都犯了同一個(gè)錯(cuò)誤,那就是重復(fù)標(biāo)準(zhǔn)化,導(dǎo)致差異也被縮小,換句話(huà)講就是,我和他都使用了標(biāo)準(zhǔn)化后的數(shù)據(jù)(cpm/log2后數(shù)據(jù)常用來(lái)作圖),而非rawcount進(jìn)行了一般情況下的差異表達(dá)分析流程!
所以我認(rèn)為,針對(duì)這個(gè)錯(cuò)誤,有兩種解決辦法,一是將我們一般性流程中的標(biāo)準(zhǔn)化部分去除,如uu那樣直接使用表達(dá)矩陣,而不通過(guò)limma::voom
但這種方法存在局限性:只能適用于limma包,因?yàn)閘imma包voom log2步驟是分開(kāi)的,有操作空間,而DESeq2 result一體化
limma這種分布進(jìn)行的特點(diǎn)在復(fù)現(xiàn)這篇推文,差異分析不是這樣做的……
時(shí)也可以發(fā)現(xiàn),論文作者的失誤正是使用limma時(shí),想當(dāng)然地認(rèn)為不對(duì)表達(dá)矩陣取log2就得到FC,實(shí)際上
limma包需要接收l(shuí)og2后的表達(dá)矩陣(voom/log2)
算法核心是logA-logB= log(A-B) 作者實(shí)際操作是rawcount A-B
不能想當(dāng)然認(rèn)為不對(duì)表達(dá)矩陣取log2就得到FC 如果要直接從rawcount入手也要是FC = B/A
如果作者就是想直接拿rawcount走到差異分析這一步,可以使用DESeq2,result后自動(dòng)得到的雖然也是log2FC,手動(dòng)2^即可
在實(shí)際學(xué)習(xí)的過(guò)程中,
生信菜鳥(niǎo)團(tuán)::轉(zhuǎn)錄組專(zhuān)題的老師使用DESeq2和limma包時(shí)都使用的時(shí)rawcount,因?yàn)檫@個(gè)專(zhuān)輯涉及到上游分析的學(xué)習(xí),limma于是就需要voom
而表達(dá)量芯片的老師偏向使用limma包處理log2后的exp矩陣,可能因?yàn)樾酒臄?shù)據(jù)大多數(shù)GEO上存的都是log2后的,如果是rawcount也還是需要手動(dòng)log2/voom
其它需要注意的標(biāo)準(zhǔn)化
組間差異
在進(jìn)行基因差異分析前需要考慮組間差異,如通過(guò)limma::normalizeBetweenArrays去除
進(jìn)行基因差異分析前通常需要考慮組間差異,因?yàn)樵诮M間差異顯著的情況下,比較基因表達(dá)水平的差異才具有生物學(xué)意義。
在使用limma包進(jìn)行基因差異分析時(shí),可以使用其中的normalizeBetweenArrays函數(shù)對(duì)不同組之間的差異進(jìn)行標(biāo)準(zhǔn)化處理。該函數(shù)可以用于批次效應(yīng)的去除和樣本間的標(biāo)準(zhǔn)化,使得樣本之間的比較更加準(zhǔn)確和可靠。但需要注意的是,標(biāo)準(zhǔn)化只是一個(gè)預(yù)處理步驟,對(duì)于基因差異分析的結(jié)果可能會(huì)有一定的影響,因此還需要根據(jù)實(shí)驗(yàn)的設(shè)計(jì)和數(shù)據(jù)的質(zhì)量進(jìn)行合理的統(tǒng)計(jì)分析。
TODO
待補(bǔ)充
未進(jìn)行組間差異處理導(dǎo)致的·DESeq2報(bào)錯(cuò)
dds2 <- DESeq(dds)
estimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
Error in estimateDispersionsFit(object, fitType = fitType, quiet = quiet) :
all gene-wise dispersion estimates are within 2 orders of magnitude
from the minimum value, and so the standard curve fitting techniques will not work.
One can instead use the gene-wise estimates as final estimates:
dds <- estimateDispersionsGeneEst(dds)
dispersions(dds) <- mcols(dds)$dispGeneEst
…then continue with testing using nbinomWaldTest or nbinomLRT
chatgpt:
這個(gè)錯(cuò)誤提示表明在使用DESeq對(duì)dds對(duì)象進(jìn)行差異分析時(shí),估計(jì)基因的分散度時(shí)出現(xiàn)了問(wèn)題。具體來(lái)說(shuō),這個(gè)錯(cuò)誤通常是由于基因的分散度估計(jì)值非常相近而無(wú)法進(jìn)行標(biāo)準(zhǔn)擬合所導(dǎo)致的。
解決這個(gè)問(wèn)題的方法是使用estimateDispersionsGeneEst函數(shù),該函數(shù)可以使用基因特定的分散度估計(jì)值來(lái)代替標(biāo)準(zhǔn)擬合。具體而言,需要按照錯(cuò)誤提示中所示的步驟進(jìn)行操作:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-691270.html
dds <- estimateDispersionsGeneEst(dds)
dispersions(dds) <- mcols(dds)$dispGeneEst
這將使用基因特定的分散度估計(jì)值進(jìn)行差異分析,可以使用nbinomWaldTest或nbinomLRT函數(shù)進(jìn)行差異分析測(cè)試。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-691270.html
到了這里,關(guān)于【差異表達(dá)分析】差異表達(dá)分析標(biāo)準(zhǔn)不標(biāo)準(zhǔn)化這是一個(gè)問(wèn)題(含其其它報(bào)錯(cuò)問(wèn)題)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!