前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何火眼金睛鉴定那些单细胞转录组中的混杂因素

如何火眼金睛鉴定那些单细胞转录组中的混杂因素

作者头像
生信宝典
发布2019-05-09 10:43:25
9050
发布2019-05-09 10:43:25
举报
文章被收录于专栏:生信宝典

识别基因表达检测影响因素

混杂因素简介

scRNA-seq数据会受到一些人为因素、操作偏差、批次等因素的影响。scRNA-seq分析的一个挑战是没有办法通过评估技术重复来区分生物和技术各自带来的变化有多大比例。前面的分析,我们考虑了批次效应,下面我们看下还有没有其它实验因素会影响单细胞基因表达检测并移除这些因素。scater包提供了一些评估实验因素和生物因素对表达数据影响的检测方法。我们用Blischak数据做例子展示其应用。

代码语言:javascript
复制
library(scater, quietly = TRUE)
options(stringsAsFactors = FALSE)
# umi <- readRDS("tung/umi.rds")
# umi.qc <- umi[rowData(umi)$use, colData(umi)$use]
# endog_genes <- !rowData(umi.qc)$is_feature_control

umi_endog_genes <- !rowData(umi)$is_feature_control
umi_endog <- umi[umi_endog_genes,]
umi.qc <- umi[rowData(umi)$use, colData(umi)$use]
umi_qc_endog_genes <- !rowData(umi.qc)$is_feature_control
umi.qc_endog <- umi.qc[umi_qc_endog_genes,]

umi.qc数据集包含质控过滤后的细胞和基因。下一步是探索技术因素导致的表达变化以应用于下游的基因表达标准化分析中。

与主成分的相关性

质控后数据集的PCA展示

代码语言:javascript
复制
# plotPCA(
#     umi.qc[endog_genes, ],
#     exprs_values = "logcounts_raw",
#     colour_by = "batch",
#     size_by = "total_features"
# )
umi.qc_endog <- runPCA(umi.qc_endog, ncomponents=100, exprs_values = "logcounts_raw")
scater::plotPCA(
    umi.qc_endog,
    by_exprs_values = "logcounts_raw",
    colour_by = "batch",
    size_by = "total_features_by_counts",
    shape_by = "individual"
)

scater通过构建线性模型判断主成分与各个影响变量的相关性,从而判断哪些实验或质控变量导致细胞在主成分上的分布。

检测到的基因数与主成分的关系
代码语言:javascript
复制
# plotQC(
#     umi.qc[umi_qc_endog_genes, ],
#     type = "find-pcs",
#     exprs_values = "logcounts_raw",
#     variable = "total_features"
# )
umi.qc_endog <- runPCA(umi.qc_endog, ncomponents=500, exprs_values = "logcounts_raw")
explanatoryPCs <- getExplanatoryPCs(umi.qc_endog, variables = "total_features_by_counts")
#explanatoryPCs <- getExplanatoryPCs(umi.qc_endog)
plotExplanatoryPCs(explanatoryPCs, nvars_to_plot = 5, npcs_to_plot = 10)

确实,PC1几乎完全可以被检测到的基因数解释。从上面PCA图的结果也可以看出,延PC1从左至右,细胞检测到的基因数整体逐步降低的趋势。这也是scRNA-seq一个已经知道的现象,具体见http://biorxiv.org/content/early/2015/12/27/025528.

Explanatory variables (解释变量)

scater也可以把质控变量与所有基因分别进行线性模型拟合获取其边际 (marginal) ,绘制其概率密度分布图谱。

代码语言:javascript
复制
# umi.qc_endog <- normalize(umi.qc_endog)
ExplanatoryVariable <- getVarianceExplained(umi.qc_endog, exprs_values = "logcounts_raw",
                                variables=c("total_features_by_counts",
                                            "total_counts",
                                            "batch",
                                            "individual",
                                            "pct_counts_MT",
                                            "pct_counts_ERCC"))
plotExplanatoryVariables(ExplanatoryVariable)

# plotQC(
#     umi.qc[endog_genes, ],
#     type = "expl",
#     exprs_values = "logcounts_raw",
#     variables = c(
#         "total_features",
#         "total_counts",
#         "batch",
#         "individual",
#         "pct_counts_ERCC",
#         "pct_counts_MT"
#     )
# )

结果显示检测到的基因数(total_features_by_counts)和测序深度 (total_counts)对基因表达的贡献度很大。因此在基因表达标准化过程中需要考虑移除这些因素的影响或整合到下游的统计分析模型中。ERCC的表达也是重要的解释变量,另外一个显著的特征是batchindividual更多解释基因表达的差异。

其他影响因素

除了考虑校正批次影响 (依赖于实验记录的外部信息),还有其他技术因子需要考虑如何进行抵消。一个常用方法是scLVM (https://github.com/PMBio/scLVM) 是允许识别和移除细胞周期程序性死亡引入的影响。(Seurat+Scran也可以)

另外,不同的实验方案对转录本的覆盖偏好也不同,这一偏好依赖于A/T的平均含量或短的转录本的捕获能力。理想情况下,我们需要消除这些所有的差异和偏差。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信宝典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 识别基因表达检测影响因素
  • 混杂因素简介
  • 与主成分的相关性
    • 检测到的基因数与主成分的关系
    • Explanatory variables (解释变量)
    • 其他影响因素
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档