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

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)

相关文章:

  • 类与对象(一)
  • springcloud gateway通过数据库获取路由信息
  • 【经典算法】Leetcode-零钱兑换问题
  • [高阶技术了解]WebRPC详解
  • MongoDB Vs Elasticsearch
  • Jatpack Room 数据库封装:简洁、通用、高性能的持久化解决方案
  • 开启AI开发新时代——全解析Dify开源LLM应用开发平台
  • maven wrapper的使用
  • 【Godot4.4】写入和读取ZIP文件
  • 《灵珠觉醒:从零到算法金仙的C++修炼》卷三·天劫试炼(34)混元金斗装万物 - 0-1背包问题(二维DP)
  • React.js 基础与进阶教程
  • 【网络安全 | 漏洞挖掘】四链路账户接管
  • 视频理解之Actionclip(论文宏观解读)
  • SQL日期处理
  • Java的JDBC编程
  • BFS最短路径(十七)675. 为高尔夫比赛砍树 困难
  • 图像识别技术与应用(十六)
  • 科技工作者之家建设扬帆起航,为科技人才提供更多优质服务
  • lua C语言api学习1 编译第一个程序
  • 【巨人网络】25届春招、26届实习内推码,面经
  • 网站优化预算/廊坊seo排名
  • 静态网站开发实验报告/24小时免费看的视频哔哩哔哩
  • 华企在线网站建设/制作网站的基本步骤
  • 怎么做网站游戏/有没有推广app的平台
  • 做网站的业务员/宜昌网站seo
  • 做响应式网站的体会/如何免费注册一个网站