最全的Scanpy教程笔记
代码来源scanpy的官方教程
代码的解释来源web
本人也在学习scanpy分析单细胞数据,但是网络上对于scanpy的流程并没有太多详细的解释。这些是我上网搜索的相关解释,仅供参考,不喜勿视。
import numpy as np
import pandas as pd
import scanpy as sc
这段代码是使用Python编写的导入numpy、pandas和Scanpy库的代码。
第一行代码:导入NumPy库,是一个用于数值计算的Python库,提供了许多高级数学函数和数组操作。
第二行代码:导入Pandas库,是一个数据处理库,提供了高效的数据结构和数据分析工具。
第三行代码:导入Scanpy库,是一个用于单细胞RNA测序数据分析的Python库,提供了数据预处理、可视化、聚类、细胞类型注释等功能。
sc.settings.verbosity = 3
sc.logging.print_header()
sc.settings.set_figure_params(dpi=80, facecolor='white')
这段代码是使用Scanpy对单细胞RNA测序数据进行分析时常用的设置代码。
第一行代码:设置Scanpy的输出详细程度,值为3时会输出所有信息,包括debug信息。可以根据需要设置verbosity的值。
第二行代码:在日志中打印标题,这个可以让日志更加清晰。
第三行代码:设置生成的图片的参数,dpi表示像素密度,facecolor表示背景颜色。
这些设置可以根据具体的分析需求进行修改和优化,例如verbosity可以设置为0或1以减少输出信息,dpi可以根据需要进行调整以达到更好的图片质量等。
results_file = 'write/pbmc3k.h5ad'
这行代码定义了一个变量results_file,将字符串’write/pbmc3k.h5ad’赋值给它。这个字符串表示数据分析结果将会被保存到’write’文件夹下的名为’pbmc3k.h5ad’的文件中。在单细胞基因表达数据分析中,通常会对原始数据进行一系列的处理和分析,例如数据清洗、细胞聚类、差异表达基因分析等。将分析结果保存到文件中可以方便后续的操作和共享。在Scanpy中,数据分析结果通常以AnnData对象的形式保存,这是一个特殊的数据类型,可以保存单细胞数据的基因表达矩阵、样本信息、细胞类型等信息。'h5ad’是一种基于HDF5格式的数据存储方式,可以高效地存储大规模的单细胞数据。
adata = sc.read_10x_mtx(
'data/filtered_gene_bc_matrices/hg19/',
var_names='gene_symbols',
cache=True)
这行代码使用Scanpy库中的read_10x_mtx函数,从10x Genomics公司的数据文件中读取单细胞基因表达数据,存储为AnnData对象并将其赋值给变量adata。读取的数据来自于目录’data/filtered_gene_bc_matrices/hg19/‘,该目录包含了已经预处理好的、过滤后的基因表达矩阵数据。在读取数据时,将var_names参数设置为’gene_symbols’,表示使用基因符号(gene symbols)作为变量名称;将cache参数设置为True,表示在内存中缓存数据,以便后续的快速访问和操作。
adata.var_names_make_unique() #
这行代码是用于确保AnnData对象adata的变量名称(var_names)唯一的方法。在单细胞基因表达数据中,变量通常指基因,每个基因都有一个唯一的名称。但是,有些数据文件中可能存在重复的基因名称,或者读取多个数据文件后变量名称可能存在重复。这可能会导致后续的数据分析出现错误或不准确。因此,可以使用adata.var_names_make_unique()方法,对变量名称进行去重。该方法将自动在变量名称后面添加一个数字,使得所有变量名称都是唯一的。这样做可以避免后续数据分析中的命名冲突问题。
sc.pl.highest_expr_genes(adata, n_top=20)
这行代码使用Scanpy库中的highest_expr_genes函数,对AnnData对象adata中的基因表达矩阵进行分析,并将分析结果以图形的形式展示出来。
该函数的参数包括:
该函数的作用是显示具有最高表达水平的基因,它们通常是非常重要的基因,可能与特定细胞类型或生物学过程相关联。在图形中,基因按照表达水平从高到低排列,横坐标表示单个细胞,纵坐标表示基因表达水平,颜色表示不同基因的表达水平。可以通过观察这个图形,了解每个细胞中哪些基因表达水平最高,以及这些基因的表达模式是否存在差异。sc.pl.highest_expr_genes(adata, n_top=20)
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, min_cells=3)
这两行代码都是用于对AnnData对象adata中的细胞和基因进行过滤的方法。 第一行代码是使用Scanpy库中的filter_cells函数,根据每个细胞中的基因数量对细胞进行过滤。具体来说,该函数将会保留那些至少拥有min_genes个基因的细胞,而过滤掉那些基因表达数量太低的细胞。min_genes是一个可选参数,它表示保留细胞所需要的最少基因数量,默认为200。 第二行代码是使用Scanpy库中的filter_genes函数,根据每个基因在多少个细胞中表达,对基因进行过滤。具体来说,该函数将会保留那些在至少min_cells个细胞中表达的基因,而过滤掉那些表达量太低的基因。min_cells是一个可选参数,它表示一个基因至少要在多少个细胞中表达才能被保留,默认为3。 这两行代码的作用是对单细胞数据进行预处理,以去除噪声和低质量细胞、基因。过滤细胞和基因后,会得到一个更加干净、准确的基因表达矩阵,这对后续的数据分析非常重要。
adata.var['mt'] = adata.var_names.str.startswith('MT-')
sc.pp.calculate_qc_metrics(adata, qc_vars=['mt'], percent_top=None, log1p=False, inplace=True)
这两行代码用于计算单细胞RNA测序数据的质控指标,以评估细胞的质量和数据的可靠性。具体来说,它们执行以下操作:
第一行代码将adata
中基因名称(var_names)是否以“MT-”开头的结果(True或False)保存到一个名为“mt”的列中。
第二行代码使用Scanpy库中的calculate_qc_metrics函数,计算每个细胞的常规质控指标,包括:
其中,参数qc_vars
表示指定哪些变量作为质控指标,这里将“mt”作为质控指标;参数percent_top
表示用于计算n_genes_by_counts指标的百分比,这里设置为None,表示不考虑百分比;参数log1p
表示是否对total_counts进行log1p转换,默认为False;参数inplace
表示是否直接在AnnData对象上进行修改,默认为True。
计算完毕后,这些指标将被保存到adata.obs中的列中,可以用于后续的数据分析和筛选。
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'],
jitter=0.4, multi_panel=True)