AF3 squeeze_features函数解读

embedded/2025/3/11 3:39:21/

AlphaFold3  data_transforms 模块的 squeeze_features 函数的作用去除 蛋白质特征张量中不必要的单维度(singleton dimensions)和重复维度,以使其适配 AlphaFold3 预期的输入格式。

源代码:

def squeeze_features(protein):"""Remove singleton and repeated dimensions in protein features."""protein["aatype"] = torch.argmax(protein["aatype"], dim=-1)for k in ["domain_name","msa","num_alignments","seq_length","sequence","superfamily","deletion_matrix","resolution","between_segment_residues","residue_index","template_all_atom_mask",]:if k in protein:final_dim = protein[k].shape[-1]if isinstance(final_dim, int) and final_dim == 1:if torch.is_tensor(protein[k]):protein[k] = torch.squeeze(protein[k], dim=-1)else:protein[k] = np.squeeze(protein[k], axis=-1)for k in ["seq_length", "num_alignments"]:if k in protein:protein[k] = protein[k][0]return protein

源码解读:

  • 该函数接收 protein(一个 包含蛋白质特征的字典)作为输入。
  • 主要任务:
    1. 将 one-hot aatype 转换为索引表示
    2. 移除 shape 为 (N, ..., 1) 的单维度
    3. 提取 seq_length 和 num_alignments 的实际数值
Step 1: 处理 aatype
protein["aatype"] = torch.argmax(protein["aatype"], dim=-1)
  • 输入 aatype(氨基酸类型)通常是 one-hot 编码
  • 通过 torch.argmax(..., dim=-1) 获取 索引
  • 目的:简化 aatype 的数据表示,使其直接存储氨基酸索引,而不是 one-hot 矩阵。
Step 2: 移除单维度
for k in ["domain_name","msa","num_alignments","seq_length","sequence","superfamily","deletion_matrix","resolution","between_segment_residues","residue_index","template_all_atom_mask",
]:if k in protein:final_dim = protein[k].shape[-1]  # 获取最后一维的大小if isinstance(final_dim, int) and final_dim == 1:if torch.is_tensor(protein[k]):protein[k] = torch.squeeze(protein[k], dim=-1)  # 去掉单维度else:protein[k] = np.squeeze(protein[k], axis=-1)
  • 遍历多个 protein 特征字段,检查它们是否存在。
  • 如果最后一维 final_dim 为 1,说明这个维度是无意义的单维度,需要去除:
    • 如果是 PyTorch 张量torch.Tensor),使用 torch.squeeze(dim=-1)
    • 如果是 NumPy 数组,使用 np.squeeze(axis=-1)
Step 3: 处理 seq_length 和 num_alignments
for k in ["seq_length", "num_alignments"]:if k in protein:protein[k] = protein[k][0]

seq_length 和 num_alignments 可能是 列表或张量,但它们的数值其实是一个单独的整数,因此需要转换成 标量值

结论

1️⃣ 转换 aatype: 从 one-hot 编码 转换成 索引表示
2️⃣ 移除无用的单维度: 让 msaresolutiondeletion_matrix 等数据符合 AlphaFold3 预期格式。
3️⃣ 转换 seq_length 和 num_alignments 为标量: 确保它们不会以张量形式存在,而是整数。

💡 最终作用:保证输入数据的维度符合 AlphaFold3 训练时的输入要求,提高数据处理效率。


http://www.ppmy.cn/embedded/171657.html

相关文章

MySQL 实战 4 种将数据同步到ES方案

文章目录 1. 前言2. 数据同步方案 2.1 同步双写2.2 异步双写2.3 定时更新2.4 基于 Binlog 实时同步 3. 数据迁移工具选型 3.1 Canal3.2 阿里云 DTS3.3 Databus3.4 Databus和Canal对比3.4 其它 4. 后记 上周听到公司新同事分享 MySQL 同步数据到 ES 的方案,发现很有…

数据结构(树)

数据结构(树) 树的基本概念 样子 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下…

《AI大模型专家之路》No.2:用三个模型洞察大模型NLP的基础能力

用三个模型洞察大模型NLP的基础能力 一、项目概述 在这个基于AI构建AI的思维探索项目中,我们实现了一个基于BERT的中文AI助手系统。该系统集成了文本分类、命名实体识别和知识库管理等功能,深入了解本项目可以让读者充分了解AI大模型训练和推理的基本原…

firewalld富规则配置黑名单

1. 屏蔽指定 IP 地址 firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.100 reject"参数说明 --permanent:将规则永久保存,重启后仍然生效。--add-rich-rule:添加一条富规则。rule family=ipv4:指定规则适用于 IPv4 地址。…

Meta 计划在 Llama 4 中引入改进的语音功能,接近双向自然对话

据英国《金融时报》3 月 7 日报道,Meta 首席产品官 Chris Cox 透露,Llama 4 将是一个 “全能模型”,语音功能将是原生的1。关于 Meta 计划在 Llama 4 中引入改进语音功能并接近双向自然对话,具体情况如下1: 功能特点 原…

LeetCode1137 第N个泰波那契数

泰波那契数列求解:从递归到迭代的优化之路 在算法的世界里,数列问题常常是我们锻炼思维、提升编程能力的重要途径。今天,让我们一同深入探讨泰波那契数列这一有趣的话题。 泰波那契数列的定义 泰波那契序列 Tn 有着独特的定义方式&#xf…

力扣-股票买入问题

dp dp元素代表最大利润 f[j][1] 代表第 j 次交易后持有股票的最大利润。在初始状态,持有股票意味着你花钱买入了股票,此时的利润应该是负数(扣除了买入股票的成本),而不是 0。所以,把 f[j][1] 初始化为负…

服务器配置完成后如何启动或者终止java后端,相关运行文件如下:

很多人跟着视频或者查询资料服务器配置完成后不知该如何启动或者终止java后端,我个人是写了一个运行文件和停止文件: 一、start.sh ME 你的jar包的文件名.jar nohup java -jar $ME > server.log 2>&1 & echo start success使用方法&…