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

AF3 make_fixed_size函数解读

AlphaFold3  data_transforms 模块的 make_fixed_size 函数的作用是将输入的蛋白质特征字典 protein 中的各个特征张量调整为固定大小。这是为了确保在批量处理时,所有特征张量的形状一致,从而避免形状不匹配的问题。

源代码:

import itertools
import torch
from src.config import NUM_RES, NUM_EXTRA_SEQ, NUM_TEMPLATES, NUM_MSA_SEQ

@curry1
def make_fixed_size(
        protein,
        shape_schema,
        msa_cluster_size,
        extra_msa_size,
        num_res=0,
        num_templates=0,
):
    """Guess at the MSA and sequence dimension to make fixed size."""
    pad_size_map = {
        NUM_RES: num_res,
        NUM_MSA_SEQ: msa_cluster_size,
        NUM_EXTRA_SEQ: extra_msa_size,
        NUM_TEMPLATES: num_templates,
    }

    for k, v in protein.items():
        # Don't transfer this to the accelerator.
        if k == "extra_cluster_assignment":
            continue
        shape = list(v.shape)
        schema = shape_schema[k]
        msg = "Rank mismatch between shape and shape schema for"
        assert len(shape) == len(schema), f"{msg} {k}: {shape} vs {schema}"
        pad_size = [
            pad_size_map.get(s2, None) or s1 for (s1, s2) in zip(shape, schema)
        ]

        padding = [(0, p - v.shape[i]) for i, p in enumerate(pad_size)]
        padding.reverse()
        padding = list(itertools.chain(*padding))
        if padding:
            protein[k] = torch.nn.functional.pad(v, padding)
            protein[k] = torch.reshape(protein[k], pad_size)

    return protein

源码解读:

函数签名
@curry1
def make_fixed_size(
    protein,
    shape_schema,
    msa_cluster_size,
    extra_msa_size,
    num_res=0,
    num_templates=0,
):

@curry1:这是一个装饰器,用于将函数的参数部分绑定。curry1 表示将函数的第一个参数(protein)


http://www.kler.cn/a/582646.html

相关文章:

  • PostgreSQL 数据库备份与恢复指南
  • Nanobrowser:开源AI自动化神器 OpenAI Operator替代品
  • 桂链:什么是区块链智能合约和链码?
  • 浅谈SSE爬虫
  • Flutter 学习之旅 之 flutter 不使用插件,实现简单自定义弹窗PopupDialog功能
  • 单片机FreeRTOS系统中,CPU计算的延时函数
  • es6 尚硅谷 学习
  • Qt表格美化笔记
  • React 组件测试【React Testing Library】
  • [Unity] 封装一个依赖于MonoBehaviour的计时器(上)
  • 2025年Draw.io最新版本下载安装教程,附详细图文
  • 从0到1入门Docker
  • Node-RED基础1
  • A-LOAM工程笔记(三):雷达里程计(lidar odometry)高频粗估计
  • 挤压车间降温设备
  • CTFshow 【WEB入门】信息搜集 【VIP限免】 web1-web17
  • 目标思维——数据分析源自问题,高于问题
  • ListView_GetIconBufferX函数和ListView_GetIconBufferY函数和RECT结构的关系
  • C语言实现队列数据结构:思路与代码详解
  • ARM Cortex-M 内存映射详解:如何基于寄存器直接读写 寄存器映射方式编码程序 直接操作硬件寄存器来控制 MCU