前兩天遇到了一個小問題:初步注釋細胞發現,使用RenameIdents后細胞類型的levels與我想要的排序不符。例如,我實際得到的level為: cancer_cell1 T_cells cancer_cell2 cancer_cell3 B_cells.但是我想要把cancer_cell cluster與免疫細胞的排列成:cancer_cell1 cancer_cell2 cancer_cell3 T_cells B_cells。搜所了一下,結果方法很簡單。
# Reorder identity classes
levels(x = pbmc_small)
#> [1] "B" "A" "C"
levels(x = pbmc_small) <- c('C', 'A', 'B')
levels(x = pbmc_small)
#> [1] "C" "A" "B"
seurat處理identity的函數有
Idents(object, ...)
Idents(object, ...) <- value
RenameIdents(object, ...)
ReorderIdent(object, var, ...)
SetIdent(object, ...)
StashIdent(object, save.name, ...)
# S3 method for Seurat
Idents(object, ...)
# S3 method for Seurat
Idents(object, cells = NULL, drop = FALSE, ...) <- value
# S3 method for Seurat
ReorderIdent(
object,
var,
reverse = FALSE,
afxn = mean,
reorder.numeric = FALSE,
...
)
# S3 method for Seurat
RenameIdents(object, ...)
# S3 method for Seurat
SetIdent(object, cells = NULL, value, ...)
# S3 method for Seurat
StashIdent(object, save.name = "orig.ident", ...)
# S3 method for Seurat
droplevels(x, ...)
# S3 method for Seurat
levels(x)
# S3 method for Seurat
levels(x) <- value
# 獲取細胞identy
Idents(pbmc_small)
# 設置細胞identy
# 可以用來指定某些細胞為新的名稱
#例如將前4個細胞的identity修改為a,其余不變
Idents(pbmc_small, cells = 1:4) <- 'a'
head(Idents(pbmc_small))
# 使用matadata來設置identity
colnames(pbmc_small[[]])
Idents(pbmc_small) <- 'RNA_snn_res.1'
levels(pbmc_small)
# 修改細胞identity的名字
# 可以提供任意數量,例如,原始的level有20,修改2個,剩余的18個保持不變
levels(pbmc_small)
pbmc_small <- RenameIdents(pbmc_small, '0' = 'A', '2' = 'C')
levels(pbmc_small)
# 這里也可以寫成
identityMapping <- c('0' = 'A', '2' = 'C')
pbmc_small <- RenameIdents(pbmc_small, identityMapping )
# 使用SetIdent設置細胞的identity
cells.use <- WhichCells(pbmc_small, idents = '1')
pbmc_small <- SetIdent(pbmc_small, cells = cells.use, value = 'B')
#將細胞的identity加到matadata上
head(pbmc_small[[]])
pbmc_small <- StashIdent(pbmc_small, save.name = 'idents')
head(pbmc_small[[]])
# 獲取seurat對象的細胞identity的水平
levels(x = pbmc_small)
# 調整細胞identity的水平
levels(x = pbmc_small)
levels(x = pbmc_small) <- c('C', 'A', 'B')
levels(x = pbmc_small)
感覺上面的函數基本上涵蓋了操縱identity的所有需求。
如有錯誤,可以在評論初指正。
參考