【生物信息学】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)
相关推荐
一个专注api接口开发的小白13 分钟前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
前端·数据挖掘·api
ccut 第一混2 小时前
python基于机器学习进行数据处理与预测(火灾的三因素回归问题)
神经网络·机器学习·数据挖掘·回归·预测
极限实验室4 小时前
喜报!极限科技获得国际专利正式授权——美国发明专利《Data Partitioning Method and Data Processing Method》
数据挖掘
用户199701080184 小时前
抖音商品列表API技术文档
大数据·数据挖掘·数据分析
木木子99994 小时前
第5问 对于数据分析领域,统计学要学到什么程度?
数据挖掘·数据分析
胡耀超8 小时前
从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
人工智能·python·数据挖掘·大模型·特征工程·crisp-dm螺旋认知·批判性思维
赴33520 小时前
矿物分类案列 (一)六种方法对数据的填充
人工智能·python·机器学习·分类·数据挖掘·sklearn·矿物分类
专注API从业者1 天前
基于 Flink 的淘宝实时数据管道设计:商品详情流式处理与异构存储
大数据·前端·数据库·数据挖掘·flink
淡酒交魂1 天前
「Flink」业务搭建方法总结
大数据·数据挖掘·数据分析
TDengine (老段)1 天前
TDengine IDMP 高级功能(4. 元素引用)
大数据·数据库·人工智能·物联网·数据分析·时序数据库·tdengine