我想创建一个只表达某些基因的细胞子集。这是我的编码,但它总是显示
'没有通过命名参数'
我不知道如何纠正。
Dbh.pos <- Idents(my.data, WhichCells(my.data, expression = Dbh > 0, slot = "data"))
Dbh.neg <- Idents(my.data, WhichCells(my.data, expression = Dbh = 0, slot = "data"))
您可以从计数矩阵中提取子集,下面我使用包中的 pbmc_small 数据集,我得到的单元格是 CD14+ 和 CD14-:
library(Seurat)
CD14_expression = GetAssayData(object = pbmc_small,
assay = "RNA", slot = "data")["CD14",]
该向量包含 CD14 的计数以及细胞的名称:
head(CD14_expression,30)
ATGCCAGAACGACT CATGGCCTGTGCAT GAACCTGATGAACC TGACTGGATTCTCA AGTCAGACTGCACA
0.000000 0.000000 0.000000 0.000000 0.000000
TCTGATACACGTGT TGGTATCTAAACAG GCAGCTCTGTTTCT GATATAACACGCAT AATGTTGACAGTCA
0.000000 0.000000 0.000000 0.000000 0.000000
AGGTCATGAGTGTC AGAGATGATCTCGC GGGTAACTCTAGTG CATGAGACACGGGA TACGCCACTCCGAA
0.000000 0.000000 0.000000 0.000000 0.000000
CTAAACCTGTGCAT GTAAGCACTCATTC TTGGTACTGAATCC CATCATACGGAGCA TACATCACGCTAAC
0.000000 0.000000 0.000000 0.000000 0.000000
TTACCATGAATCGC ATAGGAGAAACAGA GCGCACGACTTTAC ACTCGCACGAAAGT ATTACCTGCCTTAT
3.542611 3.917231 4.552789 5.159975 3.117873
CCCAACTGCAATCG AAATTCGAATCACG CCATCCGATTCGCC TCCACTCTGAGCTT CATCAGGATGCACA
0.000000 3.452557 3.820847 4.432036 0.000000
可以使用以下方法获取 ID which
:
pos_ids = names(which(CD14_expression>0))
neg_ids = names(which(CD14_expression==0))
数据的子集可以通过以下方式完成:
pos_cells = subset(pbmc_small,cells=pos_ids)
neg_cells = subset(pbmc_small,cells=neg_ids)
有点愚蠢,但我想这是检查它是否有效的一种方法:
FeaturePlot(pos_cells,"CD14")
FeaturePlot(neg_cells,"CD14")
我正在使用此代码将信息直接添加到 meta.data 上。例如,这里的GEX = pbmc_small。使用与@StupidWolf 相同的逻辑,我正在获取基因表达,然后制作一个包含两列的数据框,并将此信息直接添加到 Seurat 对象上。
GENE="Cd8a"
EXPR = GetAssayData(object=GEX,assay="RNA",slot="data")[GENE,]
EXPR_df=data.frame( positive= EXPR > 0, negative = EXPR == 0)
names(GEX)<-paste0( c("positive_","negative_"),GENE)
GEX <- AddMetaData(GEX,metadata=EXPR_df)
这种方法允许然后很好地进行子集化,具有更大的灵活性。
GEX_subset <- subset(GEX, annot == "T cell" & negative_Cd8a)