基于基因表达筛选SCE中CD4+T细胞失败的解决方法
解决CD4+T细胞筛选后tSNE空白的问题
先排查代码基础错误
- 你代码里混用了
sce和sce2两个对象,必须确保索引的是同一个SCE对象,修正后示例:sce.cd4 <- sce2[, which(assay(sce2)['Cd4', ] > 2000)] - 核对
Cd4基因名是否准确:不同参考基因组的注释中,基因名可能是大写的CD4,先运行rownames(sce2)查看所有基因名,确认目标基因的正确写法。
调整基因表达阈值的筛选逻辑
直接设置2000的count阈值过于严格,多数CD4+T细胞的CD4表达量很难达到这个数值(尤其是assay(sce2)调用的是原始counts时)。可以按以下步骤调整:
- 先查看CD4基因在全细胞中的表达分布:
根据分布调整阈值,比如改成**大于0(检测到表达)**或更低的数值(如50、100);如果用的是归一化后的表达矩阵(如log转换后),阈值对应改成1或2。hist(assay(sce2)['CD4', ], breaks = 50)
更可靠的方法:基于细胞类型注释筛选
按照OSCA的标准流程,你应该已经完成了细胞聚类与类型注释(比如用SingleR或手动标记基因注释),直接用注释结果筛选更准确:
- 先确认细胞类型注释存储在
colData中,查看注释列名:
假设注释列名为colnames(colData(sce2))cell_type,其中包含"CD4+ T cell"这类标签。 - 直接筛选目标细胞:
若注释包含多种CD4亚群,可使用模糊匹配:sce.cd4 <- sce2[, colData(sce2)$cell_type == "CD4+ T cell"]sce.cd4 <- sce2[, grepl("CD4", colData(sce2)$cell_type)]
验证筛选结果
筛选后先检查是否有细胞保留:
ncol(sce.cd4)
若结果大于0,再绘制tSNE图;若仍为0,说明筛选条件过严或注释存在错误,需重新调整。
内容的提问来源于stack exchange,提问作者Megan
相关产品推荐
相关产品推荐

