跳转至

743. 单细胞基因调控网络SCENIC+

一句话概述:整合单细胞RNA-seq和ATAC-seq数据,推断转录因子通过哪些增强子调控哪些靶基因——就像画出每个细胞里的"基因指挥链",知道谁下命令、通过什么渠道、指挥谁干活。


核心知识点速查表

概念白话解释关键工具
SCENIC从scRNA-seq推断转录因子-靶基因调控网络pySCENIC
SCENIC+整合scRNA-seq+scATAC-seq,加入增强子信息scenicplus
TF(转录因子)结合DNA调控基因表达的蛋白调控网络核心
Regulon一个TF+它调控的所有靶基因的集合AUCell评分
eRegulon增强子驱动的调控网络(SCENIC+特有)SCENIC+
Motif转录因子结合DNA的特征序列模式cisTarget
AUCell评估每个细胞中regulon活性的方法SCENIC/SCENIC+

一、原理(白话版)

1.1 SCENIC vs SCENIC+

SCENIC(经典版):
  scRNA-seq数据
  → 找基因共表达模块(GRNBoost2/GENIE3)
  → motif分析验证(cisTarget)
  → 确认regulon
  → 只知道:TF → 靶基因

SCENIC+(升级版):
  scRNA-seq + scATAC-seq
  → 找候选增强子(开放染色质区域)
  → motif分析找TF结合位点
  → 关联增强子和靶基因
  → 知道:TF → 增强子(enhancer) → 靶基因
  → 更完整的调控图谱!

1.2 为什么需要SCENIC+?

问题SCENICSCENIC+
调控元件只知道TF和靶基因还知道通过哪个增强子
数据来源只需scRNA-seq需要scRNA-seq+scATAC-seq
结果精度可能有假阳性增强子证据增加可靠性
应用范围基因调控推断还能预测TF敲除效果

二、pySCENIC分析流程(经典版)

2.1 安装

# 安装pySCENIC
conda create -n scenic python=3.8  # 创建环境
conda activate scenic
pip install pyscenic  # 安装pySCENIC

# 下载必需的数据库文件
# 1. TF列表
wget https://resources.aertslab.org/cistarget/tf_lists/allTFs_hg38.txt

# 2. motif排名数据库(约10GB)
wget https://resources.aertslab.org/cistarget/databases/homo_sapiens/hg38/refseq_r80/mc_v10_clust/gene_based/hg38_10kbp_up_10kbp_down_full_tx_v10_clust.genes_vs_motifs.rankings.feather

# 3. motif注释
wget https://resources.aertslab.org/cistarget/motif2tf/motifs-v10nr_clust-nr.hgnc-m0.001-o0.0.tbl

2.2 运行pySCENIC三步流程

# ===== pySCENIC标准流程 =====
import loompy as lp  # 导入loom文件处理
import pandas as pd
import scanpy as sc

# ===== 第一步:GRN推断(找共表达模块)=====
# 用GRNBoost2算法找共表达的TF-基因对

# 命令行方式(推荐,更快):
"""
pyscenic grn \
  expression.loom \           # 输入:表达矩阵(loom格式)
  allTFs_hg38.txt \           # TF列表
  -o adj.csv \                # 输出:TF-基因邻接矩阵
  --num_workers 8 \           # 使用8个线程
  --method grnboost2          # 使用GRNBoost2算法(比GENIE3快)
"""

# ===== 第二步:cisTarget motif富集(验证调控关系)=====
# 在共表达模块中,检查TF的结合motif是否真的富集在靶基因的启动子区

"""
pyscenic ctx \
  adj.csv \                   # 输入:第一步的邻接矩阵
  hg38_rankings.feather \     # motif排名数据库
  --annotations_fname motifs.tbl \  # motif注释文件
  --expression_mtx_fname expression.loom \  # 表达矩阵
  --output reg.csv \          # 输出:regulon文件
  --mask_dropouts \           # 忽略dropout(零值)
  --num_workers 8             # 线程数
"""

# ===== 第三步:AUCell评分(量化regulon活性)=====
# 对每个细胞计算每个regulon的活性得分

"""
pyscenic aucell \
  expression.loom \           # 输入:表达矩阵
  reg.csv \                   # 输入:regulon文件
  --output aucell.loom \      # 输出:含AUCell得分的loom文件
  --num_workers 8             # 线程数
"""

2.3 结果分析

# ===== 分析SCENIC结果 =====
import scanpy as sc
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 加载AUCell结果
adata = sc.read_loom("aucell.loom")  # 读取含AUCell得分的数据

# AUCell矩阵:行=细胞,列=regulon
# 值=该细胞中该regulon的活性得分

# 按细胞类型查看regulon活性
sc.tl.rank_genes_groups(
    adata,
    groupby="cell_type",  # 按细胞类型分组
    method="wilcoxon"     # Wilcoxon秩和检验
)

# 查看每种细胞类型的特征regulon
sc.pl.rank_genes_groups(
    adata,
    n_genes=10,  # 每组Top10
    save="regulon_markers.png"
)

# 绘制regulon活性热图
# 选择最有差异的regulon
top_regulons = []
for group in adata.obs["cell_type"].unique():
    result = sc.get.rank_genes_groups_df(adata, group=group)
    top_regulons.extend(result.head(5)["names"].tolist())
top_regulons = list(set(top_regulons))

sc.pl.heatmap(
    adata,
    var_names=top_regulons,  # 显示的regulon
    groupby="cell_type",     # 按细胞类型分组
    standard_scale="var",    # 标准化
    cmap="RdYlBu_r",
    save="regulon_heatmap.png"
)

三、SCENIC+分析流程

# ===== SCENIC+流程概述 =====
# SCENIC+需要同时有scRNA-seq和scATAC-seq数据

# 安装
# pip install scenicplus

# ===== 流程步骤 =====
"""
Step 1: 预处理
  - scRNA-seq: Scanpy标准流程
  - scATAC-seq: ArchR/Signac处理,找开放染色质peaks

Step 2: 候选增强子区域
  - 从scATAC-seq的peaks中识别候选增强子
  - 过滤启动子区域(TSS±2kb通常不算增强子)

Step 3: Motif富集
  - 在候选增强子中搜索TF结合motif
  - 使用cisTarget数据库

Step 4: 增强子-基因关联
  - 计算增强子accessibility和邻近基因表达的相关性
  - 相关性高 → 该增强子可能调控该基因

Step 5: 构建eRegulon
  - TF → (通过motif结合)增强子 → (通过相关性)靶基因
  - 这就是增强子驱动的调控网络(eRegulon)

Step 6: eRegulon活性评分
  - 类似AUCell,为每个细胞评估eRegulon活性
"""

# 简化的SCENIC+运行代码
import scenicplus  # 导入SCENIC+

# 具体实现因版本差异较大,建议参考官方教程
# https://scenicplus.readthedocs.io/

四、常见报错与解决

报错信息原因解决方案
GRNBoost2: memory error基因数太多预过滤到3000-5000高变基因
cisTarget: no motifs found数据库版本不匹配确认物种和基因组版本匹配
AUCell: all zerosregulon太小或表达太低过滤regulon(至少20个靶基因)
loom file: corruptedloom文件损坏重新生成或用h5ad格式替代
pyscenic ctx: timeout数据库太大加载慢增加内存或使用SSD
SCENIC+: dimension mismatchRNA和ATAC的细胞不匹配确保使用相同的细胞barcode

五、面试高频问题

Q1: SCENIC的三步流程是什么?

A: ①GRN推断:用GRNBoost2找TF和共表达基因;②cisTarget motif验证:在靶基因启动子区搜索TF结合motif,保留有motif支持的TF-基因对,形成regulon;③AUCell评分:用排名方法为每个细胞计算每个regulon的活性。

Q2: Regulon是什么?

A: 一个regulon = 一个转录因子 + 它直接调控的所有靶基因的集合。命名方式:TF名+(靶基因数),如"SOX2(+)(83g)"表示SOX2激活83个靶基因。

Q3: SCENIC+比SCENIC好在哪?

A: SCENIC只用转录组数据,只能推断TF→靶基因关系。SCENIC+加入ATAC-seq数据,可以知道TF通过哪个增强子调控靶基因(TF→增强子→靶基因),并且增强子的染色质开放性提供了额外的证据层。


六、速查表

# ===== SCENIC速查 =====

# 安装
pip install pyscenic

# 三步流程
pyscenic grn expression.loom TFs.txt -o adj.csv --method grnboost2
pyscenic ctx adj.csv rankings.feather --annotations motifs.tbl -o reg.csv
pyscenic aucell expression.loom reg.csv -o aucell.loom

# 必需数据库文件
# 1. TF列表: allTFs_hg38.txt
# 2. Rankings: hg38_rankings.feather (~10GB)
# 3. Motif注释: motifs.tbl

# 结果解读
# Regulon = TF + 靶基因集合
# AUCell score = 每个细胞中regulon的活性(0-1)
# 高AUCell → 该TF在该细胞中活跃

# SCENIC+ 额外需要
# scATAC-seq数据(peak矩阵)
# 输出:eRegulon = TF → 增强子 → 靶基因