当前位置: 首页 > news >正文

AF3 unify_alignment_db_indices脚本解读

AlphaFold3 unify_alignment_db_indices 脚本在源代码的scripts/alignment_db_scripts文件夹下。该脚本是统一多个对齐数据库索引文件(.index),生成一个总的索引文件 super.index,便于模型后续统一查找对齐数据。即把由多个 create_alignment_db.py 脚本生成的 .index 索引文件合并成一个统一的大索引。

源代码:

import argparse
import json
import os
""" Unifies databases created with create_alignment_db.py """def main(args):super_index = {}for f in os.listdir(args.alignment_db_dir):if not os.path.splitext(f)[-1] == ".index":continuewith open(os.path.join(args.alignment_db_dir, f), "r") as fp:index = json.load(fp)db_name = f"{os.path.splitext(f)[0]}.db"for k in index:super_index[k] = {"db": db_name,"files": index[k],}with open(os.path.join(args.output_dir, "super.index"), "w") as fp:json.dump(super_index, fp)if __name__ == "__main__":parser = argparse.ArgumentParser()parser.add_argument("alignment_db_dir", type=str, help="Path to directory containing alignment_dbs")parser.add_argument("output_dir", type=str, help="Path in which to output super index")args = parser.parse_args()main(args)

代码解读:

核心逻辑:main(args)
def main(args):super_index = {}for f in os.listdir(args.alignment_db_dir):if not os.path.splitext(f)[-1] == ".index":continue
  • 遍历指定目录中所有文件

  • 筛选出 .index 结尾的索引文件(忽略其他文件,如 .db 数据文件)

加载每个 .index 并合并到 super_index
        with open(os.path.join(args.alignment_db_dir, f), "r") as fp:index = json.load(fp)db_name = f"{os.path.splitext(f)[0]}.db"for k in index:super_index[k] = {"db": db_name,"files": index[k],}
  • 读取单个 .index 文件,内容是 {chain_id: {"files": [...]}}

  • 从文件名推测该 .index 对应的 .db 数据文件名(例如 align_0.index → align_0.db

  • 构建统一格式:{chain_id: {"db": ..., "files": ...}}

  • 并合并到一个大的 super_index 中

写出 super.index
    with open(os.path.join(args.output_dir, "super.index"), "w") as fp:json.dump(super_index, fp)
  • 将所有链的统一索引写入新的文件 super.index

  • 格式为 JSON,内容类似:

  • {"1abc_A": {"db": "align_0.db","files": [["file1.a3m", 0, 1234],["file2.a3m", 1234, 5678]]},...
    }
    

    总结脚本功能

    步骤内容
    输入一个目录,包含多个 .index 和 .db 文件(由多个分片 create_alignment_db 脚本生成)
    操作遍历所有 .index 文件,合并它们
    输出一个统一的 super.index 文件,记录所有链的对齐数据在哪个 .db 中、偏移和大小
    用途模型/下游程序可以只加载 super.index 即可定位所有链的对齐数据位置

create_alignment_db_sharded.py脚本比较

比较项create_alignment_db_sharded.pyunify_alignment_db_indices
作用生成对齐数据分片 .db 文件,并同步构建 super_index合并已有的多个 .index 文件,生成一个统一的 super.index
是否生成 .db 文件✅ 是,生成 .db 数据文件❌ 否,只处理 .index
是否并行处理对齐数据✅ 是,支持多进程并发生成分片❌ 否,只是顺序合并索引文件
使用场景从原始 .a3m 对齐文件开始构建数据库(shard 数据 + 索引)多个已有 .db 分片 + .index 的二次整合场景(如多个任务/机器并行生成)
输入原始对齐数据目录(包含多个链文件夹)已生成的 .index 文件目录
输出.db 数据文件 + .index 文件 + super.index(统一索引)仅 super.index
http://www.xdnf.cn/news/36577.html

相关文章:

  • QT+Cmake+mingw32-make编译64位的zlib-1.3.1源码成功过程
  • Spring中的AOP基础理解
  • 探秘 C++ 内存管理:从虚拟内存到内存池的深度解析与实战应用
  • 【AI提示词】物理学家
  • 【信息系统项目管理师】高分论文:论信息系统项目的干系人管理(商业银行绩效考核系统)
  • 力扣算法ing(60 / 100)
  • 苍穹外卖项目中所涉及到的测试内容
  • 大模型Rag - 向量数据库索引
  • Docker应用端口查看器docker-port-viewer
  • 筑基挑战 | 第14期
  • 数字孪生火星探测车,星际探索可视化
  • 解码 Web Service:从技术原理到应用场景的深度剖析
  • 可以直接本地使用的Python环境可以调用的AI大模型归纳整理(AI辅助)
  • 如何防止接口被刷
  • 内积(Inner Product)
  • C#测试linq中的左连接的基本用法
  • 红黑树模拟实现STL中的map和set---C++
  • ThingsBoard3.9.1 MQTT Topic(3)
  • 【入门】数数小木块
  • OpenFeign终极指南:超时控制、重试策略、拦截器与自定义Starter
  • Stable Diffusion秋叶整合包V4独立版Python本地API连接指南
  • 《Operating System Concepts》阅读笔记:p738-p747
  • 《C#数据结构与算法》—集合、映射
  • 基于Spring AI与OpenAI API的深度实践:调用DeepSeek模型构建智能应用全指南
  • Win10驱动程序强制签名怎么禁用/开启?
  • C++按位与()、按位或(|)和按位异或(^)
  • 并发网路通信-套接字通信
  • 【数学】数学分类
  • 日志分析---宝瓜Windows日志分析器
  • 什么是 Stream