将元数据添加到Seurat对象

时间:2017-02-16 16:37:44

标签: r bioinformatics

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

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

首先,我从侦探对象

中提取了单元格名称
> Cells <- WhichCells(sleuth_object)

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

> MorphCellTypes = c(1,2,3)

然后我将单元格和MorphCellTypes合并为data.frame

> MorphCellTypesDF = data.frame(Cells, MorphCellTypes)

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

> 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”

所以我认为我要么将元数据添加到我的侦探对象中的错误位置,要么我在某种程度上弄乱了col.name。无论哪种方式,我似乎错误地使用AddMetaData或TSNEPlot()函数。如果您有任何机会发现错误或者可以指出我如何使用AddMetaData的例子,那将非常感激。

2 个答案:

答案 0 :(得分:4)

经过多次试验和错误后,我找到了一种成功添加实验元数据列的方法。诀窍是在添加数据时保持Seurat对象的正确格式。我这样做是通过复制pbmc@data.info表然后通过向其添加一列来修改它。然后将修改后的表格导回Seurat。以下代码将一列名为Gene_ID的随机数添加到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)

答案 1 :(得分:0)

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

从AddMetaData()的文档中:

  

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