返回列表

9th place solution - d4t4 team

669. Stanford RNA 3D Folding | stanford-rna-3d-folding

开始: 2025-02-27 结束: 2025-09-24 基因组学与生物信息 数据算法赛
第 9 名解决方案 - d4t4 团队

第 9 名解决方案 - d4t4 团队

副标题:适配的 ProteinX 模型

作者: Arunodhayan (及团队成员:hengck23, lhwcv, Pi)

发布时间: 2025-09-30

竞赛排名: 第 9 名

非常感谢 Kaggle 和竞赛主办方组织这次伟大的挑战,并给予我们参与的机会。

📂 数据集创建

我们通过合并几个互补的来源构建了训练数据集:

  • 斯坦福 RNA 3D 折叠竞赛数据 (Stanford RNA 3D Folding Competition Data)
    • 版本:v1 和 v2(v2 用作主要训练集)。
  • CASP16 顶级预测 (伪标签)
    • 我们将每个目标的 Top-1 预测结构作为伪标签包含在内。
  • RNA PDB 数据库(截止日期:2025 年 3 月 31 日)
    • 仅包含在 2025 年 3 月 31 日或之前发布的条目。

🧩 处理缺失残基

  • PDB 中具有未解析原子的残基保留在序列中,但在坐标中被掩码 (masked)。
  • 缺失的原子进行零填充或在损失计算中忽略。
  • 这确保了可靠的训练,同时不会丢失序列上下文。

🔁 多种构象

  • 对于某些数据集(PDB 和 CASP16),我们为每个 RNA 序列生成了多达 5 种构象。
  • 这些构象作为 (num_conf, seq_len, 3) 数组存储在数据集中。
  • 在训练期间,我们支持两种策略:
    1. 仅 Top-1 → 使用第一个构象作为确定性基线。
    2. 多构象采样 → 让模型接触所有 5 种构象,要么:
      • 作为 coordinate_multi 返回(所有构象一次性可用),或
      • 每个 epoch 随机选择一种构象,以便模型在训练过程中看到不同的结构。
  • 这种方法增加了结构多样性并提高了泛化能力,而无需改变整体数据集大小。

🔬 MSA 流程

  • 对于有进化信息可用的序列,我们将多序列比对 (MSA) 纳入训练。
  • 我们使用 MMseqs2 针对精选的 RNA 序列数据库构建 RNA MSA。
  • 预计算的 MSA 存储在专用目录中,并在训练期间链接。
  • 对于没有 MSA 覆盖的序列,流程回退到虚拟/无 MSA 特征,确保一致的输入格式。
  • 这种混合策略丰富了许多目标的结构上下文,并提高了保守 RNA 的准确性。

📊 最终输出

  • consolidated 合并了竞赛、CASP16 和 PDB 的序列数据集。
  • 对齐原子级标签,缺失残基被掩码,每个序列多达 5 种构象。
  • 为部分结构预计算了 MSA(通过 MMseqs2)。

⚙️ 训练配置

  • 硬件
    • GPU: NVIDIA H100 (96 GB)
    • 混合精度:bfloat16 (bf16)
  • 优化
    • 批量大小 (Batch size): 8
    • 最大步数 (Max steps): 12,000
    • 预热步数 (Warmup steps): 50
    • 学习率 (Learning rate): 1e-4
    • 裁剪大小 (Crop size): 800 个核苷酸
  • 采样
    • 扩散步数 (Diffusion steps): 20
  • 评估
    • 检查点间隔:每 2,000 步
    • 评估间隔:每 50,000 步
  • 特征
    • MSA 流程:对于有比对可用的序列,使用 MMseqs2 预计算。
    • 回退模式:当没有 MSA 覆盖时使用虚拟/无 MSA 特征。
    • 多构象:每个 RNA 序列包含多达 5 种构象。
    • 掩码残基:PDB 中未解析的残基被掩码以避免噪声监督。

构象选择策略

  • 为每个序列生成多种构象。
  • 步骤 1:按 pLDDT 分数(最高置信度)选择 Top-1 结构。
  • 步骤 2:从剩余预测中,使用 Kabsch RMSD 算法迭代选择最大化 RMSD 多样性的构象。
  • 最终输出:每个序列 Top-5 多样化构象。

📊 结果总结

模型 / 策略 序列长度 训练步数 分数
Protenix (标准) ≤ 800 8000 0.46388
Protenix + RibonanzaNet (混合,处理 >800) ≤ 800 + >800 8000 0.478
Protenix + Nufold (混合,处理 >800) ≤ 800 + >800 8000 0.479
  • 提交:单模型,无集成 → 排行榜得分 0.46388
同比赛其他方案