【生物信息学】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)
相关推荐
Xiu Yan1 小时前
Python 数据分析:数据分析步骤
开发语言·python·数据分析
对空六课1 小时前
Vue 组件曝光埋点为什么会重复触发?去重方案与实现思路
服务器·前端·算法·数据分析
Aloudata技术团队17 小时前
Metric Layer 建设指南:如何先从核心指标层启动企业语义工程
数据分析
2601_9669496518 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
专注API从业者21 小时前
告别复杂页面解析,OpenClaw 快速搭建电商商品监控与数据分析脚本
大数据·数据库·python·数据挖掘·数据分析
SelectDB21 小时前
Apache Doris x Fluss:面向湖流一体的统一查询与分析
大数据·数据库·数据分析
一只专注api接口开发的技术猿1 天前
Open‑Claw 实战|告别页面逆向,快速搭建电商商品监控与数据分析完整方案
大数据·数据库·python·数据挖掘·数据分析
真上帝的左手1 天前
27. 数据产品-数据中台架构规划
数据仓库·架构·数据分析·数据中台
lisw051 天前
大数据对大数据挖掘及其处理框架带来的挑战
大数据·人工智能·数据挖掘
派小心.1 天前
多端数据分析平台的漏斗可以跨端搭建吗?5 步搭出跨端转化漏斗
大数据·运维·服务器·前端·数据分析