Post

How to label cluster in seurat

cell type annotation label

Seurat으로 clustering 한뒤에, canonical cell type marker나 reference data 와의 비교를 통해 cell type annotation을 하고 확정된 cell type을 metadata로 저장하기 위한 코드

일반적으로 cluster 별로 annotation 할때,

1
2
3
4
5
6
7
8
# TNK = 내 seurat obj name

annot.cluster <- c('CD4T','NK','CD8T','NK','NK','CD4T','T','CD8T','T')
names(annot.cluster) <- levels(TNK$seurat_clusters)
TNK$TNK.annotation.cluster.L1 <- annot.cluster[TNK$seurat_clusters]
TNK$TNK.annotation.cluster.L1 <- factor(TNK$NK.annotation.cluster.L1, 
                            levels=c('T','CD4T','CD8T','NK'))
saveRDS(TNK,"TNK.annot.L1.rds")

factor 로 바꿔서 levels지정해주지 않으면 plot그릴때 순서 엉망으로 안예쁘게 나올수 있으니 주의.


RenameIdents() function을 사용할수도 있다.

1
TNK <- RenameIdents(TNK, '0'="CD4T", '1'="NK", '2'="CD8T", '3'="NK", '4'="NK", '5'="CD4T", '6'="T", '7'="CD8T", '8'="T")

2. 조건을 달아서 annotation할때,

원래 있던 라벨 하나 복사해서 새로운 라벨을 생성해주고, 조건을 넣어서 새로운 라벨 달아준다.

1
2
3
object$new_label <- object$old_label
object@meta.data[object$old_label=='Tumor','new_label'] <- 'TT'
# object$old_label=='Tumor' 이부분에 원하는 조건

3. 여러 라벨 하나로 합쳐서 하나의 새 라벨로 줄때,

1
object$new_label <- sapply(colnames(object), function(x) paste0(object$old_label_one[x], "_", object$old_label_two))
  • 2번, 3번 통합 응용 버전 예시
1
2
3
red <- colnames(subset(merged_object, subset=cluster_Annot=="redCluster"))
merged_object$ssGSEA_label <- merged_object$PatientID
merged_object@meta.data[red,'ssGSEA_label'] <- sapply(red, function(x) paste0(merged_object$PatientID[x], "_red"))
This post is licensed under CC BY 4.0 by the author.

© Subin Cho. Some rights reserved.

Using the Chirpy theme for Jekyll.