业务范围

python的scanpy库读取几种常见格式的单细胞数据文件汇总
发布日期:2024-10-14 12:21    点击次数:75

首先你需要有Python,以及它配套的代码编辑器哈。从零开始开始学习一个编程语言,我们肯定是首先得安装好它,比如前面我们讲解了Python的安装,它多个版本的差异以及管理,详见:Python初体验之弄清楚版本差异和如何安装管理,然后给出来了两个Python编辑器,就是PyCharm或者JupyterLab,任选其一都可以打开你的Python从零开始之旅。如果你确实是从零开始,建议参考我们的推荐的学习资料哈:Python从零开始的配套b站视频和书籍 。

scanpy 是用于单细胞数据分析的 Python 库,需要有Python基础,才有可能跟下面的教程进行scanpy的单细胞数据分析流程哦!

读前热身准备:

在Python编程体系读取单细胞文件数据会用到scanpy这个库,所以需要安装scanpy这个库:

pip install scanpy -i https://pypi.tuna.tsinghua.edu.cn/simple

安装好之后,就可以使用了。首先理解一下单细胞表达量矩阵的多种文件格式,主要包括以下几种:

Matrix Market Exchange Format (MEX):.mtx 文件,该文件包含了一个稀疏矩阵,其中每一行代表一个基因,每一列代表一个细胞,而每个元素则表示基因在相应细胞中的表达量。通常会有三个文件组成:barcodes.tsv(细胞标识)、features.tsv(基因标识)和 matrix.mtx(表达矩阵)。Hierarchical Data Format (HDF5):.h5 文件,HDF5 是一种用于存储和组织大规模科学数据的文件格式。在单细胞数据中,可以使用 HDF5 存储表达矩阵、基因和细胞的元数据等信息。AnnData:.h5ad 文件,是基于 HDF5 的文件格式,由 anndata 库定义。它可以包含单细胞数据的表达矩阵、基因和细胞的元数据、样品信息等。Comma-Separated Values (CSV) 或文本文件:.csv 或 .txt 文件,包含表达矩阵的文本文件。每一行代表一个基因,每一列代表一个细胞,元素是表达量。1.读取h5文件

图片

使用scanpy读取如上图所示的h5文件,我们可以用read_10x_h5()这个函数进行h5文件读取,下面是简单的示范;

read_10x_h5(filename)

参数:

filename:文件名,填写你要读取的h5文件,比如:"/home/my/data/GSE10086_filtered_bc.h5"这样的文件路径。

更多详情见:https://scanpy.readthedocs.io/en/latest/generated/scanpy.read_10x_h5.html

实战:

上图中这个文件的下载地址:https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM5344nnn/GSM5344024/suppl/GSM5344024_B1.KO_normal.adjacent.lung_filtered_feature_bc_matrix.h5

我已经把这个文件下载好了并放在C:/Users/my/Desktop/data目录下,现在开始读取h5文件吧!

代码如下:

#导入scanpy库import scanpy as sc#读取h5文件data=sc.read_10x_h5('C:/Users/my/Desktop/data/GSM5344024_B1.KO_normal.adjacent.lung_filtered_feature_bc_matrix.h5')#查看数据print(data)

结果如下:

AnnData object with n_obs × n_vars = 13113 × 31053    var: 'gene_ids', 'feature_types', 'genome'

可以看出读取文件之后的data变量是一个AnnData数据对象,包含13113个细胞和31053个基因。

2.读取txt文件

txt就是普普通通的文本文件而已,所以很容易读取:

图片

使用scanpy读取如上图所示的txt文件,我们可以用**read_text()**这个函数进行txt文件读取,下面是简单的示范;

read_text(filename)

参数:

filename:文件名,填写你要读取的txt文件,比如:"/home/my/data/GSE10086_filtered_bc.txt.gz"这样的文件路径。

更多详情见:https://scanpy.readthedocs.io/en/latest/generated/scanpy.read_text.html#scanpy.read_text

实战:

上图中这个文件的下载地址:https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM5101nnn/GSM5101014/suppl/GSM5101014_Pt1_Superficial_CountMatrix.txt.gz

我已经把这个文件下载好了并放在C:/Users/my/Desktop/data目录下,现在开始读取txt文件吧!

代码如下:

#导入scanpy库import scanpy as sc#读取txt文件data=sc.read_text('C:/Users/my/Desktop/data/GSM5101014_Pt1_Superficial_CountMatrix.txt.gz')#查看数据print(data)

结果如下:

AnnData object with n_obs × n_vars = 32738 × 2315

可以看出读取文件之后的data变量是一个AnnData数据对象,包含32738个细胞和2315个基因。

3.读取tab文件

它本质上也是txt文本文件,无论是csv格式和tsv格式,都是一样的。

图片

使用scanpy读取如上图所示的tab文件,我们可以用read_text()这个函数进行tab文件读取,下面是简单的示范;

read_text(filename)

参数:

filename:文件名,填写你要读取的tab文件,比如:"/home/my/data/GSE10086_filtered_bc.tab.gz"这样的文件路径。

更多详情见https://scanpy.readthedocs.io/en/latest/generated/scanpy.read_text.html#scanpy.read_text

实战:

上图中这个文件的下载地址:https://ftp.ncbi.nlm.nih.gov/geo/series/GSE131nnn/GSE131935/suppl/GSE131935_SS2_15_0160_rpkms.tab.gz

我已经把这个文件下载好了并放在C:/Users/my/Desktop/data目录下,现在开始读取tab文件吧!

代码如下:

#导入scanpy库import scanpy as sc#读取tab文件data=sc.read_text('C:/Users/my/Desktop/data/GSE131935_SS2_15_0160_rpkms.tab.gz')#查看数据print(data)

结果如下:

AnnData object with n_obs × n_vars = 24490 × 384

可以看出读取文件之后的data变量是一个AnnData数据对象,包含24490个细胞和384个基因。

4.读取10X格式的文件

图片

使用scanpy读取如上图所示的10X格式文件,我们可以用**read_10x_mtx()**这个函数进行3个文件读取,下面是简单的示范;

read_10x_mtx(path)

参数:

path:上图中的3个文件所在的文件目录,比如:"/home/my/data/GSE10086_RAW"这样的文件路径。

更多详情见:https://scanpy.readthedocs.io/en/latest/generated/scanpy.read_10x_mtx.html

实战:

上图中这3个文件的下载地址:

https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM6567nnn/GSM6567952/suppl/GSM6567952_Control-features.tsv.gz

https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM6567nnn/GSM6567952/suppl/GSM6567952_Control-barcodes.tsv.gz

https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM6567nnn/GSM6567952/suppl/GSM6567952_Control-matrix.mtx.gz

我已经把这3个文件下载好了并放在C:/Users/my/Desktop/data/GSM6567952目录下,并把这三个文件重命名如下:

features.tsv.gzbarcodes.tsv.gzmatrix.mtx.gz

如果不重命名的话,scanpy就会识别不了这三个文件而导致不能读取文件,现在开始读取10X文件吧!

代码如下:

#导入scanpy库import scanpy as sc#读取tab文件data=sc.read_10x_mtx('C:/Users/my/Desktop/data/GSM6567952')#查看数据print(data)

结果如下:

AnnData object with n_obs × n_vars = 6794880 × 27998    var: 'gene_ids', 'feature_types'

可以看出读取文件之后的data变量是一个AnnData数据对象,包含6794880个细胞和27998个基因。

5.读取h5ad文件

h5ad文件本来就是Python编程语言体系的单细胞存储格式的文件,所以是最方便的,但是它对r语言用户来说就不友好了哦。

图片

使用scanpy读取如上图所示的h5ad文件,我们可以用read_h5ad()这个函数进行h5ad文件读取,下面是简单的示范;

read_h5ad(filename)

参数:

filename:文件名,填写你要读取的tab文件,比如:"/home/my/data/GSE10086_filtered_bc.h5ad.gz"这样的文件路径。

更多详情见:https://scanpy.readthedocs.io/en/latest/generated/scanpy.read_h5ad.html

实战:

上图中这个文件的下载地址:https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM4648nnn/GSM4648564/suppl/GSM4648564_adipose_raw_counts.h5ad.gz

我已经把这个文件下载好并解压好后,放在C:/Users/my/Desktop/data目录下。

注意:这个文件要进行解压后,scanpy才能读取文件:

#导入scanpy库import scanpy as sc#读取h5ad文件data=sc.read_h5ad('C:/Users/my/Desktop/data/GSM4648564_adipose_raw_counts.h5ad')#查看数据print(data)

结果如下:

AnnData object with n_obs × n_vars = 33694 × 11167

可以看出读取文件之后的data变量是一个AnnData数据对象,包含33694个细胞和11167个基因。

其它文件

常见的单细胞数数据文件差不多就这些了,不同文件使用scanpy的不同读取函数进行读取就行了。

如果是遇到了比较冷门的单细胞矩阵文件,也欢迎留言交流哈。基本上就遇河架桥,碰到问题解决问题即可。

scanpy的其它功能

目前scanpy是Python编程体系最流行的单细胞数据处理库了,所以它肯定是不仅仅是读取单细胞转录组表达量矩阵那么简单,它包罗万象,可以出几十个甚至上百个笔记慢慢带领大家理解它哈。它提供了许多用于处理和分析单细胞RNA测序数据的功能,以下是 scanpy 常见的功能:

数据加载:支持多种格式的数据加载,包括常见的文本格式(如CSV、TXT)、AnnData格式等。数据预处理:包括数据归一化、基因过滤、细胞过滤、批次效应消除等。可视化工具:提供了丰富的可视化工具,包括绘制细胞聚类、基因表达、UMAP、t-SNE等。细胞聚类:包括常见的聚类算法,如k均值聚类(K-means)、DBSCAN等。基因标记:用于标记不同细胞类型的基因,通过基因差异表达分析来鉴定。细胞亚群鉴定:通过分析细胞的表达模式,识别细胞亚群。细胞状态推断:通过分析基因表达的方式,推断细胞的状态,如细胞周期阶段。差异表达分析:用于比较不同细胞类型或状态之间的基因表达差异。数据集整合:提供了一些工具,用于整合来自不同实验或批次的单细胞数据。轨迹分析:用于分析单细胞数据中细胞的发育轨迹,了解细胞发育和分化过程。单细胞网络分析:探索单细胞数据中的细胞间相互作用网络。高级可视化:支持使用高级图形库,如umap-learn和igraph,进行更复杂的数据可视化。 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

相关资讯