从GEO单细胞数据创建AnnData对象

示例数据来自2019.10的NC,其单细胞数据被上传到GEO网站

GEO Accession viewer

常见的单细胞数据应包括如下三个文件,带有单细胞计数的matrix矩阵文件,基因名称的列表文件,以及包含样本注释的metadata文件。文件格式一般为mtx、txt、tsv或者其压缩格式。

scanpy包是目前比较通用的单细胞数据分析的软件包,其数据存储格式也较为清晰,这里我们尝试将单细胞的三个文件转换成适用于scanpy分析的anndata对象。

首先导入相应的包,下载好数据文件并提前指定路径

import scanpy as sc
import os
import math
import itertools
import warnings
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

mtx_file = '/data/work/scRNA_load/2019.10.NC/GSE137537_counts.mtx.gz'  # MTX格式文件路径
genes_file = '/data/work/scRNA_load/2019.10.NC/GSE137537_gene_names.txt'  # 基因名称文件路径
annotation_file = '/data/work/scRNA_load/2019.10.NC/GSE137537_sample_annotations.tsv'

将单细胞计数文件直接导入成anndata,查看数据

adata = sc.read_mtx(mtx_file)
adata
AnnData object with n_obs × n_vars = 19719 × 20091

"obs"和"vars"是"AnnData"对象中两个重要的属性,分别代表观测值(Observations)和变量(Variables)。在单细胞RNA测序数据中,每一行代表一个单细胞样本(通常是一个细胞),而每一列则是样本中的一个特征或基因。"obs"属性存储了与每个单细胞样本相关的元信息,比如细胞类型、样本来源、处理条件等。通常,它是一个表格或字典格式,其中每一行对应于一个单细胞样本,每一列表示一个元信息。

而每个样本的每个特征或基因都具有相应的值。"vars"属性存储了与每个特征或基因相关的元信息,比如基因名称、基因类型、基因表达水平等。通常,它是一个表格或字典格式,其中每一行对应于一个特征或基因,每一列表示一个元信息。

为了检查我们的数据结构是否正确,用pandas包导入metadata信息验证

df = pd.read_csv(annotation_file, sep='\t')
df

由metadata可知,20091是样本的单细胞数目,应该对应anndata的观测值,因此我们需要转置一下数据结构,即

adata = adata.transpose()
print(adata)
AnnData object with n_obs × n_vars = 20091 × 19719

接着可以向变量值中添加基因名称

adata.vars_names = open(genes_file).read().splitlines()

最后将基因注释信息存储到.obs的观测列中,原始数据中注释信息在‘Labels’列,我们将其存储为anndata数据的‘celltype’列,同时提取添加两个特征计数列

adata.obs_names=df.index
adata.obs['celltype'] = df['Labels']
adata.obs['nCount_RNA'] = df['scater_qc.all.total_counts']
adata.obs['nFeature_RNA'] = df['scater_qc.all.total_features_by_counts']

# 查看前十行
print(adata.obs.head(10))
    celltype  nCount_RNA  nFeature_RNA
0       Rods        1082           468
1       Rods        1170           815
2        ACs        2290          1104
3  Macroglia        4537          2067
4        BPs        5072          1362
5  Macroglia        1205           421
6  Macroglia        4237          2063
7        BPs        1914           896
8  Macroglia        5790          2534
9       Rods         933           721

查看现在的数据结构,可以进行一些规范化处理

sc.pp.normalize_total(adata)
AnnData object with n_obs × n_vars = 20091 × 19719
    obs: 'celltype', 'nCount_RNA', 'nFeature_RNA'

最后保存为.h5ad格式

output_file = '/data/work/scRNA_load/2019.10.NC/GSE137537.h5ad'
adata.write(output_file)

如果需要进行后续分析,直接读入即可

adata = sc.read_h5ad('/data/work/scRNA_load/2019.10.NC/GSE137537.h5ad')
adata
AnnData object with n_obs × n_vars = 20091 × 19719
    obs: 'celltype', 'nCount_RNA', 'nFeature_RNA'
  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值