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:所有细胞中,基因的表达量总和

使用方法

  1. 计算质量控制指标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)
  1. 如果需要log1p变换,即log1p_n_genes_by_countslog1p_total_counts参数指标:log1p=True
sc.pp.calculate_qc_metrics(adata, percent_top=None, log1p=True, inplace=True)
print(adata)
print(adata.obs)
  1. 如果需要计算线粒体基因的表达量,即total_counts_mtpct_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)
posted @ 2024-09-11 19:48  kingwzun  阅读(74)  评论(0编辑  收藏  举报