본문 바로가기
Bioinformatics/Troubleshooting

002. [R] LoadH5Seurat: Error: Ambigious assay

by life_is_egg 2024. 9. 19.
반응형

🖥️ 코드

### 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 관련 내용 참고:

2024.09.19 - [Bioinformatics/Troubleshooting] - 001. [R] LoadH5Seurat: Error in sparseMatrix(i = x[["indices"]][] + 1, p = x[["indptr"]][], x = x[["data"]][], :'dims' must contain all (i,j) pairs

 

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

 

반응형

댓글