将元数据添加到 Seurat 对象

Add Metadata to Seurat Object

我正在使用名为“Seurat”的 R 包进行单细胞 RNA-Seq 分析。我正在尝试将有关单个细胞样本的元数据信息添加到 Seurat 对象。但是下游绘图命令不起作用。我想知道是否有人知道如何检查修改后的 Seurat 对象以确认元数据已添加到正确的插槽和列中。

为了添加元数据,我使用了以下命令。

首先我从 Seurat 对象中提取了单元格名称

> Cells <- WhichCells(seurat_object)

然后我使用数字 1-3 创建了一个形态学确定的细胞类型列表,注意:该列表要长得多,但在此处缩写为前 3 个

> MorphCellTypes = c(1,2,3)

然后我将单元格和 MorphCellTypes 合并在一起作为 data.frame

> MorphCellTypesDF = data.frame(Cells, MorphCellTypes)

然后我尝试使用以下命令将此 MorphCellTypesDF 元数据添加到 seurat 对象,运行 成功

> AddMetaData(Sleuth_object, MorphCellTypesDF, col.name = MorphCellTypes

然后我尝试使用以下命令使用 TSNEPlot 将其可视化

> TSNEPlot(pbmc, do.label = TRUE, pt.size = 3, group.by = MorphCellTypes

这返回了以下错误:

“Error in DimPlot(object, reduction.use = "tsne", cells.use = cells.use,  :
  object 'MorphCellTypes' not found”

所以我认为我要么将元数据添加到我的 seurat 对象中的错误位置,要么我以某种方式弄乱了 col.name。无论哪种方式,我似乎都在错误地使用 AddMetaData 或 TSNEPlot() 函数。如果您有机会发现错误或可以向我指出如何使用 AddMetaData 的示例,我们将不胜感激。

经过反复试验,我找到了一种成功添加实验元数据列的方法。诀窍是在添加数据时保持 Seurat 对象的正确格式。我通过复制 pbmc@data.info table 然后通过向其添加一列对其进行修改来完成此操作。然后将修改后的 table 导入回 Seurat。以下代码将一列名为 Gene_ID's 的随机数添加到 pbmc@data.info 槽中的 Seurat 对象。然后它通过可视化测试添加此数据。

CellsMeta = pbmc@data.info
head(CellsMeta)

randomnumbers <- runif(2700, 0.0, 1.1)

CellsMeta["Gene_IDs"] <- randomnumbers
head(CellsMeta)

CellsMetaTrim <- subset(CellsMeta, select = c("Gene_IDs"))
head(CellsMetaTrim)

pbmc <- AddMetaData(pbmc, CellsMetaTrim)

head(pbmc@data.info)

VlnPlot(pbmc, c("nGene", "nUMI", "Gene_IDs"), nCol = 3)

您传递给 AddMetaData() 中的元数据参数的数据框必须是行名与 pbmc@meta.data 中的行名匹配的数据框。我猜你的 MorphCellTypes 对象不满足这两个要求,这就是导致错误的原因。

来自 AddMetaData() 的文档:

metadata: Data frame where the row names are cell names (note : these must correspond exactly to the items in object@cell.names), and the columns are additional metadata items.