最近在研究seurat v5的数据处理。测试的时候发现使用seurat v5包对大数据进行sketch-based抽样分析之后,后续使用DotPLit进行绘图的时候会报错:
DotPlot(object = obj, features = "Cd79a")
dev.off()

通过查看源码发现是在这一步出现了问题:

具体出现的问题是由于抽平之后有很多cells的cluster名称由于没有参与聚类而变成了<NA>(可以通过Idents(obj)
查看)。

所以导致后面提取数据的时候出现了错乱,我们需要将NA变成字符串的“NA”。具体的做法如下:
idents <- Idents(object) # 获取原始的idents,是按照0、1、2类似这样的
Idents(combined) <- as.factor(ifelse(is.na(Idents(combined)), "NA", as.character(Idents(combined)))) # 将<NA> => NA 字符串,这时候可以发现顺序乱了
Idents(combined) <- ordered(Idents(combined) , levels = levels(idents)) # 重新按照原来的顺序排序
DotPlot(object = combined, features = "Cd79a", idents=idents) # 需要在这里增加指定idents的参数
dev.off()
最后大功告成,可以顺利出图了。

网友评论