У вас есть ошибка, потому что когда вы отображаете имена, это именованный вектор, который вы назначаете в качестве имен строк матрицы. Попробуйте это ниже:
Итак, предположим, у нас есть таблица подсчета, как показано ниже:
library(SingleCellExperiment)
library(Seurat)
library(org.Ss.eg.db)
set.seed(100)
GENES = sample(keys(org.Ss.eg.db,keytype="SYMBOL"),1000)
counts = matrix(rpois(1000*20,100),ncol=20,nrow=1000)
rownames(counts) = GENES
colnames(counts) = paste0("cell",1:20)
head(counts)
Мы преобразуем имена строк в id entrez:
ENTREZIDS = mapIds(org.Hs.eg.db,rownames(counts),keytype = "SYMBOL",column = "ENTREZID")
ENTREZIDS = as.character(ENTREZIDS)
table(is.na(ENTREZIDS))
FALSE TRUE
527 473
Иногда у вас есть гены не в энтрезе и это возвращает NA. Таким образом, вы либо поднастроите свою матрицу, чтобы иметь только гены энтреза, и создадите Seurat:
newcounts = counts[!is.na(ENTREZIDS),]
rownames(newcounts) = ENTREZIDS
sboj = CreateSeuratObject(newcounts)
sexpr = SingleCellExperiment(assays=list(counts = newcounts))
Или вы сохраните их
newcounts = counts
rownames(newcounts) = ENTREZIDS
rownames(newcounts)[is.na(ENTREZIDS)] = rownames(counts)[is.na(ENTREZIDS)]
sboj = CreateSeuratObject(newcounts)
sexpr = SingleCellExperiment(assays=list(counts = newcounts))