欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[单细胞] 合并多个 seurat 数据对象

最编程 2024-06-30 17:44:13
...

在实际中,经常存在多个样本一起联合分析的情况:

比如我们既可以按照样本来源显示聚类,也可以按照类型来显示聚类结果。

所以,我们测试利用seurat如何进行多个样本的合并分析。

下载官网的2组测试数据。

pbmc4k:

https://support.10xgenomics.com/single-cell-gene-expression/datasets/2.1.0/pbmc4k

pbmc8k:

https://support.10xgenomics.com/single-cell-gene-expression/datasets/2.1.0/pbmc8k

====创建seurat对象===

library(Seurat)

pbmc4k.data <- Read10X(data.dir = "pbmc4k/filtered_gene_bc_matrices/GRCh38/")

pbmc4k <- CreateSeuratObject(counts = pbmc4k.data, project = "PBMC4K")

pbmc4k

> pbmc4k

An object of class Seurat 

33694 features across 4340 samples within 1 assay 

Active assay: RNA (33694 features, 0 variable features)

pbmc8k.data <- Read10X(data.dir = "pbmc8k/filtered_gene_bc_matrices/GRCh38/")

pbmc8k <- CreateSeuratObject(counts = pbmc8k.data, project = "PBMC8K")

pbmc8k

> pbmc8k

An object of class Seurat 

33694 features across 8381 samples within 1 assay 

Active assay: RNA (33694 features, 0 variable features)

===合并2个seurat对象====

利用merge()合并两个对象的原始计数矩阵,并创建一个新的对象。

pbmc.combined <- merge(pbmc4k, y = pbmc8k, add.cell.ids = c("4K", "8K"), project = "PBMC12K")

pbmc.combined

> pbmc.combined

An object of class Seurat 

33694 features across 12721 samples within 1 assay 

Active assay: RNA (33694 features, 0 variable features)

//从中可以看出合并了2个对象的4340和8381之后,获得12721个samples的信息。

head(colnames(pbmc.combined))

table(pbmc.combined$orig.ident)

====合并2个以上的seurat对象=====

要合并两个以上的对象,只需将多个对象的矢量传递到merge的y参数中即可:我们将使用 4K 和 8K PBMC 数据集以及pbmc3k进行合并:

pbmc.big <- merge(pbmc3k, y = c(pbmc4k, pbmc8k), add.cell.ids = c("3K", "4K", "8K"), project = "PBMC15K")

pbmc.big

统计各个样品中cell的数目:

unique(sapply(X = strsplit(colnames(pbmc.big), split = "_"), FUN = "[", 1))

table(pbmc.big$orig.ident)

===合并标准化后的数据====

pbmc4k <- NormalizeData(pbmc4k)   //标准化

pbmc8k <- NormalizeData(pbmc8k)   //标准化

pbmc.normalized <- merge(pbmc4k, y = pbmc8k, add.cell.ids = c("4K", "8K"), project = "PBMC12K",merge.data = TRUE)

GetAssayData(pbmc.combined)[1:10, 1:15]

GetAssayData(pbmc.normalized)[1:10, 1:15]

本文使用 文章同步助手 同步

推荐阅读