Post

3D UMAP plot

기본적으로 dimension reduction은 2D로 많이 진행하지만 어떤 경우, 3D plot으로 그렸을때 그 구조가 더 잘 이해되는 경우가 있다. seurat으로 3d umap그리는법 정리해본다.

필요한 library들은 다음과 같다.

1
2
3
4
5
6
7
8
9
10
library(monocle3)
library(Seurat)
library(SeuratWrappers)
library(ggplot2)
library(patchwork)
library(magrittr)
library(plotly)
library(rgl) 
library(ggthemes)
library(scales)


설치 방법 정리 한번에!

monocle3

설치방법은 여기 정리해둠

Seurat

conda로 설치

1
conda install -c conda-forge r-seurat 

R CRAN으로 설치[^1]

1
install.packages('Seurat')

SeuratWrappers

1
remotes::install_github('satijalab/seurat-wrappers')

에러해결 여기 참조

1
BiocManager::install(c('rgl','ggthemes'))

사실 처음에 2 dimension reduction 할때 같이 하면 편하고 좋지만 나중가서 하고 싶어지는 경우가 대부분이라… 하지만 결론은 언제 하던 상관없다.

이미 UMAP으로 2 dimension reduction까지 끝낸 파일을 불러 오고,
RunUMAP부분부터 다시 3 dimension 으로 진행하면 된다. 포인트는 2D때와 parameter들을 동일하게 한다는것. n.components=3L 이 옵션만 추가해주고 PC 갯수나 method같은 것들은 동일하게 진행해주면 같은 모양의 3D그림을 얻을 수 있다.

1
2
3
2D_seurat <-readRDS("example.rds")

3D_seurat <- RunUMAP(2D_seurat, reduction = "pca", dims = 1:30, umap.method="umap-learn", n.components=3L)

visualization은 monocle3을 이용할 것이다. htmlwidgets::saveWidget을 사용하면 html파일로 저장할 수 있다.

1
2
3
4
5
6
7
8
cds_3d <- as.cell_data_set(3D_seurat)
cds_3d <- cluster_cells(cds_3d)
cds_3d <- learn_graph(cds_3d)

pal = rainbow(20)
names(pal) = levels(3D_seurat$seurat_clusters)
cds_3d_plot_obj <- plot_cells_3d(cds_3d, color_cells_by="seurat_clusters",reduction_method="UMAP",color_palette=pal)
htmlwidgets::saveWidget(cds_3d_plot_obj, "seurat.cluster.html")
This post is licensed under CC BY 4.0 by the author.

© Subin Cho. Some rights reserved.

Using the Chirpy theme for Jekyll.