我正在使用名为" 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的例子,那将非常感激。
答案 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中的项完全对应),列是其他元数据项。