整合不同的表达谱数据时,往往需要查看和去除批次效用。可以根据样本的信息:批次,建库方法、测序方法等,作图查看这些因素是否有影响。去除 batch effect 后再研究不同处理下的差异表达基因,可以减少假阳性。

1. 载入有批次效应的数据

rm(list=ls())
setwd("/Users/xxx/scripts/R_scripts")## 1. 载入有批次效应的数据
# if (!require("BiocManager", quietly = TRUE))
#   install.packages("BiocManager")
#
# BiocManager::install("pasilla",force= TRUE)library(pasilla)dataFilesDir = system.file("extdata", package = "pasilla", mustWork=TRUE)
pasillaSampleAnno = read.csv(file.path(dataFilesDir, "pasilla_sample_annotation.csv"))
# pasillaSampleAnnocount_df <- read.table(file.path(dataFilesDir,"pasilla_gene_counts.tsv"),sep="\t",header = TRUE, row.names=1)
count_matrix <- as.matrix(count_df)#样品信息数据框,行名为表达矩阵的列名
colData = data.frame(condition = as.factor(c(rep("untreated",4),rep("treated",3))),type = as.factor(c("SR","SR","PE","PE","SR","PE","PE")))
rownames(colData) <- colnames(count_matrix)#dir(system.file("extdata", package = "pasilla", mustWork=TRUE), pattern = ".txt$")
#gffFile = file.path(dataFilesDir, "Dmel.BDGP5.25.62.DEXSeq.chr.gff")# library("DEXSeq")
# dxd = DEXSeqDataSetFromHTSeq(
#   countfiles = file.path(dataFilesDir, paste(pasillaSampleAnno$file, "txt", sep=".")),
#   sampleData = pasillaSampleAnno,
#   design= ~ sample + exon + condition:exon,
#   flattenedfile = gffFile)
# dxd 

2. 可视化查看批次效应

## 2. 可视化查看批次效应
require(DESeq2)
library(ggplot2)
dds = DESeqDataSetFromMatrix(countData = count_matrix,colData = colData,design= ~ condition+type)pcaData <- plotPCA(DESeqTransform(dds), intgroup=c("condition", "type"), returnData=TRUE)# plotPCA {DESeq2}
percentVar <- round(100 * attr(pcaData, "percentVar"))
ggplot(pcaData, aes(PC1, PC2, color=condition, shape = type)) +geom_point(size=3) +# xlim(-4e+05, 5e+05) +# ylim(-4e+05, 2e+05) +xlab(paste0("PC1: ",percentVar[1],"% variance")) +ylab(paste0("PC2: ",percentVar[2],"% variance")) +geom_text(aes(label=name),vjust=2)#ggsave("myPCAWithBatchEffect.png")

3.使用sva包的ComBat 函数去除批次效应

## 3.使用sva包的ComBat 函数去除批次效应
library(sva)
count_mat <- ComBat(dat=count_matrix, batch=colData$type)
# ComBat:Adjust for batch effects using an empirical Bayes framework
count_mat[1:3,1:5]

4. DESeq2包消除批次效应方法

## 4. DESeq2包消除批次效应
# design 设计矩阵中加入引起批次效应的因素(SR or PE)
library(DESeq2)
dds <- DESeqDataSetFromMatrix(countData = count_matrix,colData = colData,design = ~ condition+ type)
dds <- DESeq(dds)
resultsNames(dds)
res <- results(dds, name="condition_untreated_vs_treated")summary(res)
head(res)
resOdered <- res[order(res$padj),]
deg <- as.data.frame(resOdered)
#deg <- na.omit(deg)
dim(deg)
#write.csv(deg,file= "diff_deseq2.csv")# 看看批次效应导致的差异表达基因,
# 这里是测序方法SR(single-end)和PE (paired-end)
batch_res <-  results(dds, name="type_SR_vs_PE")
summary(batch_res)
head(batch_res)
batchResOdered <- res[order(batch_res$padj),]
batchDeg <- as.data.frame(batchResOdered)
batchDeg <- na.omit(batchDeg)
dim(batchDeg)
head(batchDeg)

5. 用limma的removeBatchEffect去除批次效应

## 5. 用limma的removeBatchEffect去除批次效应### 不推荐
require(limma)
require(edgeR)  # DGEList来自edgeR包# design <- model.matrix(~0+colData$condition)
# expr_mat<- removeBatchEffect(count_matrix, batch=colData$type,
#                   design= design)expr_mat<- removeBatchEffect(count_matrix, batch=colData$type)
# table(expr_mat<0) #会出现负数!
expr_mat[which(expr_mat<0)]=0 # 不知是否合理!expr_mat <- round(expr_mat) # read 为整数# removeBatchEffect:This function is not intended to be used
# prior to linear modelling. For linear modelling,
# it is better to include the batch factors in the linear model.# 查看去掉批次效应之后的数据
count_matrix[1:3,1:5]
expr_mat[1:3,1:5]# 接着,查看数据PCA的分布是否消除了批次效应,
# 再用去除批次效应的expr_mat做下游分析
# dds = DESeqDataSetFromMatrix(countData = expr_mat,
#                              colData = colData,
#                              design= ~ condition +type)
#
# pcaData <- plotPCA(DESeqTransform(dds), intgroup=c("condition", "type"),
#                    returnData=TRUE)
#
# # plotPCA {DESeq2}
# percentVar <- round(100 * attr(pcaData, "percentVar"))
# ggplot(pcaData, aes(PC1, PC2, color=condition, shape = type)) +
#   geom_point(size=3) +
#   # xlim(-4e+05, 5e+05) +
#   # ylim(-4e+05, 2e+05) +
#   xlab(paste0("PC1: ",percentVar[1],"% variance")) +
#   ylab(paste0("PC2: ",percentVar[2],"% variance")) +
#   geom_text(aes(label=name),vjust=2)

去除RNA-seq数据批次效应相关推荐

  1. batchelor包去除单细胞RNA-seq数据批次效应

    1. 数据集的加载 # ### batchelor ## # if (!require("BiocManager", quietly = TRUE)) # install.pack ...

  2. BatchQC包可视化分析去除组学数据批次效应

    BatchQC优势:网页方式对数据操作并进行可视化展示,从而确定是否有批次效应以及去除后的数分布等.初步分析包括数据可视化.层次聚类.主成分分析(PCA)和显著性检验等. 1. 加载包 # 安装 if ...

  3. 基因表达数据批次效应去除方法的研究进展

    基因表达数据批次效应去除方法的研究进展 李飒 , 赵毅强 摘要:在组学和大数据时代,整合分析材料相同但时间.平台.方法.技术和实验室等不同批次的表达数据集将成为常态.但是,不同批次数据集由于非生物因素 ...

  4. Brief Bioinform | 农科院深圳基因组所王怡雯组提出一种去除微生物组数据中批次效应的多元算法框架...

    PLSDA-batch:去除微生物组数据中批次效应的多元算法框架 PLSDA-batch: a multivariate framework to correct for batch effects ...

  5. MultiBaC包消除不同组学数据之间的批次效应

    MultiBaC包: 能够消除在不同批次中生成的不同组学之间的批次效应.因此,MultiBaC是一种利用现有数据集跨组学技术进行元分析的有效工具. 1. 包和演示数据集的加载 # if (!requi ...

  6. 高通量数据中批次效应的鉴定和处理(六)- 直接校正表达矩阵

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析  ...

  7. 高通量数据中批次效应的鉴定和处理(五)- 预测并校正可能存在的混杂因素...

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析  ...

  8. 高通量数据中批次效应的鉴定和处理(三)- 如何设计尽量避免批次影响

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析  ...

  9. 高通量数据中批次效应的鉴定和处理(一)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析  ...

最新文章

  1. 五年级上册计算机课如何拉表格,川教版小学信息技术五年级上册第八课 调整表格...
  2. 计算机组成原理与系统结构---内存编址方法
  3. svn教程----TortoiseSVN客户端
  4. 与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]
  5. springBoot中启用事务管理
  6. jquery checked 操作多选
  7. 如何在Go中使用切片容量和长度
  8. [公告]请不要在首页转载文章
  9. python ssh库paramiko学习
  10. Java程序开发过程
  11. Dockerfile文件:使用脚本文件生成镜像
  12. php搜索功能与jquery搜索功能,JavaScript_基于jQuery实现页面搜索功能,jQuery实现页面搜索,搜索筛选 - phpStudy...
  13. View的事件分发机制
  14. java计算机毕业设计英语课程学习网站源程序+mysql+系统+lw文档+远程调试
  15. SiamRPN代码分析:architecture
  16. 调用微信接口实现微信授权登陆主体内容【code换取openid以及session_key】
  17. java 显示百分比_Java 数字转百分比%
  18. SOP是Standard Operation Procedure三个单词中首字母的大写 ,即标准作业程序
  19. 安卓手机如何设置http代理?
  20. 如何用google translate API接口

热门文章

  1. 3D 人体姿态估计简述
  2. ICCV2021旷视研究院入选9篇paper介绍(检测+点云+图像配准等)
  3. 项目需求(20-30万)|人体三维动作重构
  4. ResNet也能用在3D模型上了,清华「计图」团队新研究已开源
  5. ‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序
  6. python 变量聚类 proc varclus_使用SAS进行简单的聚类分析讲解
  7. Gut:粪便病毒组移植减轻2型糖尿病和肥胖症模型小鼠的相关症状
  8. BBI:Eran Elinav组综述在微生物组研究中使用宏转录组
  9. EcologyEvolution|微生物功能多样性从概念到应用
  10. NBT-19年2月刊4篇35分文章聚焦宏基因组研究