【生物信息学】scRNA-seq数据分析(一):质控~细胞筛选~高表达基因筛选

文章目录

  • 一、实验介绍
  • 二、实验环境
    • [1. 配置虚拟环境](#1. 配置虚拟环境)
    • [2. 库版本介绍](#2. 库版本介绍)
  • 三、实验内容
    • [0. 导入必要的库](#0. 导入必要的库)
    • [1. 质控](#1. 质控)
    • [2. 细胞筛选](#2. 细胞筛选)
    • [3. 高表达基因筛选](#3. 高表达基因筛选)

一、实验介绍

质控~ 细胞筛选 ~高表达基因筛选

二、实验环境

1. 配置虚拟环境

可使用如下指令:

bash 复制代码
conda create -n bio python==3.9
bash 复制代码
conda activate bio
bash 复制代码
pip install -r requirements.txt

其中,requirements.txt:

bash 复制代码
numpy==1.21.5
pandas==1.4.4
scanpy==1.9.6

2. 库版本介绍

软件包 本实验版本
numpy 1.21.5
pandas 1.4.4
python 3.8.16
scanpy 1.9.6
scipy 1.10.1
seaborn 0.12.2

三、实验内容

0. 导入必要的库

python 复制代码
import numpy as np
import pandas as pd
import scanpy as sc
  • Scanpy是一个用于单细胞RNA测序数据分析的Python库,提供了许多功能和工具来处理和分析单细胞数据

1. 质控

python 复制代码
# 设置Scanpy参数
sc.settings.verbosity = 3
sc.logging.print_header()
sc.settings.set_figure_params(dpi=80, facecolor='white')

# 定义结果文件路径
results_file = 'write/pbmc3k.h5ad'

# 读取单细胞数据
adata = sc.read_10x_mtx(
    'data/filtered_gene_bc_matrices/hg19/',  # 数据目录
    var_names='gene_symbols',                # 使用基因符号作为变量名
    cache=True)                              # 写入缓存文件以便后续更快读取

# 确保基因名唯一
adata.var_names_make_unique()

# 绘制展示高度表达的基因
sc.pl.highest_expr_genes(adata, n_top=20)

2. 细胞筛选

python 复制代码
# 过滤细胞和基因
sc.pp.filter_cells(adata, min_genes=200)
sc.pp.filter_genes(adata, 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)

# 绘制质量控制指标的小提琴图和散点图
sc.pl.violin(adata, ['n_genes_by_counts', 'total_counts', 'pct_counts_mt'], jitter=0.4, multi_panel=True)
sc.pl.scatter(adata, x='total_counts', y='pct_counts_mt')
sc.pl.scatter(adata, x='total_counts', y='n_genes_by_counts')



3. 高表达基因筛选

python 复制代码
# 进一步的过滤和归一化
adata = adata[adata.obs.n_genes_by_counts < 2500, :]
adata = adata[adata.obs.pct_counts_mt < 5, :]

# 总计数归一化
sc.pp.normalize_total(adata, target_sum=1e4)

# 对数变换
sc.pp.log1p(adata)

# 特征选择:识别高度变异的基因
sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)

# 绘制高度变异基因的图
sc.pl.highly_variable_genes(adata)

# 设置.raw属性
adata.raw = adata

# 实际过滤数据
adata = adata[:, adata.var.highly_variable]

# 数据回归处理和标准化
sc.pp.regress_out(adata, ['total_counts', 'pct_counts_mt'])
sc.pp.scale(adata, max_value=10)
相关推荐
归去_来兮3 天前
拉格朗日插值算法原理及简单示例
算法·数据分析·拉格朗日插值
NineData6 天前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析
Duang8 天前
从零推导指数估值模型 —— 一个三因子打分系统的设计思路
数据分析·领域驱动设计
Sylvia33.12 天前
火星数据:解构斯诺克每一杆进攻背后的数字语言
java·前端·python·数据挖掘·数据分析
Flying pigs~~12 天前
机器学习之逻辑回归
人工智能·机器学习·数据挖掘·数据分析·逻辑回归
YangYang9YangYan12 天前
2026中专计算机专业学数据分析的实用价值分析
数据挖掘·数据分析
YangYang9YangYan12 天前
2026高职大数据管理与应用专业学数据分析的价值与前景
数据挖掘·数据分析
babe小鑫12 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
赤月奇12 天前
https改为http
数据挖掘·https·ssl