GEO 批次效应就靠一个函数搞定
测试开头

测试结尾
今天是生信星球陪你的第462天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
花花写于2019-09-30
导读
当用到多个数据集合并分析时不可避免要处理批次效应,一篇2011年的批次效应处理工具测评文章中说,sva的ComBat函数是表现最好的~所以赶紧学习下它。
关于批次效应产生的原因,可参照:
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2920074/
1.准备R包
if(!require(BiocManager)) install.packages("BiocManager")
if(!require(sva)) BiocManager::install("sva")
if(!require(bladderbatch)) BiocManager::install("bladderbatch")
library(sva)
library(bladderbatch)
2. 了解数据
示例数据取自bladderbatch包,用data加载,和GEO下载的数据一样,可直接用函数提取表达矩阵和临床信息。
data(bladderdata)
edata <- exprs(bladderEset)
pheno <- pData(bladderEset)
dim(edata);head(pheno)
## [1] 22283 57
## sample outcome batch cancer
## GSM71019.CEL 1 Normal 3 Normal
## GSM71020.CEL 2 Normal 2 Normal
## GSM71021.CEL 3 Normal 2 Normal
## GSM71022.CEL 4 Normal 3 Normal
## GSM71023.CEL 5 Normal 3 Normal
## GSM71024.CEL 6 Normal 3 Normal
table(pheno$cancer)
## Biopsy Cancer Normal
## 9 40 8
edata[1:4,1:4]
## GSM71019.CEL GSM71020.CEL GSM71021.CEL GSM71022.CEL
## 1007_s_at 10.115170 8.628044 8.779235 9.248569
## 1053_at 5.345168 5.063598 5.113116 5.179410
## 117_at 6.348024 6.663625 6.465892 6.116422
## 121_at 8.901739 9.439977 9.540738 9.254368
3.设置model(可选)
mod = model.matrix(~as.factor(cancer), data=pheno)
4.校正其实就一步
combat_edata <- ComBat(dat = edata, batch = pheno$batch, mod = mod)
## Found5batches
## Adjusting for2covariate(s) or covariate level(s)
## Standardizing Data across genes
## Fitting L/S model and finding priors
## Finding parametric adjustments
## Adjusting the Data
5.聚类看下批次效应处理前后对比
## before
dist_mat <- dist(t(edata))
clustering <- hclust(dist_mat, method = "complete")
## after1
dist_mat_combat <- dist(t(combat_edata))
clustering_combat <- hclust(dist_mat_combat, method = "complete")
可视化
par(mfrow = c(2,2))
plot(clustering, labels = pheno$batch)
plot(clustering, labels = pheno$cancer)
plot(clustering_combat, labels = pheno$batch)
plot(clustering_combat, labels = pheno$cancer)

可以看到批次处理前cancer夹杂在normal中,聚类是不对的,处理后则聚类正确~
示例代码来自Combat的帮助文档,可直接在Rstudio中用??sva::ComBat
查看。
向大家隆重推荐隔壁生信技能树的一系列干货!
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到jieandze1314@gmail.com,每一条都会看到的哦~
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!