如何从 slotname @data 中的 seuratobject 中过滤基因?
How to filter genes from seuratobject in slotname @data?
我正在使用名为 "Seurat" 的 R 包进行单细胞 RNA-Seq 分析,我正试图从插槽名称 [=24= 中删除 seuratobject (s4 class) 中的几个基因].此对象中还有多个槽,用于存储与槽 'data' 关联的信息。
插槽 'data' 的行中有基因名称,列中有细胞 ID,基因的表达值对应于矩阵中的每个细胞。
我想根据唯一的基因名称删除整行,但将结果保留在对象中。
示例:
Cell1 Cell2 Cell3
GeneA2 5 9 2
GeneA 3 1 0
GeneA1 2 1 3
我想删除矩阵中的 GeneA 行。
我尝试了以下但出现错误:-
object<-SubsetRow(object@data, "GeneA", invert = TRUE)
和
GeneA<-grep(pattern = "^GeneA$", x = rownames(x = object@data), value = TRUE)
object@data<- object@data[!GeneA,]
让我们假设您正在使用类似于 os 随 Seurat 包加载的 pbmc_small 数据对象的东西。查看 ?SubsetRow
帮助页面上的示例:
# Installing the package:Seurat does install quite a few additonal packages
library(Seurat)
cd_genes <- SubsetRow(data = pbmc_small@raw.data, code = 'CD')
str(cd_genes)
#=================
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots
..@ i : int [1:209] 0 5 6 9 5 8 9 10 15 5 ...
..@ j : int [1:209] 0 0 0 0 1 1 1 1 1 2 ...
..@ Dim : int [1:2] 16 80
..@ Dimnames:List of 2
.. ..$ : chr [1:16] "CD79B" "CD79A" "CD19" "CD180" ...
.. ..$ : chr [1:80] "ATGCCAGAACGACT" "CATGGCCTGTGCAT" "GAACCTGATGAACC" "TGACTGGATTCTCA" ...
..@ x : num [1:209] 1 4 1 2 4 2 2 1 1 4 ...
..@ factors : list()
#===========
rownames(x = cd_genes@data)
Error in rownames(x = cd_genes@data) :
no slot of name "data" for this object of class "dgTMatrix"
所以那个对象中没有@data槽
而是在 cd_genes:
上使用行名
rownames(x = cd_genes)
[1] "CD79B" "CD79A" "CD19" "CD180" "CD200" "CD3D" "CD2" "CCDC104" "CD3E"
[10] "CD7" "CD8A" "CD14" "CD1C" "CD68" "CD9" "CD247"
因此,这将从该对象中删除名称 "CD200":
> object<-SubsetRow(pbmc_small@raw.data, code="^CD200$", invert = TRUE)
> str(object)
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots
..@ i : int [1:4453] 1 5 8 11 22 29 32 33 35 37 ...
..@ j : int [1:4453] 0 0 0 0 0 0 0 0 0 0 ...
..@ Dim : int [1:2] 229 80
..@ Dimnames:List of 2
.. ..$ : chr [1:229] "MS4A1" "CD79B" "CD79A" "HLA-DRA" ...
.. ..$ : chr [1:80] "ATGCCAGAACGACT" "CATGGCCTGTGCAT" "GAACCTGATGAACC" "TGACTGGATTCTCA" ...
..@ x : num [1:4453] 1 1 3 1 1 4 1 5 1 1 ...
..@ factors : list()
> "CD200" %in% rownames(object)
[1] FALSE
> "CD200" %in% rownames(pbmc_small@raw.data)
[1] TRUE
Seurat
-objects 中有一个名为 data
-named 的插槽,但是一旦您提取了它,该对象中就不再有 data
-slot:
slotNames(pbmc_small)
[1] "raw.data" "data" "scale.data" "var.genes" "is.expr" "ident"
[7] "meta.data" "project.name" "dr" "assay" "hvg.info" "imputed"
[13] "cell.names" "cluster.tree" "snn" "calc.params" "kmeans" "spatial"
[19] "misc" "version"
slotNames(pbmc_small@data)
[1] "i" "p" "Dim" "Dimnames" "x" "factors"
根据评论,问题的沟通似乎不完整。如果问题是如何修改现有的插槽值,那么只需使用 @<-
,如下所示:
pbmc_small2 <- pbmc_small
pbmc_small2@data <- SubsetRow(data = pbmc_small@data, code = 'CD')
不过,我不确定它是否安全。 @data
插槽的尺寸现在与 @raw.data
插槽的尺寸不同,其他功能可能不匹配,尽管我对该结构的了解还不够确定。使用 S4 对象的安全方法是依赖包作者提供的函数,而不是使用插槽等低级内容。显然,他们希望您能够从稀疏矩阵中提取子集,但他们是否希望您将它们重新分配给槽位并不清楚。
试试下面的命令?
keep= c(!rownames(object) %in% c("GeneA"))
object <- subset(x = object,features =c(1:(dim(object)[1]))[keep])
我正在使用名为 "Seurat" 的 R 包进行单细胞 RNA-Seq 分析,我正试图从插槽名称 [=24= 中删除 seuratobject (s4 class) 中的几个基因].此对象中还有多个槽,用于存储与槽 'data' 关联的信息。 插槽 'data' 的行中有基因名称,列中有细胞 ID,基因的表达值对应于矩阵中的每个细胞。 我想根据唯一的基因名称删除整行,但将结果保留在对象中。
示例:
Cell1 Cell2 Cell3
GeneA2 5 9 2
GeneA 3 1 0
GeneA1 2 1 3
我想删除矩阵中的 GeneA 行。
我尝试了以下但出现错误:-
object<-SubsetRow(object@data, "GeneA", invert = TRUE)
和
GeneA<-grep(pattern = "^GeneA$", x = rownames(x = object@data), value = TRUE)
object@data<- object@data[!GeneA,]
让我们假设您正在使用类似于 os 随 Seurat 包加载的 pbmc_small 数据对象的东西。查看 ?SubsetRow
帮助页面上的示例:
# Installing the package:Seurat does install quite a few additonal packages
library(Seurat)
cd_genes <- SubsetRow(data = pbmc_small@raw.data, code = 'CD')
str(cd_genes)
#=================
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots
..@ i : int [1:209] 0 5 6 9 5 8 9 10 15 5 ...
..@ j : int [1:209] 0 0 0 0 1 1 1 1 1 2 ...
..@ Dim : int [1:2] 16 80
..@ Dimnames:List of 2
.. ..$ : chr [1:16] "CD79B" "CD79A" "CD19" "CD180" ...
.. ..$ : chr [1:80] "ATGCCAGAACGACT" "CATGGCCTGTGCAT" "GAACCTGATGAACC" "TGACTGGATTCTCA" ...
..@ x : num [1:209] 1 4 1 2 4 2 2 1 1 4 ...
..@ factors : list()
#===========
rownames(x = cd_genes@data)
Error in rownames(x = cd_genes@data) : no slot of name "data" for this object of class "dgTMatrix"
所以那个对象中没有@data槽
而是在 cd_genes:
上使用行名rownames(x = cd_genes)
[1] "CD79B" "CD79A" "CD19" "CD180" "CD200" "CD3D" "CD2" "CCDC104" "CD3E"
[10] "CD7" "CD8A" "CD14" "CD1C" "CD68" "CD9" "CD247"
因此,这将从该对象中删除名称 "CD200":
> object<-SubsetRow(pbmc_small@raw.data, code="^CD200$", invert = TRUE)
> str(object)
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots
..@ i : int [1:4453] 1 5 8 11 22 29 32 33 35 37 ...
..@ j : int [1:4453] 0 0 0 0 0 0 0 0 0 0 ...
..@ Dim : int [1:2] 229 80
..@ Dimnames:List of 2
.. ..$ : chr [1:229] "MS4A1" "CD79B" "CD79A" "HLA-DRA" ...
.. ..$ : chr [1:80] "ATGCCAGAACGACT" "CATGGCCTGTGCAT" "GAACCTGATGAACC" "TGACTGGATTCTCA" ...
..@ x : num [1:4453] 1 1 3 1 1 4 1 5 1 1 ...
..@ factors : list()
> "CD200" %in% rownames(object)
[1] FALSE
> "CD200" %in% rownames(pbmc_small@raw.data)
[1] TRUE
Seurat
-objects 中有一个名为 data
-named 的插槽,但是一旦您提取了它,该对象中就不再有 data
-slot:
slotNames(pbmc_small)
[1] "raw.data" "data" "scale.data" "var.genes" "is.expr" "ident"
[7] "meta.data" "project.name" "dr" "assay" "hvg.info" "imputed"
[13] "cell.names" "cluster.tree" "snn" "calc.params" "kmeans" "spatial"
[19] "misc" "version"
slotNames(pbmc_small@data)
[1] "i" "p" "Dim" "Dimnames" "x" "factors"
根据评论,问题的沟通似乎不完整。如果问题是如何修改现有的插槽值,那么只需使用 @<-
,如下所示:
pbmc_small2 <- pbmc_small
pbmc_small2@data <- SubsetRow(data = pbmc_small@data, code = 'CD')
不过,我不确定它是否安全。 @data
插槽的尺寸现在与 @raw.data
插槽的尺寸不同,其他功能可能不匹配,尽管我对该结构的了解还不够确定。使用 S4 对象的安全方法是依赖包作者提供的函数,而不是使用插槽等低级内容。显然,他们希望您能够从稀疏矩阵中提取子集,但他们是否希望您将它们重新分配给槽位并不清楚。
试试下面的命令?
keep= c(!rownames(object) %in% c("GeneA"))
object <- subset(x = object,features =c(1:(dim(object)[1]))[keep])