用途
RFD4-Proteína Commitment Curves 用于研究蛋白质设计模型在扩散生成过程中何时确定其最终输出。具体做法是:取一个已完成的设计,将其重新加噪到某个重启步,再次去噪,然后计算其指标与父代指标的相关性(ρ)。通过扫描不同的重启步,可以得到一条曲线,反映模型在哪个阶段“下定决心”。如果某个指标在第 25 步时 ρ 已达到 0.97,那么最后 75 步无法改变其排序,这意味着可以提前筛选。
主要能力
- 部分扩散扫描:对重启步进行网格扫描,生成承诺曲线。
- 父子相关性分析:计算子代与父代在指定指标上的相关性。
- 指标分布统计:在购买扫描之前,先了解每个指标的稀有程度,判断通过率。
- 保真度曲线:同时输出子代与父代的序列一致性和 CA RMSD 中位数曲线。
- 配置生成:通过一个 spec 文件生成 phase1、sweep 和 analysis 所需的全部配置。
使用方式
所有命令从仓库根目录运行,参数采用 Hydra key=value 格式。主要步骤包括:
- 确定要跟踪的指标(最多三个,序列一致性和 CA RMSD 自动绘制)。
- 编写 spec 并生成配置:
python open-models-skills/rfd4-proteina/rfd4-proteina-commitment-curves/scripts/make_configs.py --spec my_study.yaml - 运行 Phase 1 获取父代:
./scripts/launch_generate.sh inference_experiment=<name>_phase1 --no-foldseek,或对已有设计进行离线评分。 - 分析指标分布:
python .../metric_distributions.py --metrics_csv ... --out_dir ... - 将父代整理到扁平目录。
- 运行 Phase 2 扫描重启步:
./scripts/launch_sweep.sh --sweep-config configs/sweeps/<name>.yaml --base-out-dir <out_root>/<name>_sweep --no-foldseek - 绘制承诺曲线:
python .../commitment_curve.py --sweep_csv ... --parent_csv ... --out_dir ... --nsteps 60 --metrics '...'
适用场景
- 需要判断蛋白质设计模型在扩散过程中何时确定关键指标,以便提前筛选。
- 需要评估部分扩散对设计保真度的影响。
- 需要了解各指标的通过率,以决定是否值得进行完整扫描。
- 适用于已有设计集或需要生成新设计的场景。
限制
- 相关性衡量的是跨父代的保留程度,而非生物学成功。
- 父代数量过少、指标随机性或条件不匹配可能导致解释无效。
- ρ 在干净端不一定达到 1,可能受指标自身可重复性上限影响。
- 需要检查子代的绝对值,部分重启步可能导致结构比全新运行更差。
- 需要结合保真度曲线和通过率综合解读。
可用脚本
scripts/make_configs.py:生成匹配的 phase 和 sweep 配置。参数:--spec;可选--repo_root、--dry_run。scripts/metric_distributions.py:绘制指标与标准的关系。参数:--metrics_csv、--out_dir;可选--pass_criteria。scripts/commitment_curve.py:绘制相关性和保真度曲线。参数:--sweep_csv、--parent_csv、--out_dir、--metrics。