如何火眼金睛鑒定那些單細(xì)胞轉(zhuǎn)錄組中的混雜因素
單細(xì)胞系列教程
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(二)- 實(shí)驗(yàn)平臺
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(三)- 原始數(shù)據(jù)質(zhì)控
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(五)- STAR, Kallisto定量
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(六)- 構(gòu)建表達(dá)矩陣,UMI介紹
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(七)- 導(dǎo)入10X和SmartSeq2數(shù)據(jù)Tabula Muris
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(八)- Scater包輸入導(dǎo)入和存儲
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(九)- Scater包單細(xì)胞過濾
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(十一)- Scater單細(xì)胞表達(dá)譜PCA可視化
Hemberg-lab單細(xì)胞轉(zhuǎn)錄組數(shù)據(jù)分析(十二)- Scater單細(xì)胞表達(dá)譜tSNE可視化
識別基因表達(dá)檢測影響因素
混雜因素簡介
scRNA-seq數(shù)據(jù)會受到一些人為因素、操作偏差、批次等因素的影響。scRNA-seq分析的一個挑戰(zhàn)是沒有辦法通過評估技術(shù)重復(fù)來區(qū)分生物和技術(shù)各自帶來的變化有多大比例。前面的分析,我們考慮了批次效應(yīng),下面我們看下還有沒有其它實(shí)驗(yàn)因素會影響單細(xì)胞基因表達(dá)檢測并移除這些因素。scater包提供了一些評估實(shí)驗(yàn)因素和生物因素對表達(dá)數(shù)據(jù)影響的檢測方法。我們用Blischak數(shù)據(jù)做例子展示其應(yīng)用。
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數(shù)據(jù)集包含質(zhì)控過濾后的細(xì)胞和基因。下一步是探索技術(shù)因素導(dǎo)致的表達(dá)變化以應(yīng)用于下游的基因表達(dá)標(biāo)準(zhǔn)化分析中。
與主成分的相關(guān)性
質(zhì)控后數(shù)據(jù)集的PCA展示
# 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通過構(gòu)建線性模型判斷主成分與各個影響變量的相關(guān)性,從而判斷哪些實(shí)驗(yàn)或質(zhì)控變量導(dǎo)致細(xì)胞在主成分上的分布。
檢測到的基因數(shù)與主成分的關(guān)系
# 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)
確實(shí),PC1幾乎完全可以被檢測到的基因數(shù)解釋。從上面PCA圖的結(jié)果也可以看出,延PC1從左至右,細(xì)胞檢測到的基因數(shù)整體逐步降低的趨勢。這也是scRNA-seq一個已經(jīng)知道的現(xiàn)象,具體見http://biorxiv.org/content/early/2015/12/27/025528.
Explanatory variables (解釋變量)
scater也可以把質(zhì)控變量與所有基因分別進(jìn)行線性模型擬合獲取其邊際 (marginal) ,繪制其概率密度分布圖譜。
# 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"
# )
# )
結(jié)果顯示檢測到的基因數(shù)(total_features_by_counts)和測序深度 (total_counts)對基因表達(dá)的貢獻(xiàn)度很大。因此在基因表達(dá)標(biāo)準(zhǔn)化過程中需要考慮移除這些因素的影響或整合到下游的統(tǒng)計(jì)分析模型中。ERCC的表達(dá)也是重要的解釋變量,另外一個顯著的特征是batch比individual更多解釋基因表達(dá)的差異。
其他影響因素
除了考慮校正批次影響 (依賴于實(shí)驗(yàn)記錄的外部信息),還有其他技術(shù)因子需要考慮如何進(jìn)行抵消。一個常用方法是scLVM (https://github.com/PMBio/scLVM) 是允許識別和移除細(xì)胞周期或程序性死亡引入的影響。(Seurat+Scran也可以)
另外,不同的實(shí)驗(yàn)方案對轉(zhuǎn)錄本的覆蓋偏好也不同,這一偏好依賴于A/T的平均含量或短的轉(zhuǎn)錄本的捕獲能力。理想情況下,我們需要消除這些所有的差異和偏差。
往期精品(點(diǎn)擊圖片直達(dá)文字對應(yīng)教程)
后臺回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集




























