将元数据添加到 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.
我正在使用名为“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.