您的不同对象会有不同的 PCA。合并 seurat 对象时,会复制 PCA 分数、聚类和 tsne 表示,因此无需重新计算。
一种选择是再次规范化数据,运行 PCA 等并重新集群,使用一个简单的示例:
library(Seurat)
library(patchwork)
process = function(x,id){
x = RenameCells(x,paste0(id,"_",colnames(x)))
x = SCTransform(x)
x = RunPCA(x,npcs =10)
x = RunTSNE(x,dims=1:10,perplexity=10)
x = FindNeighbors(x,dims=1:10)
x = FindClusters(x,algorithm=3,resolution=1)
return(x)
}
i1 = sample(ncol(pbmc_small),60)
i2 = sample(ncol(pbmc_small),60)
object1 = process(pbmc_small[,i1],"A")
object2 = process(pbmc_small[,i2],"B")
假设我们从两个对象合并 cluster1 :
FeaturePlot(object1,"CD14",label=TRUE,label.size=5) + FeaturePlot(object2,"CD14",label=TRUE,label.size=5)
您需要重新运行
cellsA<-subset(object1, ident=1)
cellsB<-subset(object2, ident=1)
clusters <-merge(cellsA, y=cellsB)
clusters = SCTransform(clusters)
clusters = SCTransform(clusters)
clusters = RunPCA(clusters)
[....]
如果在此之后,您仍然看到根据数据进行分离,这可能是由于您的数据的批处理效应,您需要整合 seurat 对象