scanpy计算n_genes_by_counts和total_counts等质量控制指标
利用scanpy的calculate_qc_metrics函数计算adata的obs中的质量控制指标(n_genes_by_counts,total_counts等参数指标)
⚠️注意:只是计算相关质量控制指标,并不会筛选/过滤数据。
类似代码:Dandelion库的ddl.pp.recipe_scanpy_qc(adata)
似乎也能达到相同效果。
导入
需要用的包:scanpy和anndata
导入包和读取adata数据
import anndata
import scanpy as sc
import pandas as pd
import numpy as np
adata=anndata.read(file_address)
print(adata)
print(adata.obs)
相关质量控制指标含义:
(1)obs
-
n_genes_by_count:细胞中计数呈阳性的基因数量。(一个细胞中有多少种基因。)
-
total_counts:细胞的计数总数(该细胞的基因总数),这也可能称为库大小。
-
pct_counts_mt:线粒体细胞总数的比例。
(2)var
- n_cells_by_counts:所有细胞中表达该基因的细胞数目
- mean_counts:所有细胞中该基因表达的平均值
- pct_dropout_by_counts:未表达该基因的细胞占细胞总数的百分比
- total_counts:所有细胞中,基因的表达量总和
使用方法
- 计算质量控制指标
n_genes_by_counts
,total_counts
等参数指标:log1p=False
sc.pp.calculate_qc_metrics(adata, percent_top=None, log1p=False, inplace=True)
print(adata)
print(adata.obs)
- 如果需要log1p变换,即
log1p_n_genes_by_counts
和log1p_total_counts
参数指标:log1p=True
sc.pp.calculate_qc_metrics(adata, percent_top=None, log1p=True, inplace=True)
print(adata)
print(adata.obs)
- 如果需要计算线粒体基因的表达量,即
total_counts_mt
和pct_counts_mt
参数指标:qc_vars=["mt"]
adata.var有个字段为"mt" 用于判断基因是否为线粒体基因,将会增加三个指标:
- total_counts_mt : 细胞中线粒体基因表达量总和
- log1p_total_counts_mt: log1p(细胞中线粒体基因表达量总和)
- pct_counts_mt: 细胞中线粒体基因表达量总和 占 总基因表达和的百分比
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)
print(adata)
print(adata.obs)