將.h5ad轉(zhuǎn)換成Seurat可識別格式

很多時候從數(shù)據(jù)庫下載的處理過的各種單細胞數(shù)據(jù)格式都是.h5ad或者.h5。
本篇內(nèi)容就先給一個處理.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"細胞數(shù): {adata.n_obs}")
print(f"基因數(shù): {adata.n_vars}")
print(f"觀測值元數(shù)據(jù): {adata.obs.columns.tolist()}")
print(f"變量元數(shù)據(jù): {adata.var.columns.tolist()}")
# 查看表達矩陣
print(adata.X.shape)  # 稀疏矩陣格式
# 創(chuàng)建輸出目錄
os.makedirs("scRNAseq_of_human_nature", exist_ok=True)

讀取文件,并查看文件包括的信息。
從里面提取所需要的信息,然后將其轉(zhuǎn)化成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'  # 這里很重要,注意要統(tǒng)一寫死,不要從 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'] ## 根據(jù)實際情況選擇即可。
})
barcode_df.to_csv("scRNAseq_of_human_nature/barcodes.tsv", sep='\t', index=False, header=False)

完成上述轉(zhuǎn)換之后,直接使用Seurat讀取文件即可。

library(Seurat)
# 讀取數(shù)據(jù)
seurat_obj <- Read10X("scRNAseq_of_human_nature/")
seurat_obj <- CreateSeuratObject(counts = seurat_obj)
#之后的標準處理。

歡迎大家交流補充~~有問題請在評論區(qū)或者私信留言,我看到之后一定回復(fù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容