AF3 make_fixed_size函数解读

news/2025/3/27 9:27:24

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.niftyadmin.cn/n/5890063.html

相关文章

神经网络机器学习中说的过拟合是什么意思

在神经网络和机器学习中,​过拟合(Overfitting)​ 是指模型在训练数据上表现非常好,但在未见过的测试数据上表现较差的现象。换句话说,模型过度学习了训练数据中的细节和噪声,导致其泛化能力(Ge…

【反无人机目标检测】DRBD-YOLOv8

DRBD-YOLOv8:A Lightweight and Efficient Anti-UAV Detection Model DRBD-YOLOv8:一种轻量高效的无人机检测模型 0.论文摘要 摘要:由于对无人飞行器(UAV)相关的安全和隐私问题的日益关注,反无人机检测系统…

数据可视化新高度:用seaborn.heatmap为数据加热

前言 大家好,今天我们要聊聊数据可视化中最火热的一种方式:热力图!你可能会想,“数据可视化”听起来很高大上,难道不就是一些枯燥的图表和数字吗?别担心,今天我们让你瞬间明白。我们介绍的 seaborn.heatmap 不仅可以让你的数据看上去像一锅冒泡的热汤,还能轻松应对各种…

Linux:Ubuntu server 24.02 上搭建 ollama + dify

一、安装Ubuntu 具体的安装过程可以参见此链接:链接:Ubuntu Server 20.04详细安装教程,这里主要记录一下过程中遇到的问题。 安装时subnet如何填写 在Ubuntu中subnet填写255.255.255.0是错误的,其格式为 xx.xx.xx.xx/yy &#…

下载文件,文件名乱码问题

C# .net framework 4.8 mvc 项目,做一个文件下载功能。 原项目是前端使用razor引擎方式做页面渲染的。 该项目原来就有一个模块是可供文件下载的,且文件名是中文。 但是我现在新增的这个模块,领导要求用js写,觉得razor太笨重。 …

无服务架构:设计一个基于 AWS Lambda 和 S3 的音乐网站

作为开发者,我一直对如何构建高效、可扩展的网络应用感兴趣,尤其是如何在云平台上创建一个简单而强大的音乐网站。为了实现这个目标,我决定使用 AWS Lambda、S3 和一些其他 AWS 服务来设计和开发这个项目。以下是我在构建这个音乐网站时所采用…

每天一道算法题【蓝桥杯】【不同路径Ⅱ】

思路 这道题和上一题的最大不同在于多了个障碍物 所以只需要让障碍物处dp表的值为0即可 #define _CRT_SECURE_NO_WARNINGS 1 #include<vector> using namespace std; class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& ob) …

HTML+JavaScript实现随机点名2.0|随机抽奖效果-demo

效果 年级学生名单.csv 1,张*诚 2,朱*皓 3,刘*宇 4,王*欣 5,但*宇 6,张*赫 7,李*昕 8,张*翔 9,曹*悦 10,万*铖 11,万*铖 12,万*铖 13,万*铖 14万*铖 15,万*铖 16,万*铖 17,万*铖 18,万*铖 19,万*铖 20,万*铖 源代码 <!DOCTYPE html> <html> <head><ti…