I usually export everything I need manually
srtObject@meta.data$barcode <- rownames(srtObject@meta.data)
srtObject@meta.data$UMAP_1 <- srtObject@reductions$umap@cell.embeddings[,1]
srtObject@meta.data$UMAP_2 <- srtObject@reductions$umap@cell.embeddings[,2]
write.csv(srtObject@meta.data, file='/data/metadata.csv', quote=F, row.names=F)
library(Matrix)
counts_matrix <- GetAssayData(srtObject, assay='RNA', slot='counts')
writeMM(counts_matrix, file=paste0("/data/", 'counts.mtx'))
write.csv(srtObject@reductions$pca@cell.embeddings, file='data/pca.csv', quote=F, row.names=F)
write.table(data.frame('gene'=rownames(counts_matrix)),file='data/gene_names.csv', quote=F,row.names=F,col.names=F)
Once everything is saved, I load it into scanpy
X = io.mmread("data/counts.mtx")
adata = anndata.AnnData(X=X.transpose().tocsr() )
cell_meta = pd.read_csv("data/metadata.csv")
with open("data/gene_names.csv", 'r') as f:
gene_names = f.read().splitlines()
adata.obs = cell_meta
adata.obs.index = adata.obs['barcode']
adata.var.index = gene_names
pca = pd.read_csv("data/pca.csv")
pca.index = adata.obs.index
adata.obsm['X_pca'] = pca.to_numpy()
adata.obsm['X_umap'] = np.vstack((adata.obs['UMAP_1'].to_numpy(), adata.obs['UMAP_2'].to_numpy())).T
sc.pl.umap(adata, color='cellType_final', add_outline=True, legend_loc='on data', legend_fontsize=8, legend_fontoutline=2,frameon=False, title='')
Probably a bit old fashion and not optimal for dealing with multiple files, but it can easily be put into a function.
Thanks! I will try it out!