Back

Scanpy 与 Seurat 数据互通

h5ad <-> SeuratObj

anndata2riSeurat-Disk 在转换 h5ad 和 SeuratObj 时总有奇怪的问题(anndata2ri 尚可用用,Seurat-Disk 基本废物)。

这次使用 diopy + dior 简单又好用。

配置

python: pip install diopy

R: devtools::install_github('JiekaiLab/dior')

转换数据

Scanpy -> Seurat

Python:

# Transfer h5ad to Seurat Obj

import numpy as np
import pandas as pd
import scanpy as sc
import diopy

# Load data
adata = sc.read_h5ad("path/to/your/data.h5ad")

# Export
diopy.output.write_h5(adata, 
                      file = 'data.h5', 
                      save_X=False)

R:

library(Seurat)
library(dior)

data <- read_h5(file = "data.h5",
                assay.name = 'RNA', 
                target.object = 'seurat')

# Transfer Success
saveRDS(data, "data.rds")

Seurat -> Scanpy

R:

# Transfer Seurat Obj to h5ad
library(Seurat)
library(dior)

data <- readRDS("path/to/your/data.rds")

data <- write_h5(data, 
                file = "data.h5", 
                object.type = 'seurat', 
                assay.name = 'RNA', 
                save.graphs = TRUE, 
                save.scale=FALSE)

Python:

import numpy as np
import pandas as pd
import scanpy as sc
import diopy
import h5py

# Transfer Success
h5 = h5py.File('data.h5', 'r')
adata = diopy.input.h5_to_adata(h5 = h5, assay_name='RNA')
h5.close()

adata.write_h5ad("data.h5ad")

参考

diopy

dior

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy