Post

Seurat version5 다른 포맷으로 변환 SingleCellExperiment, loom, h5ad

Seurat Version 5가 나온지도 반년이 돼가는거 같은데 아직도 과도기느낌이 나는 버그랑 competible issue가 계속 보인다.

아직까지 다른 tool들이 seurat verion 5를 지원하고 있지 않기 때문에 (난 언제 딱 맞게 잘 돌아가는 툴을 찾을까ㅋㅋ Seurat 3업뎃땐 2밖에 지원안해서 비슷한 struggling을 겪고 ㅂㄷㅂㄷ)

Seurat object를 다른 포맷으로 바꿔서 집어 넣어보려고 시도하는 과정중에 겪은 에러랑 내가 찾은 임시해결방편을 적어본다.

❤️‍🔥 Seurat version 4사용하면 가능함

conda 사용해서 환경나누고 Seurat4 따로 깔아서 conversion할때만 사용하는거 추천

Seurat v5 to v3

1
2
3
4
5
# convert a v5 assay to a v3 assay
pbmc3k[["RNA3"]] <- as(object = pbmc3k[["RNA"]], Class = "Assay")

# convert a v3 assay to a v5 assay
pbmc3k[["RNA5"]] <- as(object = pbmc3k[["RNA3"]], Class = "Assay5")

Seurat v5 to SCE

제일 첫번째로 SingleCellExperiment 되는 법부터 받고 가자.

별거없이 Seurat v4 깔고 as.SingleCellExperiment() 사용하면 변환된다.

1
2
3
> library(Seurat) # version 4
> GEX.seurOBJ <- readRDS("GEX.seurOBJ.v3.rds") # Seurat 5 라면 먼저 v.3로 저장후 시도해야함
> test <- as.SingleCellExperiment(GEX.seurOBJ)

이번엔 실패한 케이스 = Seurat v5 깔린 상태에서 시도하면 다 에러남.

1
2
3
4
5
6
> library(Seurat) # version 5
> options(Seurat.object.assay.version = "v5") # 하던 안하던 에러남
> GEX.seurOBJ <- readRDS("GEX.seurOBJ.rds")
> test <- as.SingleCellExperiment(GEX.seurOBJ)
Error in .local(x, ..., value = value) : 
  3 rows in value to replace 40rows

Seurat v5 to Loom

1
GEX.loom <- as.loom(GEX.seurOBJ, filename = "GEX.loom", verbose = FALSE)

Seurat v5 to h5ad

인터넷 연결 필요

1
2
3
library(zellkonverter)
sce_obj <- as.SingleCellExperiment(GEX.seurOBJ, assay = c("RNA"))
writeH5AD(sce_obj, "GEX.h5ad", X_name = 'counts')

Reference

This post is licensed under CC BY 4.0 by the author.

© Subin Cho. Some rights reserved.

Using the Chirpy theme for Jekyll.