在R中读入h5ad文件,并转换为seurat对象
太可恶了要么就报错要么就卡住!!!!/(ㄒoㄒ)/~~
library(Seurat)
library(SeuratDisk)
pbmc10kmono = paste0(path,'/pbmc10k/use_data/rna_mono.h5ad')
1. Round1
# # 方法1:通过h5Seurat中转
# library(SeuratDisk)
# Convert(pbmc10kmono, dest = "h5seurat")
# seurat_obj <- LoadH5Seurat("rna_mono.h5seurat")
报错报错~
2. Round2
# # 方法2:直接用r包读入
# library(zellkonverter)
# mono <- readH5AD(pbmc10kmono, to = "seurat")
也不行,半天也不动
3. Round3 (√)
library(reticulate)
# library(anndata)
ad <- reticulate::import("anndata")
adata <- ad$read_h5ad(pbmc10kmono)
adata
# AnnData object with n_obs × n_vars = 3782 × 13483
# obs: 'orig.ident', 'n_genes', 'celltypeL0'
# var: 'features', 'n_cells'
adata$T$X[1:5,1:5]
# 5 x 5 sparse Matrix of class "dgRMatrix"
# AAACAGCCATCCAGGT-1 AAACCAACACAATGCC-1 AAACCAACAGGAACTG-1
# AL627309.5 . . .
# LINC01409 . . .
# LINC01128 . . .
# LINC00115 1 . .
# NOC2L . . 2
# AAACCAACATAATCCG-1 AAACCAACATTGTGCA-1
# AL627309.5 1 .
# LINC01409 1 .
# LINC01128 . .
# LINC00115 . .
# NOC2L . .
# 细胞和基因的元数据
cell_meta <- as.data.frame(adata$obs)
gene_meta <- as.data.frame(adata$var)
# 创建Seurat对象
seurat_obj <- Seurat::CreateSeuratObject(
counts = adata$T$X, ## 这里需要转置,因为seurat中以cell作为列,gene作为行
meta.data = cell_meta,
assay = "RNA"
)
# 添加基因注释(如基因类型)
seurat_obj[["RNA"]]@meta.features <- gene_meta