由于下载的h5ad文件太大,如果转成Seurat对象总是报错内存不足,所以想按样本对h5ad对象进行拆分。
在此之前,首先要下载好scanpy pyhon package
#导入Python模块
import numpy as np
import pandas as pd
import scanpy as sc
#读入h5ad对象
adata = sc.read_h5ad("xxx.h5ad")
>>> adata
AnnData object with n_obs × n_vars = 647366 × 24929
obs: 'sample_id', 'n_genes', 'n_genes_by_counts', 'total_counts', 'total_counts_mt', 'pct_counts_mt', 'full_cluollection', 'Status_on_day_collection_summary'
var: 'feature_types', 'raw_features'
obsm: 'X_pca', 'X_pca_harmony', 'X_umap'
layers: 'raw'
##按照样本拆分对象
ob1=adata[adata.obs.sample_id=="sample1", :]
###存储文件
ob1.write('ob1.h5ad')
之前都是用R处理的单细胞文件,但是文件太大的时候R带不动了,可是不会python,故此记录一下这个简单的python取子集小步骤。
还有一个遗留问题是如果要把每个样品都取出来的话如何在python里写循环实现,改天学习一下。
网友评论