将.h5ad转换成Seurat可识别格式

很多时候从数据库下载的处理过的各种单细胞数据格式都是.h5ad或者.h5。
本篇内容就先给一个处理.h5ad文件的脚本。

import scanpy as sc
import pandas as pd
import numpy as np
import scipy.io
from scipy.io import mmwrite
import os
# 使用scanpy读取
adata = sc.read_h5ad("/share/scRNAseq_of_human_nature.h5ad")
# 查看基本信息
print(adata)
print(f"细胞数: {adata.n_obs}")
print(f"基因数: {adata.n_vars}")
print(f"观测值元数据: {adata.obs.columns.tolist()}")
print(f"变量元数据: {adata.var.columns.tolist()}")
# 查看表达矩阵
print(adata.X.shape)  # 稀疏矩阵格式
# 创建输出目录
os.makedirs("scRNAseq_of_human_nature", exist_ok=True)

读取文件,并查看文件包括的信息。
从里面提取所需要的信息,然后将其转化成10× genomics标准输入文件。
然后使用Seurat读取上述文件,进行标准分析即可。

# 1. 保存矩阵(稀疏矩阵格式)
if isinstance(adata.X, np.ndarray):
    # 如果是 dense matrix
    from scipy.io import mmwrite
    mmwrite("scRNAseq_of_human_nature/matrix.mtx", adata.X.T)
else:
    # 如果是 sparse matrix
    scipy.io.mmwrite("scRNAseq_of_human_nature/matrix.mtx.gz", adata.X.T)
gene_df = pd.DataFrame({
    'gene_ids': adata.var_names,
    'gene_names': adata.var['feature_name'] if 'feature_name' in adata.var.columns else adata.var_names,
    'feature_types': 'Gene Expression'  # 这里很重要,注意要统一写死,不要从 adata.var 读取
})
gene_df.to_csv("scRNAseq_of_human_nature/features.tsv.gz", 
               sep='\t', index=False, header=False)
#查看所包含的信息
adata.var.columns
# 3. 保存细胞barcode信息
barcode_df = pd.DataFrame({
    'barcode': adata.obs_names,
    'cell_type': adata.obs['cell_type'], # 添加 cell_type 列
    'study_name': adata.obs['study_name'],# 添加 样本来源 列
    'disease': adata.obs['disease'],#添加是正常还是疾病
    'sex': adata.obs['sex'],#添加性别列
    'donor_id': adata.obs['donor_id'], ## 这里我添加了很多,因为我需要这些。
    'donor_age': adata.obs['donor_age'] ## 根据实际情况选择即可。
})
barcode_df.to_csv("scRNAseq_of_human_nature/barcodes.tsv", sep='\t', index=False, header=False)

完成上述转换之后,直接使用Seurat读取文件即可。

library(Seurat)
# 读取数据
seurat_obj <- Read10X("scRNAseq_of_human_nature/")
seurat_obj <- CreateSeuratObject(counts = seurat_obj)
#之后的标准处理。

欢迎大家交流补充~~有问题请在评论区或者私信留言,我看到之后一定回复。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容