最近在研究seurat v5的數(shù)據(jù)處理辱志。測試的時候發(fā)現(xiàn)使用seurat v5包對大數(shù)據(jù)進行sketch-based抽樣分析之后到涂,后續(xù)使用DotPLit進行繪圖的時候會報錯:
DotPlot(object = obj, features = "Cd79a")
dev.off()
通過查看源碼發(fā)現(xiàn)是在這一步出現(xiàn)了問題:
具體出現(xiàn)的問題是由于抽平之后有很多cells的cluster名稱由于沒有參與聚類而變成了<NA>(可以通過Idents(obj)
查看)勇哗。
所以導(dǎo)致后面提取數(shù)據(jù)的時候出現(xiàn)了錯亂伶椿,我們需要將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 字符串,這時候可以發(fā)現(xiàn)順序亂了
Idents(combined) <- ordered(Idents(combined) , levels = levels(idents)) # 重新按照原來的順序排序
DotPlot(object = combined, features = "Cd79a", idents=idents) # 需要在這里增加指定idents的參數(shù)
dev.off()
最后大功告成归斤,可以順利出圖了痊夭。