在R中读入h5ad文件,并转换为seurat对象

发布于:2025-03-23 ⋅ 阅读:(20) ⋅ 点赞:(0)

太可恶了要么就报错要么就卡住!!!!/(ㄒ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


网站公告

今日签到

点亮在社区的每一天
去签到