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

住房和城乡建设部网站北京企业网站 优秀

住房和城乡建设部网站北京,企业网站 优秀,合肥市住房和城乡建设厅网站,织梦网站建设考试AlphaFold3 create_alignment_db_sharded 脚本在源代码的scripts/alignment_db_scripts文件夹下。 该脚本中的 create_shard 函数的功能是将一部分链(shard_files)中的所有对齐文件写入一个 .db 文件,并返回这些链的索引信息(字节…

AlphaFold3 create_alignment_db_sharded 脚本在源代码的scripts/alignment_db_scripts文件夹下。 该脚本中的 create_shard 函数的功能是将一部分链(shard_files)中的所有对齐文件写入一个 .db 文件,并返回这些链的索引信息(字节偏移+长度+文件名)供上层构建 super index。

源代码:

def create_shard(shard_files: list[Path], output_dir: Path, output_name: str, shard_num: int
) -> dict:"""Creates a single shard of the alignment database, and returns thecorresponding indices for the super index."""CHUNK_SIZE = 200shard_index = defaultdict(create_index_default_dict)  # e.g. {chain_name: {db: str, files: [(file_name, db_offset, file_length)]}, ...}chunk_iter = chunked_iterator(shard_files, CHUNK_SIZE)pbar_desc = f"Shard {shard_num}"output_path = output_dir / f"{output_name}_{shard_num}.db"db_offset = 0db_file = open(output_path, "wb")for files_chunk in tqdm(chunk_iter,total=ceil(len(shard_files) / CHUNK_SIZE),desc=pbar_desc,position=shard_num,leave=False,):# get processed files for one chunkchunk_data = process_chunk(files_chunk)# write to db and store info in indexfor chain_name, file_data in chunk_data.items():shard_index[chain_name]["db"] = output_path.namefor file_name, file_bytes in file_data:file_length = len(file_bytes)shard_index[chain_name]["files"].append((file_name, db_offset, file_length))db_file.write(file_bytes)db_offset += file_lengthdb_file.close()return shard_index

代码解读:

函数签名
def create_shard(shard_files: list[Path],         # 当前 shard 负责处理的链目录列表output_dir: Path,                # 输出 .db 文件的目录output_name: str,                # .db 文件名前缀(如 "alignment")shard_num: int                   # 当前 shard 的编号(用于命名)
) -> dict:                           # 返回:当前 shard 的 index 字典
初始化
CHUNK_SIZE = 200
shard_index = defaultdict(create_index_default_dict)
chunk_iter = chunked_iterator(shard_files, CHUNK_SIZE)
output_path = output_dir / f"{output_name}_{shard_num}.db"
db_offset = 0
db_file = open(output_path, "wb")
  • CHUNK_SIZE = 200:每次并发处理 200 个链目录,避免线程开销过大

  • shard_index:保存当前 shard 中的所有链名对应的索引信息

  • output_path:构造 .db 文件的路径,如 alignment_0.db

  • db_offset:记录当前 .db 文件的写入偏移位置(以字节为单位)

shard_index = defaultdict(create_index_default_dict)

这里你传入的是一个函数名 create_index_default_dict而不是函数调用结果(也就是不加 ())!

意图:

让 defaultdict 在访问一个不存在的 key 时,调用该函数来生成默认值。

说明
defaultdict(<function>)不是调用函数,而是传入一个函数对象
每次访问不存在的 key会自动执行 function(),作为该 key 的默认值
适合嵌套结构如 dict[str → dict[str, list]]
主循环:分批读取 + 写入
for files_chunk in tqdm(chunk_iter, ...):chunk_data = process_chunk(files_chunk)

调用 process_chunk():多线程读取这 200 个链目录下的所有文件,得到结构:

chunk_data = {"1abc_A": [("file1.a3m", b"..."), ("file2.sto", b"...")],"2xyz_B": [("file1.a3m", b"...")]
}
写入 .db 文件 + 更新索引
for chain_name, file_data in chunk_data.items():shard_index[chain_name]["db"] = output_path.namefor file_name, file_bytes in file_data:file_length = len(file_bytes)shard_index[chain_name]["files"].append((file_name, db_offset, file_length))db_file.write(file_bytes)db_offset += file_length

对于每个链:

  • shard_index[chain_name]["db"] 记录它在哪个 .db 文件中

  • 每个对齐文件都写入 .db 文件,顺序写入

  • 记录每个文件的 (file_name, 起始字节位置, 文件长度)

  • 更新 db_offset 以便下一个文件写入时知道正确的起点

完成处理后关闭文件并返回索引
db_file.close()
return shard_index

这个 shard_index 是供上层 super_index.update(shard_index) 使用的,格式类似:

{"1abc_A": {"db": "alignment_0.db","files": [["file1.a3m", 0, 1024],["file2.sto", 1024, 512]]}
}
总结:函数作用图解
[shard_files: list of chain dirs]↓
[chunked (200 chains at a time)]↓
[每个 chunk -> 并发读取 (ThreadPoolExecutor)]↓
[每个文件的字节数据 -> 顺序写入到 .db 文件]↓
[记录 offset 和长度 → shard_index 字典]↓
[返回 shard_index 字典]

函数特点与优势

特点优势
Chunk 处理降低内存和线程并发压力
多线程读取加快文件加载速度
顺序写入.db 文件结构简单,适合大规模读取
索引记录精确每个链的每个文件都有 offset,方便快速查找
与 ProcessPoolExecutor 配合使用多个 shard 并行构建,CPU 利用率高

文章转载自:

http://f7sg40yR.qxbsq.cn
http://l0Dlmi0m.qxbsq.cn
http://U9hDEcEA.qxbsq.cn
http://Da5IISf7.qxbsq.cn
http://oHmt1WzJ.qxbsq.cn
http://p79jYaaC.qxbsq.cn
http://0Y4VaQUr.qxbsq.cn
http://7IjsusrN.qxbsq.cn
http://rynpWyuY.qxbsq.cn
http://qGBBPmvI.qxbsq.cn
http://wYYJYOcI.qxbsq.cn
http://hxlT07sE.qxbsq.cn
http://BP0q54Dc.qxbsq.cn
http://hQSMb72y.qxbsq.cn
http://xeadPcbn.qxbsq.cn
http://GXJ3mKIE.qxbsq.cn
http://4LQC25WE.qxbsq.cn
http://wVw1mE0m.qxbsq.cn
http://6xDIXe2L.qxbsq.cn
http://h7zcYVPz.qxbsq.cn
http://03Vd0WoR.qxbsq.cn
http://inqgAWKl.qxbsq.cn
http://dEHyeTlK.qxbsq.cn
http://tL7KcF8d.qxbsq.cn
http://P8F5vFAP.qxbsq.cn
http://ZU9mXLZY.qxbsq.cn
http://D1hfl3ro.qxbsq.cn
http://nENO51tE.qxbsq.cn
http://30Zg0lPg.qxbsq.cn
http://juGTwXcM.qxbsq.cn
http://www.dtcms.com/wzjs/706483.html

相关文章:

  • 网站开发可行性分析报告科技项目的类型有
  • 企业网站创建需要多种语言吗做网络推广可以通过哪些渠道推广
  • 提供邯郸做wap网站电商运营怎么做数据分析
  • 网站建设合同怎么写网络营销就是网上消售吗
  • 哪个视频网站做自媒体网站开发与应用总结
  • 吉林企业网站建设成都网站开发工作室
  • 广西庆海建设发展有限公司网站平面设计范文
  • 在线网站建设哪家好开发工程师
  • 凡科建站公司wordpress做付费阅读
  • 电商平台网站模板网站备案 类型
  • 惠州学院网站建设公司排名的网站
  • 酒店网站建设的需求分析报告logo设计在线生成免费标智客
  • 网站建设0基础深入浅出php
  • h5开源网站模板建购物网站如何运营
  • 黄金网站软件app视频app运营
  • 网站建设公司华网天下公司wap网站开发联系电话
  • 建设国际网站第一模板ppt网
  • 上海知名网站开发公司网站建设税率多少
  • 自己如何建企业网站省技能大赛网站开发方案
  • 免费制作软件的网站淘宝页面设计的网站
  • 网站建设找谁重庆网站建设公司招聘
  • 网站甚而模板镇江百姓网
  • 构建微网站沧州商城网站开发设计
  • 深圳专业企业网站建设模板赣州网页设计师培训
  • 大兴企业网站建设公司时彩网站开发
  • 网站制作公司运作方案wordpress 手机lianxu播放
  • 成都营销型网站建设公司亦庄网站设计
  • dw建设网站如何加入音乐网站建设与管理指什么
  • 计算机网络技术 网站建设方向网站开发行业知识新闻
  • 宜城营销型网站套餐网站的建设与运营模式