0

我有两个通过合并样本制成的 Seurat 对象:

object1 <-merge(A, y=B, add.cell.ids=c("A","B"))
object2 <-merge(C, y=D, add.cell.ids=c("C","D"))

对于每个对象,我都进行了预处理、PCA 和聚类。现在我想合并来自 object1 的集群 1 和来自 object2 的集群 3

cluster1<-subset(object1, ident=1)
cluster3<-subset(object2, ident=1)

clusters1_3<-merge(cluster1, y=cluster3, add.cell.ids=c("1","3"))

但是,当我对 cluster1_3 对象进行聚类时,它会聚类为 A、B、C、D 初始聚类。我做错了什么?

4

1 回答 1

0

您的不同对象会有不同的 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 对象

于 2020-11-24T12:01:26.547 回答