🖥️ 코드
### Convert from h5ad to Seurat ----
library(Seurat)
library(glue)
library(SeuratDisk)
dirdata <- "~/data/"
Convert(glue("{dirdata}adata.h5ad"), dest = "h5seurat", assay = "RNA", overwrite = TRUE)
seurat <- LoadH5Seurat(glue("{dirdata}adata.h5seurat"), assays = "RNA", meta.data = FALSE)
🤯 에러메세지
Error: Ambigious assay
⭐ 해결방법
anndata와 seurat 구조 차이로 충돌이 생겨 이러한 에러가 뜨는 것이다.
1. anndata에서 obs, uns, var 등 불필요한 데이터는 삭제하고 h5ad로 저장한다.
(count matrix 제외하고 모든 레이어와 메타데이터를 제거하는 게 가장 깔끔하나, reduction embedding이 필요하다면 obsm 은 남기는 것을 추천함)
### Save from AnnData to h5ad
adata = adata_IE_APC.copy()
adata.X = adata.layers["counts"]
adata.X = scipy.sparse.csr_matrix(adata.X)
del adata.var
del adata.uns
del adata.obs
del adata.layers
adata.write_h5ad(f'{dirdata}adata.h5ad')
▶ scipy.sparse.scr_matrix 관련 내용 참고:
001. [R] LoadH5Seurat: Error in sparseMatrix(i = x[["indices"]][] + 1, p = x[["indptr"]][], x = x[["data"]][], :'dims' must cont
single cell 분석 시 파이썬과 R에서 사용하는 object 형태가 다르다. seurat을 anndata로 변환하거나 또는 그 반대로 변환할 때 여러 에러가 종종 발생한다. 여러 패키지 중에 SeuratDisk를 자주 사용하는 편
life-is-egg-study.tistory.com
2. R에서 다시 h5ad를 seurat으로 변환하는 코드를 돌리면 성공!
3. 메타데이터가 필요하다면, 삭제하기 전에 csv, txt 등의 형태로 미리 저장한 다음에 R에서 추가해주면 된다.
### Python
metadata = adata.obs
metadata.to_csv(f'{dirdata}adata_meta.csv')
### R
meta <- read.csv(glue("{dirdata}adata_meta.csv"), row.names = 1)
seurat <- AddMetaData(seurat, meta, col.name = colnames(meta))
🚩참고
https://github.com/mojaveazure/seurat-disk/issues/18
Error: Ambigious assay when using LoadH5Seurat() · Issue #18 · mojaveazure/seurat-disk
Hello, I'm currently trying to read in a h5ad-file into R. Since seurats ReadH5ad()-function didn't work out for me, I tried to do it with seurat-disk. First I converted my file into a h5seurat-fil...
github.com
댓글