隨著對(duì)芯片數(shù)據(jù)的更多了解毅人,明白了數(shù)據(jù)預(yù)處理的一些難點(diǎn)。
過去很多不同組的實(shí)驗(yàn)人員設(shè)計(jì)了類似的方案尖殃,比如某一類型的腫瘤-正常組對(duì)照實(shí)驗(yàn)丈莺,收集了幾個(gè)樣本,然后獲得了芯片的profile數(shù)據(jù)送丰。后續(xù)進(jìn)一步挖數(shù)據(jù)的人(多快好实薅怼)就希望整合這些樣本,畢竟大樣本會(huì)更有說服力(偏差也很大)器躏。但是由于批次效應(yīng)的原因俐载,導(dǎo)致整合在一起的數(shù)據(jù),分析結(jié)果除了兩組樣本之間的生物學(xué)差異外登失,還有實(shí)驗(yàn)室差異和芯片平臺(tái)差異等等混淆因素遏佣。因此,如何在海量的數(shù)據(jù)里面去除掉不相干的差異(誤差)揽浙,最終得到理想的多樣本間差異來進(jìn)一步分析是很多實(shí)驗(yàn)人員所關(guān)心的事情状婶。
傳統(tǒng)的批次效應(yīng)去除方法,包含用preprocessCore包的quantile normalization馅巷,sva包的Combat或者limma包的removebatcheffect函數(shù)等膛虫。效果好不好,我沒有資格批判钓猬,還是根據(jù)實(shí)驗(yàn)結(jié)果來思考走敌。最近發(fā)表在bioinformatics上的文章MatchMixeR以及CuBlock,用來合并數(shù)據(jù)集并去除批次效應(yīng)逗噩。這里只對(duì)MatchMixeR的使用方法進(jìn)行介紹掉丽,有需要的朋友可以深入了解。
```
#不是cran或者bioconductor上的包异雁,需要從github上面下載捶障,因此還需要同時(shí)下載依賴。
# devtools::install_github("dy16b/Cross-Platform-Normalization/MatchMixeR")
#install.packages('fields')
#install.packages('CLSOCP')
library(MatchMixeR)
data(gpl570_gpl96)
#The functions below perform cross-platform normalization of microarray data, and come from the CONOR package. Dwd is distance weighted discrimination. Eb is empirical bayes. Xpn is cross-platform normalization. The dwd function requires the package rdist. The xpn function requires the package conclust.
#下面這些函數(shù)都來源于CONOR包
merge_dwd<-dwd(gpl570,gpl96)
merge_eb<-eb(gpl570,gpl96)
merge_xpn<-xpn(gpl570,gpl96)
merge_gq<-gq(gpl570,gpl96)
#MM和flmer函數(shù)源自MatchMixeR包
merge_flmer<-flmer(gpl570,gpl96)
merge_MM<-MM(gpl570,gpl96)
```
看到這里纲刀,相信不僅是你蒙了项炼,其實(shí)我也蒙了。從經(jīng)驗(yàn)角度來說,既然作者沒有解釋清楚锭部,只有自己摸索了暂论。在結(jié)果merge_MM這個(gè)list中,有一個(gè)Yhat拌禾,和原始數(shù)據(jù)是一樣的dim取胎,因此我們猜測(cè)它是轉(zhuǎn)換后的gpl96數(shù)據(jù)。
```
colnames(gpl570)<-(paste0(colnames(gpl570),'_1'))
merged_data<-as.data.frame(cbind(gpl570,merge_MM$Yhat))
下面用常規(guī)PCA來看批次效應(yīng)前后數(shù)據(jù)間的差別
orig_data<-cbind(gpl570,gpl96)
orig_data<-as.data.frame(t(orig_data))
merged_data<-as.data.frame(t(merged_data))
library(ggfortify)
#originaldata湃窍,看出來完全區(qū)分不開
group<-rep(c("gpl570",'gpl96'),each=58)
orig_data$group<-group
autoplot(prcomp(orig_data[,1:(ncol(orig_data)-1)] ),
data=orig_data,colour='group',
frame.type='norm')+
theme_bw()
merged_data$group<-group
autoplot(prcomp(merged_data[,1:(ncol(merged_data)-1)] ),
data=merged_data,colour='group',
frame.type='norm')+
theme_bw()
```
除了gpl96更緊湊了闻蛀,好像沒什么區(qū)別?
而且您市,用了dwd或者其它的函數(shù)結(jié)果反而還能接受:
merged_data<-cbind(merge_dwd$x,merge_dwd$y)
merged_data<-as.data.frame(t(merged_data))
我整不明白了觉痛。。茵休。薪棒。。榕莺。盗尸。。帽撑。在風(fēng)中凌亂,劈個(gè)叉博各位看官一笑
我還有一個(gè)小問題:PCA降維來看高維數(shù)據(jù)之間的差異/相似的意義在哪里鞍时?tsne降維之后可以將分組數(shù)據(jù)亏拉,比如這里得GPL570和GPL96分得很開,但是這些數(shù)據(jù)都是都是事先定義好的逆巍,如果要找新的分組分類及塘,就像Seurat所用的是SNN方法。那么用PCA將兩組分開锐极,用來證明可以找差異基因是否有意義笙僚?