5

我正在使用一个名为“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 的示例,我们将不胜感激。

4

2 回答 2

8

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

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)
于 2017-02-17T18:13:35.377 回答
1

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

来自 AddMetaData() 的文档:

metadata:行名称是单元格名称的数据框(注意:这些必须与 object@cell.names 中的项目完全对应),列是附加的元数据项目。

于 2018-11-09T18:03:53.580 回答