通過
exprs
函數(shù)獲取表達(dá)矩陣后我們可以通過以下三種方法判斷是否需要進(jìn)行l(wèi)og2轉(zhuǎn)換
1.肉眼識(shí)別
最簡(jiǎn)單粗暴的方法就是辆飘,根據(jù)數(shù)值大小粗略估計(jì):
如果表達(dá)量的數(shù)值在50以內(nèi)啦辐,通常是經(jīng)過log2轉(zhuǎn)化后的。如果數(shù)字在幾百幾千蜈项,則是未經(jīng)轉(zhuǎn)化的芹关。因?yàn)?的幾十次方已經(jīng)非常巨大,如果2的幾百次方紧卒,則不符合實(shí)際情況侥衬。
比如,下面這個(gè)矩陣跑芳,我們?nèi)庋劬湍芸吹綌?shù)值都是個(gè)位數(shù)字轴总,最大也就十幾,這就是log處理過的:
這個(gè)矩陣數(shù)字就很大博个,這時(shí)候需要log2轉(zhuǎn)換:
2.根據(jù)標(biāo)準(zhǔn)化處理方法推算
GSE數(shù)據(jù)下載界面中的SOFT
文件和Series Matrix File(s)
文件中均有描述該系列的數(shù)據(jù)是如何進(jìn)行標(biāo)準(zhǔn)化處理的怀樟,常見的標(biāo)準(zhǔn)化處理方法有3種:RMA算法、GC-RMA算法盆佣、MAS5算法往堡,其中前兩中算法的返回值已經(jīng)經(jīng)過log2轉(zhuǎn)換,可直接進(jìn)行差異表達(dá)分析共耍,第三種算法返回值未經(jīng)過log2轉(zhuǎn)換虑灰,需要自行進(jìn)行l(wèi)og2轉(zhuǎn)換。
打開下載好的Series Matrix File(s)文件—GSE42872_series_matrix.txt痹兜,查看數(shù)據(jù)使用的是哪種標(biāo)準(zhǔn)化處理方法穆咐。
發(fā)現(xiàn)使用的是
RMA算法
,我們知道該算法的返回值已經(jīng)經(jīng)過log2轉(zhuǎn)換佃蚜,可直接進(jìn)行差異表達(dá)分析庸娱。
3.使用腳本自動(dòng)判斷是否需要log轉(zhuǎn)換
## 下載數(shù)據(jù)GSE42872
rm(list = ls())
library(GEOquery)
eSet <- getGEO("GSE42872",
destdir = '.',
getGPL = F)
# 從eSet中提取表達(dá)矩陣exprSet
exprSet <- exprs(eSet[[1]])
#對(duì)得到的表達(dá)矩陣操作
ex <- exprSet
qx <- as.numeric(quantile(ex, c(0., 0.25, 0.5, 0.75, 0.99, 1.0), na.rm=T))
LogC <- (qx[5] > 100) ||
(qx[6]-qx[1] > 50 && qx[2] > 0) ||
(qx[2] > 0 && qx[2] < 1 && qx[4] > 1 && qx[4] < 2)
if (LogC) { ex[which(ex <= 0)] <- NaN
exprSet <- log2(ex)
print("log2 transform finished")}else{print("log2 transform not needed")}
這個(gè)腳本會(huì)自動(dòng)判斷是否需要log2轉(zhuǎn)化,上面我們知道GSE42872數(shù)據(jù)是log2過后的谐算,所以這里會(huì)返回:
[1] "log2 transform not needed"
如果沒有l(wèi)og話熟尉,他自動(dòng)log2,并且返回:
"log2 transform finished"
判斷是否需要log2轉(zhuǎn)換腳本來自果子學(xué)生信簡(jiǎn)書