单细胞转录组

OSCA单细胞数据分析笔记-7、Feature selectio

2021-04-28  本文已影响0人  小贝学生信

对应原版教程第8章http://bioconductor.org/books/release/OSCA/overview.html
细胞的测序结果一般都有1万多的基因。从表达水平来看,其中大部分的信息可能都是较为“普通”的。如何从中抽取出能够最大程度细胞间异质性的基因是本小节的主要目的。

笔记要点

1、背景知识
1.1 为什么要挑选特定的基因
1.2 怎么挑HVG
2、基因表达的方差分解
2.1 基于log-counts的mean-variance拟合
2.2 基于normalization counts的CV2变异系数
3、如何根据计算指标筛选高变基因
3.1 基于Top X排名
3.2 3.2 其它方法
4、确定高变基因之后sce对象的取舍
4.1 仅保留高变基因信息(不建议)
4.2 标记高变基因,降维设置subset.row=参数(建议)
5、补充:关于“技术误差”的进一步分解


1、背景知识

1.1 为什么要挑选特定的基因

1.2 怎么挑HVG

2、基因表达的方差分解

sce.pbmc
#class: SingleCellExperiment 
#dim: 33694 3985 
#assays(2): counts logcounts

sce.416b
#class: SingleCellExperiment 
#dim: 46604 185 
#assays(2): counts logcounts

2.1 基于log-counts的mean-variance拟合

library(scran)
dec.pbmc <- modelGeneVar(sce.pbmc)
fit.pbmc <- metadata(dec.pbmc)
plot(fit.pbmc$mean, fit.pbmc$var, xlab="Mean of log-expression",
     ylab="Variance of log-expression")
curve(fit.pbmc$trend(x), col="dodgerblue", add=TRUE, lwd=2)
dec.pbmc[order(dec.pbmc$bio, decreasing=TRUE),] 
image.png

2.2 基于normalization counts的CV2变异系数

dec.cv2.pbmc <- modelGeneCV2(sce.pbmc)
fit.cv2.pbmc <- metadata(dec.cv2.pbmc)
plot(fit.cv2.pbmc$mean, fit.cv2.pbmc$cv2, log="xy")
curve(fit.cv2.pbmc$trend(x), col="dodgerblue", add=TRUE, lwd=2)
dec.cv2.pbmc[order(dec.cv2.pbmc$ratio, decreasing=TRUE),]

关于选择2.1还是2.2计算基因的筛选指标,如教程所说,二者都能很好的捕获基因的生物水平造成的差异性。但后面计算细胞间的距离是基于log-counts的方法,因此使用方法2.1可能会更具有统一性。

3、如何根据计算指标筛选高变基因

3.1 基于Top X排名

#基于log-count的计算指标
dec.pbmc <- modelGeneVar(sce.pbmc)
hvg.pbmc.var <- getTopHVGs(dec.pbmc, n=1000)
#getTopHVGs(dec.pbmc, prop=0.1)
str(hvg.pbmc.var)
#chr [1:1000] "LYZ" "S100A9" "S100A8" "HLA-DRA" "CD74" "CST3" "TYROBP" "IGKC" "CCL5" "HLA-DRB1" ...

#基于log-count的计算指标
dec.pbmc <- modelGeneVar(sce.pbmc, )
hvg.pbmc.var <- getTopHVGs(dec.pbmc, n=1000)
str(hvg.pbmc.var)
#chr [1:1000] "PPBP" "PRTFDC1" "HIST1H2AC" "FAM81B" "PF4" "GNG11" "KIAA1211" "HIST2H2BE" ...

3.2 其它方法

根据教程,再简单列举几种其它方法

3.2.1 基于FDR显著性
getTopHVGs(dec.pbmc, fdr.threshold=0.05)
3.2.2 取全部合格的高变基因
getTopHVGs(dec.pbmc, var.threshold=0)

之后教程还举出一种方法是预先定义一组基因集作为作为高变基因。虽然与高变基因最初定义不符,但在某些情况下还是挺有意思的,就不展开了(其实没怎么看明白),可参看原教程。

4、确定高变基因之后sce对象的取舍

确定高变基因后,后续降维操作主要根据能够表示细胞间生物水平差异的高变基因展开

4.1 仅保留高变基因信息(不建议)

dec.pbmc <- modelGeneVar(sce.pbmc)
chosen <- getTopHVGs(dec.pbmc, prop=0.1)
str(chosen)
sce.pbmc.hvg <- sce.pbmc[chosen,]
dim(sce.pbmc.hvg)
#[1] 1274 3985

4.2 标记高变基因,降维设置subset.row=参数(建议)

# Performing PCA only on the chosen HVGs.
library(scater)
sce.pbmc <- runPCA(sce.pbmc, subset_row=chosen)
reducedDimNames(sce.pbmc)
rowSubset(sce.pbmc,"hvg")=chosen
colnames(rowData(sce.pbmc))
rowData(sce.pbmc)[,2][rowData(sce.pbmc)[,3]]

5、补充:关于“技术误差”的进一步分解

modelGeneVarWithSpikes(sce.416b, "ERCC")
modelGeneVarByPoisson(sce.pbmc)
上一篇 下一篇

猜你喜欢

热点阅读