个人推荐指数:⭐️⭐️⭐️⭐️

scPairing 简介

scPairing 是一个基于变分自编码器(VAE)的单细胞多组学数据整合与生成框架,能够将不同模态的单细胞数据(如 RNA、ATAC、蛋白质)整合到共同的嵌入空间,并通过”桥接整合”(bridge integration)方法生成高质量的人工多组学数据。该工具由加拿大不列颠哥伦比亚大学(University of British Columbia)的 Jeffrey Niu 和 Jiarui Ding 开发,发表于 Cell Reports Methods(2025年11月)。

scPairing 的核心能力包括:

  • 跨模态数据整合:将 RNA-seq、ATAC-seq、蛋白质等不同模态的单细胞数据整合到统一的嵌入空间
  • 人工多组学数据生成:通过桥接整合方法,从单模态数据生成高质量的配对多组学数据
  • 三模态扩展:支持同时整合三种模态(RNA + ATAC + 蛋白质)的数据
  • 生物学结构保持:生成的数据能够保持粗粒度和细粒度的生物学结构

scPairing 的主要应用场景:

  • 利用少量配对的多组学数据作为”桥接”,将大量单模态数据整合生成人工多组学数据
  • 发现跨模态的生物学关系和调控网络
  • 在缺乏真实多组学数据的情况下进行假设验证
  • 降低多组学实验的成本,提高数据利用率

方法原理

核心思想

scPairing 的核心思想是利用少量配对的多组学数据作为”桥接”(bridge),学习不同模态之间的对应关系,然后将这种关系应用到大量的单模态数据上,生成人工配对的多组学数据。

传统的多组学技术(如 SHARE-seq、10x Multiome)虽然能够同时测量多种模态,但存在以下问题:

  • 成本高昂,限制了样本量和数据规模
  • 数据质量通常低于单模态技术
  • 可用的多组学数据集数量有限

scPairing 通过以下策略解决这些问题:

  1. 使用少量高质量的配对多组学数据训练模型
  2. 将大量单模态数据投影到共同的嵌入空间
  3. 通过相似度匹配生成人工配对数据
  4. 生成的数据可用于下游分析,如细胞类型注释、调控网络推断等

模型架构

scPairing 采用增强的变分自编码器(VAE)架构,结合对比学习和对抗训练,包含以下核心组件:

编码器(Encoder)

  • 模态特异性编码器:每个模态有独立的编码器网络,将低维表示映射到潜在空间
  • 共享超球面嵌入空间:不同模态的编码器输出映射到同一个超球面 S^(d-1)
  • 参数化:编码器输出潜在变量的均值 μ 和方差 σ²
  • 输入:来自 PCA、LSI、scVI、scGPT 等方法的低维表示(20-50 维)
  • 网络结构:单层神经网络,128 单元,ELU 激活,层归一化

解码器(Decoder)

  • 模态特异性解码器:每个模态有独立的解码器网络,从潜在空间重构低维表示
  • 跨模态生成:可以使用一个模态的潜在表示通过另一个模态的解码器生成数据
  • 支持预训练解码器或从头学习的解码器
  • 网络结构:单层神经网络,128 单元,ELU 激活,层归一化

模态判别器(Modality Discriminator)

  • 功能:区分嵌入向量来自哪个模态(RNA 或 ATAC)
  • 输入:超球面上的嵌入向量 μ_RNA 或 μ_ATAC
  • 输出:标量值 ∈ [0,1],表示来自 RNA 模态的概率
  • 网络结构:单层神经网络,128 单元,ELU 激活,层归一化
  • 作用机制:
    • 判别器试图正确分类嵌入的模态来源
    • 编码器通过对抗训练”欺骗”判别器
    • 使得不同模态的嵌入在潜在空间中无法被区分
    • 增强跨模态对齐效果

批次判别器(Batch Discriminator)

  • 功能:识别嵌入向量来自哪个批次
  • 输入:嵌入向量 μ_RNA 或 μ_ATAC
  • 输出:B 维向量 ∈ [0,1]^B,表示来自每个批次的概率(B 为批次数)
  • 网络结构:单层神经网络,128 单元,ELU 激活,层归一化
  • 作用机制:
    • 判别器试图识别嵌入的批次来源
    • 编码器通过对抗训练”欺骗”判别器
    • 消除嵌入中的批次效应
    • 防止细胞按批次过度分离,同时保持生物学结构

损失函数

scPairing 的损失函数包含多个部分,形成了一个增强的 VAE 目标函数:

  1. 重构损失(Reconstruction Loss)

    • 确保模型能够准确重构输入数据
    • 对于 RNA 数据使用负二项分布(Negative Binomial)
    • 对于 ATAC 数据使用伯努利分布(Bernoulli)
    • 对于蛋白质数据使用负二项分布
  2. KL 散度损失(KL Divergence Loss)

    • 约束潜在空间分布接近标准正态分布
    • 防止过拟合,提高泛化能力
  3. 对比学习损失(Contrastive Loss)

    • 受 CLIP(Contrastive Language-Image Pre-training)启发
    • 鼓励同一细胞的不同模态嵌入在超球面上接近
    • 同时推开不同细胞的嵌入
    • 最大化匹配细胞对的余弦相似度,最小化非匹配细胞对的相似度
  4. 模态判别损失(Modality Discriminator Loss, L_D)

    • 引入判别器神经网络 h: S^(d-1) → [0,1]
    • 判别器接收嵌入向量(μ_RNA 或 μ_ATAC),输出其来自 RNA 模态的概率
    • RNA 和 ATAC 编码器被训练来”欺骗”判别器
    • 目标:使判别器无法区分 RNA 嵌入和 ATAC 嵌入
    • 这是一个对抗性目标,进一步增强模态对齐
  5. 批次判别损失(Batch Discriminator Loss, L_B)

    • 在批次效应显著的数据集中,对比损失可能导致细胞按批次过度分离
    • 引入另一个判别器神经网络 b: S^(d-1) → [0,1]^B(B 为批次数)
    • 该判别器预测每个嵌入来自哪个批次
    • RNA 和 ATAC 编码器被训练来”欺骗”这个判别器
    • 使用 B 类交叉熵损失
    • 目标:消除嵌入中的批次效应
  6. 余弦相似度对齐损失(Cosine Similarity Alignment Loss, L_A)

    • 额外的对齐约束,确保配对细胞的嵌入方向一致
    • 只专注于拉近正样本本身,作为对比学习损失的补充
    • 消融实验证明其显著增加了成功配对的细胞数量

总损失函数可表示为:

L = L_ELBO + L_contrastive + L_D + L_B + L_A

其中:

  • L_ELBO = L_recon + β * L_KL(标准 VAE 损失)
  • L_contrastive:对比学习损失
  • L_D:模态判别损失
  • L_B:批次判别损失
  • L_A:余弦相似度对齐损失

具体步骤

步骤 1:训练桥接模型

  • 使用少量配对的多组学数据训练 scPairing 模型
  • 模型学习将不同模态映射到共同的嵌入空间
  • 两步训练过程:
    1. 固定编码器和解码器,更新判别器参数(最大化判别准确率)
    2. 固定判别器,更新编码器和解码器参数(最小化总损失,包括”欺骗”判别器)

步骤 2:投影单模态数据

  • 将大量单模态数据通过训练好的编码器投影到共同的嵌入空间
  • 对于模态 1 的数据,使用模态 1 的编码器获得嵌入 Z1
  • 对于模态 2 的数据,使用模态 2 的编码器获得嵌入 Z2

步骤 3:计算相似度矩阵

  • 计算两个模态嵌入之间的余弦相似度矩阵 S
  • S[i,j] 表示模态 1 的第 i 个细胞与模态 2 的第 j 个细胞的相似度

步骤 4:最大权重二部图匹配

  • 使用匈牙利算法(Hungarian algorithm)求解最大权重二部图匹配问题
  • 找到使总相似度最大的配对方案
  • 设置相似度阈值(如 0.8),过滤掉低相似度的配对

步骤 5:生成人工多组学数据

  • 根据匹配结果重新排列单模态数据
  • 配对的细胞组合成人工多组学数据

三模态扩展

scPairing 可以扩展到三模态数据(triscPairing),同时整合 RNA、ATAC 和蛋白质数据。

架构调整

  • 三个模态特异性编码器(RNA、ATAC、蛋白质)
  • 三个模态特异性解码器
  • 共享的超球面嵌入空间

训练策略

  1. 成对对比损失(Pairwise CLIP Loss)

    • 对于三个模态 m₁, m₂, m₃,需要计算三对模态之间的对比损失
    • L_CLIP = L_CLIP^(m₁,m₂) + L_CLIP^(m₁,m₃) + L_CLIP^(m₂,m₃)
    • 每一对模态都使用标准的 CLIP 对比损失
    • 确保任意两个模态的嵌入都能对齐
  2. 模态判别损失扩展

    • 模态判别器从二分类扩展为多分类
    • 判别器 h: S^(d-1) → [0,1]³
    • 输出三个概率值,分别表示嵌入来自 RNA、ATAC 或蛋白质模态
    • 三个编码器都被训练来”欺骗”判别器
  3. 批次判别损失

    • 批次判别器同样应用于所有三个模态的嵌入
    • 计算所有模态嵌入的批次预测损失
    • L_B = (1/N) Σᵢ Σₘ CE(bᵢ, b̂(μᵢᵐ))
    • 其中 m ∈ {RNA, ATAC, 蛋白质}
  4. 总损失函数

    • L_total = L_ELBO + Σ_(m₁,m₂) L_CLIP^(m₁,m₂) + L_D + L_B + L_A
    • 包含所有模态对的对比损失

支持的数据类型

  • 完整三模态配对数据(如 TEA-seq)
  • 部分配对数据(如只有 RNA+ATAC 或 RNA+蛋白质配对)
  • 可以处理缺失模态的情况

桥接整合

  • 可以从三个单模态数据集生成三模态配对数据
  • 也可以从双模态数据和单模态数据生成三模态数据
  • 使用贪心算法求解三模态匹配问题(因为不存在高效的最优算法)

三模态配对算法

  • 对于三模态数据,线性和分配问题变为 NP-hard
  • 使用随机贪心算法(randomized greedy algorithm)生成配对
  • 算法迭代地选择相似度最高的三元组进行配对

技术实现细节

网络结构

编码器网络

  • 输入层:低维表示(来自 PCA、LSI、scVI 等方法)
  • 隐藏层:单层神经网络,128 个单元
  • 激活函数:指数线性单元(ELU)
  • 归一化:层归一化(Layer Normalization)
  • 输出层:输出潜在变量的均值 μ 和方差 σ²
  • 嵌入空间:超球面(hypersphere)S^(d-1)

解码器网络

  • 输入层:潜在变量维度
  • 隐藏层:单层神经网络,128 个单元
  • 激活函数:指数线性单元(ELU)
  • 归一化:层归一化
  • 输出层:输出重构数据的参数
  • 支持预训练解码器或从头学习的解码器

模态判别器网络(h)

  • 输入:嵌入向量 μ_RNA 或 μ_ATAC(来自超球面 S^(d-1))
  • 隐藏层:单层神经网络,128 个单元
  • 激活函数:指数线性单元(ELU)
  • 归一化:层归一化
  • 输出:标量值 ∈ [0,1],表示来自 RNA 模态的概率
  • 作用:区分 RNA 嵌入和 ATAC 嵌入

批次判别器网络(b)

  • 输入:嵌入向量 μ_RNA 或 μ_ATAC
  • 隐藏层:单层神经网络,128 个单元
  • 激活函数:指数线性单元(ELU)
  • 归一化:层归一化
  • 输出:B 维向量 ∈ [0,1]^B,表示来自每个批次的概率(B 为批次数)
  • 作用:识别嵌入来自哪个批次,用于消除批次效应

三模态扩展

  • 对于三模态数据,模态判别器从二分类扩展为三分类
  • 判别器输出维度从 [0,1] 变为 [0,1]^3
  • 批次判别器同样适用于所有三个模态的嵌入

数据预处理

scPairing 的一个重要特点是接受低维表示作为输入,而不是原始计数数据。这提供了灵活性和计算效率。

RNA-seq 数据预处理

  1. 使用模态特异性方法计算低维表示:
    • PCA(主成分分析)
    • scVI(单细胞变分推断)
    • scGPT(单细胞 GPT 模型)
    • CellPLM(细胞预训练语言模型)
  2. 典型维度:20-50 维
  3. 可选择是否在低维表示中进行批次校正(如使用 Harmony)

ATAC-seq 数据预处理

  1. 使用模态特异性方法计算低维表示:
    • LSI(潜在语义索引)
    • PeakVI(峰变分推断)
    • Harmony 校正的 LSI
  2. 典型维度:20-50 维
  3. 峰矩阵通常先进行 TF-IDF 转换

蛋白质数据预处理

  1. 对原始计数进行归一化
  2. 使用 PCA 或其他降维方法
  3. 典型维度:10-30 维(蛋白质特征数量较少)

低维表示的优势

  • 计算效率高:scPairing 参数量少,训练速度快
  • 灵活性强:可以选择不同的批次校正策略
  • 模态对齐更容易:低维空间中找到对齐比高维原始数据更简单
  • 可利用预训练模型:如 scGPT、CellPLM 等大型预训练模型的嵌入

训练配置

超参数设置

  • 潜在空间维度:通常设为 10-50
  • 隐藏层单元数:128(所有网络组件统一)
  • 学习率:1e-3 到 1e-4
  • 批次大小:128 或 256
  • 训练轮数:根据验证集损失确定,通常 50-200 轮

损失权重

  • β(KL 权重):0.1 到 1.0
  • 模态判别损失权重:可调节,过高会影响性能
  • 批次判别损失权重:可调节,过高会影响性能
  • 余弦相似度对齐损失权重:对性能影响较小

优化器

  • 使用 Adam 优化器
  • 两步训练过程:
    1. 更新判别器参数(最大化 L_D 和 L_B)
    2. 更新编码器和解码器参数(最小化总损失)

早停策略

  • 监控验证集损失
  • 如果验证集损失连续多轮不下降则停止训练

敏感性分析结果

  • 余弦相似度对齐损失权重对性能影响不大
  • 模态判别损失和批次判别损失在高权重时会降低性能
  • 当前默认权重设置在多个数据集上表现良好

评估指标

整合质量评估

  • 批次混合度(Batch mixing):使用 kBET、LISI 等指标
  • 生物学保持度(Bio-conservation):使用 ARI、NMI 等指标
  • 可视化:使用 UMAP 或 t-SNE 可视化嵌入空间

生成质量评估

  • 与真实多组学数据的相似度
  • 下游任务性能(如细胞类型注释准确率)
  • 跨模态相关性保持

性能评估

数据集

scPairing 在多个公开数据集上进行了评估:

双模态数据集

  • 10x Multiome PBMC:人类外周血单核细胞的 RNA + ATAC 数据
  • SHARE-seq 小鼠皮肤:小鼠皮肤的 RNA + ATAC 数据
  • CITE-seq PBMC:人类外周血单核细胞的 RNA + 蛋白质数据

三模态数据集

  • TEA-seq 骨髓:人类骨髓的 RNA + ATAC + 蛋白质数据

单模态数据集

  • 大规模 scRNA-seq 数据集
  • 大规模 scATAC-seq 数据集

整合性能

scPairing 在整合质量上优于现有方法,能够更好地混合不同批次的数据,同时保持生物学结构。

生成质量

与真实多组学数据的比较

  • 生成的人工多组学数据与真实多组学数据在细胞类型分布、基因表达模式、染色质可及性模式上高度一致
  • 跨模态相关性(如基因表达与启动子可及性的相关性)得到良好保持

下游任务性能

  • 使用生成的数据进行细胞类型注释,准确率达到 90% 以上
  • 使用生成的数据推断基因调控网络,与真实数据推断的网络高度重合

三模态整合

在 TEA-seq 骨髓数据集上的评估:

  • 成功整合 RNA、ATAC 和蛋白质三种模态
  • 生成的三模态数据能够揭示三种模态之间的复杂关系
  • 发现了新的跨模态生物学关联

可扩展性

scPairing 在计算效率上表现良好:

  • 训练时间:在 10,000 个细胞的数据集上训练约 30 分钟(使用单个 GPU)
  • 推理时间:投影 100,000 个细胞到嵌入空间约 5 分钟
  • 内存占用:适中,可在标准工作站上运行

安装和使用

安装方法

从 GitHub 安装:

1
2
3
4
5
# 基础安装
pip install git+https://github.com/Ding-Group/scPairing.git

# 包含教程依赖的安装
pip install "scPairing[tutorials]@git+https://github.com/Ding-Group/scPairing.git"

基本使用

步骤 1:准备数据

1
2
3
4
5
6
7
8
9
10
import scanpy as sc
import anndata as ad

# 加载配对的多组学数据(桥接数据)
rna_bridge = sc.read_h5ad('rna_bridge.h5ad')
atac_bridge = sc.read_h5ad('atac_bridge.h5ad')

# 加载单模态数据
rna_query = sc.read_h5ad('rna_query.h5ad')
atac_query = sc.read_h5ad('atac_query.h5ad')

步骤 2:训练 scPairing 模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from scPairing import scPairing

# 初始化模型
model = scPairing(
rna_bridge,
atac_bridge,
latent_dim=20,
hidden_dim=256,
n_layers=2
)

# 训练模型
model.train(
n_epochs=100,
lr=1e-3,
batch_size=128
)

步骤 3:投影单模态数据到嵌入空间

1
2
3
4
5
# 投影 RNA 数据
_, rna_latents = model.get_cross_modality_expression(True, rna_query)

# 投影 ATAC 数据
_, atac_latents = model.get_cross_modality_expression(False, atac_query)

步骤 4:执行桥接整合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from sklearn.metrics.pairwise import cosine_similarity
from scipy.optimize import linear_sum_assignment

# 计算相似度矩阵
sim_matrix = cosine_similarity(rna_latents, atac_latents)

# 设置相似度阈值
CUTOFF = 0.8
sim_matrix[sim_matrix < CUTOFF] = 0

# 最大权重二部图匹配
rna_ind, atac_ind = linear_sum_assignment(sim_matrix, maximize=True)

# 过滤低相似度配对
use = sim_matrix[rna_ind, atac_ind] != 0

# 生成配对数据
paired_rna = rna_query[rna_ind[use]]
paired_atac = atac_query[atac_ind[use]]

步骤 5:下游分析

1
2
# 使用生成的多组学数据进行下游分析
# 例如:细胞类型注释、调控网络推断等

三模态使用

1
2
3
4
5
6
7
8
9
10
11
12
from scPairing import triscPairing

# 初始化三模态模型
model = triscPairing(
rna_bridge,
atac_bridge,
protein_bridge,
latent_dim=20
)

# 训练和使用方法与双模态类似
model.train(n_epochs=100)

应用案例

案例 1:视网膜细胞多组学数据生成

研究团队使用 scPairing 从大规模的视网膜 scRNA-seq 和 scATAC-seq 数据生成了人工多组学数据:

  • 使用少量 SHARE-seq 视网膜数据作为桥接
  • 整合了超过 100,000 个细胞的单模态数据
  • 生成的数据揭示了视网膜细胞类型特异性的基因调控网络
  • 发现了新的转录因子-靶基因关系

案例 2:免疫细胞三模态数据生成

使用 TEA-seq 骨髓数据作为桥接,生成了大规模的三模态免疫细胞数据:

  • 整合了 RNA、ATAC 和表面蛋白质三种模态
  • 揭示了免疫细胞分化过程中的多层次调控机制
  • 发现了表面标记物、基因表达和染色质状态之间的关联

案例 3:肾脏细胞跨物种整合

使用 scPairing 整合了人类和小鼠的肾脏单细胞数据:

  • 识别了保守的细胞类型和调控程序
  • 发现了物种特异性的基因调控差异
  • 为肾脏疾病研究提供了跨物种比较的基础

优势与局限

优势

  1. 数据效率高:只需少量配对数据即可生成大规模人工多组学数据
  2. 生成质量好:生成的数据在多个评估指标上接近真实多组学数据
  3. 灵活性强:支持双模态和三模态数据,可适应不同的数据类型
  4. 计算效率高:训练和推理速度快,可在标准硬件上运行
  5. 易于使用:提供了清晰的 API 和详细的教程

局限

  1. 依赖桥接数据质量:如果桥接数据质量差或代表性不足,生成的数据质量会受影响
  2. 相似度阈值选择:需要手动设置相似度阈值,可能影响配对结果
  3. 批次效应:如果单模态数据存在严重的批次效应,可能影响整合效果
  4. 模态特异性:不同模态的数据特性差异较大时,整合难度增加
  5. 验证困难:生成的人工数据难以与真实数据完全对应,验证其生物学准确性具有挑战性

与其他方法的比较

特性 scPairing Seurat v4 Harmony scVI MOFA+
多组学整合 支持 支持 有限 支持 支持
数据生成 支持 不支持 不支持 有限 不支持
三模态支持 支持 有限 不支持 不支持 支持
桥接整合 支持 不支持 不支持 不支持 不支持
计算效率
易用性

scPairing 的独特优势在于其桥接整合能力,能够利用少量配对数据生成大规模人工多组学数据,这是其他方法所不具备的。


代码可用性

scPairing 的代码已在 GitHub 上开源:

代码结构:

  • src/scPairing/:核心代码
  • docs/:API 文档
  • tutorials/:使用教程
  • pyproject.tomlsetup.cfg:安装配置文件

总结

scPairing 是一个创新的单细胞多组学数据整合与生成框架,通过桥接整合方法解决了多组学数据稀缺和成本高昂的问题。其主要创新点包括:

  1. 桥接整合策略:利用少量配对数据作为桥接,生成大规模人工多组学数据
  2. 增强的 VAE 架构:将不同模态映射到共同的超球面嵌入空间,保持生物学结构
  3. 对比学习:受 CLIP 启发,使用对比损失对齐不同模态的嵌入
  4. 对抗性训练
    • 模态判别器:确保 RNA 和 ATAC 嵌入无法被区分,增强模态对齐
    • 批次判别器:消除嵌入中的批次效应,防止细胞按批次过度分离
  5. 低维表示输入:接受来自 PCA、LSI、scVI、scGPT 等方法的低维表示,提高计算效率
  6. 三模态扩展:支持同时整合三种模态的数据
  7. 高质量生成:生成的数据在多个评估指标上接近真实多组学数据

scPairing 为单细胞多组学研究提供了一个实用的工具,特别适合以下场景:

  • 缺乏大规模多组学数据但有丰富的单模态数据
  • 需要探索跨模态的生物学关系
  • 希望降低多组学实验成本
  • 需要验证生物学假设但缺乏实验数据
  • 需要消除批次效应同时保持生物学结构

随着单细胞技术的发展,scPairing 有望在多组学数据整合和生成领域发挥重要作用。


个人点评

和我的方法不能说是高度相似,简直可以说是英雄所见略同啊!但不同的地方有以下几点:

  1. 最重要的:scPairing必须需要配对数据
  2. scPairing 的编码器的输入也是低维嵌入,解码器的输出是高维的原始数据,这使得它可以具有生成能力
  3. 在使用单细胞多组学数据作为“桥梁”训练后,使用二部图匹配,能够生成人工配对多组学数据(artificially paired multiomics data)
  4. 引入了批次判别器+模态判别器,以更好地混合批次与模态。但我个人觉得可能会引入过矫正的问题
  5. 额外引入了余弦相似度对齐损失,据称可以提高细胞配对成功率
  6. 实现了三组学整合和生成
  7. 在图谱级数据上做了实验,这个工作量确实不小。
  8. 感觉它做的也还是比较全面的,图也不错,个人认为值得更好的期刊,最后发了个CRM,我也不亏0.0
  9. 补充一点:它利用金标准的配对数据进行学习,不存在 ATAC-RNA 时空不匹配的问题,避免了纯算法配对的这一硬伤局限性。

相关链接