最全的Scanpy教程笔记 Preprocessing and clustering 3k PBMCs

最全的Scanpy教程笔记
代码来源scanpy的官方教程
代码的解释来源web
本人也在学习scanpy分析单细胞数据,但是网络上对于scanpy的流程并没有太多详细的解释。这些是我上网搜索的相关解释,仅供参考,不喜勿视。

Preprocessing and clustering 3k PBMCs

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()方法,对变量名称进行去重。该方法将自动在变量名称后面添加一个数字,使得所有变量名称都是唯一的。这样做可以避免后续数据分析中的命名冲突问题。

Preprocessing

sc.pl.highest_expr_genes(adata, n_top=20)

这行代码使用Scanpy库中的highest_expr_genes函数,对AnnData对象adata中的基因表达矩阵进行分析,并将分析结果以图形的形式展示出来。

该函数的参数包括:

  • adata:要分析的AnnData对象。
  • n_top:要显示的最高表达基因的数量,默认为20。

该函数的作用是显示具有最高表达水平的基因,它们通常是非常重要的基因,可能与特定细胞类型或生物学过程相关联。在图形中,基因按照表达水平从高到低排列,横坐标表示单个细胞,纵坐标表示基因表达水平,颜色表示不同基因的表达水平。可以通过观察这个图形,了解每个细胞中哪些基因表达水平最高,以及这些基因的表达模式是否存在差异。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函数,计算每个细胞的常规质控指标,包括:

  • total_counts:总基因表达量。
  • n_genes_by_counts:表达量不为零的基因数。
  • pct_counts_mt:线粒体基因表达量占比。
  • n_counts:UMI计数数目。

其中,参数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)

你可能感兴趣的:(scanpy,单细胞分析,笔记,python)