群里有小伙伴提出来了一个非常“个性化”的单细胞转录组数据分析需求:
非常“个性化”
其实几年前我也写过这样的教程,就是哪怕是同一个单细胞数据里面的不同细胞亚群质量控制参数也可以不一样,当时解读的单细胞文章是标题是:《Single-cell transcriptomics reveal the heterogeneity and dynamic of cancer stem-like cells during breast tumor progression》,因为作者发现上皮细胞比免疫细胞有更多的检测到的基因,细胞文库大小 :所以作者给出来的过滤参数不一样:
不确定是不是这样教程让大家误解了,以至于后面的数据分析大家都想模仿一下,必须给不同单细胞亚群不同的质量控制和过滤参数。
当然了,我并不是上面的学员提出来的生信分析里面的思路是完全错误,我仅仅是表面这样的需求其实是有问题的。不过不影响我们代码层面实现它,首先使用如下所示的代码载入测试数据:
# install.packages('devtools')
# devtools::install_github('satijalab/seurat-data')
library(SeuratData) #加载seurat数据集
library(Seurat)
getOption('timeout')
options(timeout=10000)
# InstallData("pbmc3k")
data("pbmc3k")
sce <- pbmc3k.final
colnames(sce@meta.data)
table(sce$seurat_annotations)
然后,针对前面的测序数据,看看不同单细胞亚群的线粒体含量,文库大小的分布情况:
## Identification of mithocondrial genes
sce[["percent.mt"]] <- PercentageFeatureSet(sce, pattern = "^MT-")
table(sce$seurat_annotations,sce$percent.mt > 0.01)
table(sce$seurat_annotations,sce$nFeature_RNA < 500 )
# ## Filtering cells following standard QC criteria.
# pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 &
# percent.mt < 5)
如下所示,很明显是可以看得到 Naive CD4 T 和 CD14+ Mono 以及B细胞是有很多细胞的数量的文库是偏小的(参数:nFeature_RNA < 500 ):
FALSE TRUE
Naive CD4 T 626 71
Memory CD4 T 482 1
CD14+ Mono 421 59
B 310 34
CD8 T 262 9
FCGR3A+ Mono 160 2
NK 154 1
DC 32 0
Platelet 4 10
这个时候学员其实是想针对性的过滤,比如仅仅是去除Naive CD4 T 里面的文库是偏小的(参数:nFeature_RNA < 500 )细胞,但是需要放过 CD14+ Mono 以及B细胞里面的。
其实过滤细胞并不需要使用 subset 函数,因为对象本质上是可以通过取子集的方式,就是按照行或者说按照列过滤即可。
kp1=sce$nFeature_RNA < 500
kp2=sce$seurat_annotations == 'Naive CD4 T'
table(kp1 & kp2)
sce_f=sce[,kp1 & kp2]
DimPlot(sce)+DimPlot(sce_f)
可能是 我的可视化技巧不够,或者说是举例的这个数据集的特性,没怎么看到过滤前后的效果对比:
没怎么看到过滤前后的效果对比
也就是说,上面的代码就实现了仅仅是针对去除Naive CD4 T 里面的文库是偏小的(参数:nFeature_RNA < 500 )细胞,去除了71个细胞,而不会影响其它单细胞亚群的文库偏小的细胞,也没有影响前面的降维聚类分群后的全部的PCA等信息。
但是,这个思路是否值得采取,是有待商榷的哦。另外,号召大家参与讨论一个问题,生信分析里面的思路错误和代码错误哪个更可怕?
在单细胞转录组分析中,双细胞(Doublets)是指在同一个细胞单元中同时捕获到两个不同的细胞的情况。双细胞可能会对单细胞转录组数据的解释和分析造成困扰,因此在分析过程中通常大家看到的教程都会高速大家去除它们 :
为了去除双细胞,研究人员可以使用一些专门的算法和工具,这些算法通常基于基因表达的特征,通过计算细胞之间的相似性来识别双细胞。一些方法还可以通过模拟或模型来预测双细胞的形成概率。去除双细胞的过程可以在分析流程的早期进行,以确保后续的分析结果更准确可靠。
目前主流的两个工具是:
1. DoubletFinder:
2. Scrublet:
很多人会首先把多个样品合并后,作为一个整体去走上面的两个软件,其实思路就是错误的。另外,很多人的单细胞转录组数据其实没有必要去除双细胞,摸索这个流程徒增烦劳。