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

AF3 squeeze_features函数解读

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 训练时的输入要求,提高数据处理效率。

相关文章:

AF3 squeeze_features函数解读

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

Python 远程抓取服务器日志最后 1000行

哈喽,大家好,我是木头左! 一、神奇的 Python 工具箱 1. SSH 连接的密钥——paramiko paramiko 库提供了丰富的方法来处理 SSH 连接的各种细节。从创建连接对象,到执行远程命令,再到获取命令输出,它都能有…...

vue3+screenfull实现部分页面全屏(遇到的问题会持续更新)

需求&#xff1a;除了左侧菜单&#xff0c;右侧主体部分全部全屏 首先下载screenfull全屏插件 npm install screenfull --save页面引入 import screenfull from screenfull;我这里是右上角全屏图标 <el-iconref"elIconRef"color"#ffffff"size"2…...

Ubuntu 下 nginx-1.24.0 源码分析 (1)

main 函数在 src\core\nginx.c int ngx_cdecl main(int argc, char *const *argv) {ngx_buf_t *b;ngx_log_t *log;ngx_uint_t i;ngx_cycle_t *cycle, init_cycle;ngx_conf_dump_t *cd;ngx_core_conf_t *ccf;ngx_debug_init(); 进入 main 函数 最…...

2025数据存储技术风向标:解析数据湖与数据仓库的实战效能差距

一、技术演进的十字路口 当前全球数据量正以每年65%的复合增长率激增&#xff0c;IDC预测到2027年企业将面临日均处理500TB数据的挑战。在这样的背景下&#xff0c;传统数据仓库与新兴数据湖的博弈进入白热化阶段。Gartner最新报告显示&#xff0c;采用混合架构的企业数据运营效…...

探索高性能AI识别和边缘计算 | NVIDIA Jetson Orin Nano 8GB 开发套件的全面测评

随着边缘计算和人工智能技术的迅速发展&#xff0c;性能强大的嵌入式AI开发板成为开发者和企业关注的焦点。NVIDIA近期推出的Jetson Orin Nano 8GB开发套件&#xff0c;凭借其40 TOPS算力、高效的Ampere架构GPU以及出色的边缘AI能力&#xff0c;引起了广泛关注。本文将从配置性…...

数据结构 常见的排序算法

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;数据结构 目录 &#x1f33b;个人主页&#xff1a;路飞雪吖~ 一、插入排序 &#x1f31f;直接插入排序 &#x1f31f;希尔排序 二、选择排序 &#x1f31f;选择排序 &#x1f31f;堆排序…...

ES索引知识

索引是数据的载体&#xff0c;存储了文档和映射的信息 索引是具有相同结构的文档的合集体。 设置索引&#xff0c;不仅仅是设置索引名字&#xff0c;还有索引的一些配置&#xff0c;比如&#xff1a;分片和副本&#xff0c;刷新频率&#xff0c;搜索结果的最大参数&#xff0c…...

FreeRTOS第17篇:FreeRTOS链表实现细节05_MiniListItem_t:FreeRTOS内存优化

文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 1 为什么需要迷你列表项? 在嵌入式系统中,内存资源极其宝贵。FreeRTOS为满足不同场景需求,设计了标准列表项(ListItem_…...

Golang | Gin(简洁版)

文章目录 安装使用RESTful API响应页面获取请求参数路由讲解中间件 安装使用 Gin 是一个 golang 的微框架&#xff0c;封装比较优雅&#xff0c;API 友好&#xff0c;源代码比较明确。具有快速灵活&#xff0c;容错方便等特点。其实对于 golang 而言&#xff0c;web 框架的依赖…...

RAG外挂知识库

目录 RAG的工作流程 python实现RAG 1.引入相关库及相关准备工作 函数 1. 加载并读取文档 2. 文档分割 3. embedding 4. 向集合中添加文档 5. 用户输入内容 6. 查询集合中的文档 7. 构建Prompt并生成答案 主流程 附录 函数解释 1. open() 函数语法 2.client.embe…...

Rust语言:开启高效编程之旅

目录 一、Rust 语言初相识 二、Rust 语言的独特魅力​ 2.1 内存安全:消除隐患的护盾​ 2.2 高性能:与 C/C++ 并肩的实力​ 2.3 强大的并发性:多线程编程的利器​ 2.4 跨平台性:适配多环境的优势​ 三、快速上手 Rust​ 3.1 环境搭建:为开发做准备​ 3.2 第一个 R…...

蓝桥杯备考:图论初解

1&#xff1a;图的定义 我们学了线性表和树的结构&#xff0c;那什么是图呢&#xff1f; 线性表是一个串一个是一对一的结构 树是一对多的&#xff0c;每个结点可以有多个孩子&#xff0c;但只能有一个父亲 而我们今天学的图&#xff01;就是多对多的结构了 V表示的是图的顶点集…...

Codeforces Round 502 E. The Supersonic Rocket 凸包、kmp

题目链接 题目大意 平面上给定两个点集&#xff0c;判定两个点集分别形成的凸多边形能否通过旋转、平移重合。 点集大小 ≤ \leq ≤ 1 0 5 10^{5} 105&#xff0c;坐标范围 [0, 1 0 8 10^{8} 108 ]. 思路 题意很明显&#xff0c;先求出凸包再判断两凸包是否同构。这里用…...

机器人匹诺曹机制,真话假话平衡机制

摘要&#xff1a; 本文聚焦于机器人所采用的一种“匹诺曹机制”&#xff0c;该机制旨在以大概率保持“虚拟鼻子”&#xff08;一种象征虚假程度的概念&#xff09;不会过长&#xff0c;通过在对话中夹杂真话与假话来实现。文章深入探讨了这一机制的原理&#xff0c;分析其背后的…...

用Python分割并高效处理PDF大文件

在处理大型PDF文件时&#xff0c;将它们分解成更小、更易于管理的块通常是有益的。这个过程称为分区&#xff0c;它可以提高处理效率&#xff0c;并使分析或操作文档变得更容易。在本文中&#xff0c;我们将讨论如何使用Python和为Unstructured.io库将PDF文件划分为更小的部分。…...

【RAG】混合检索(Hybrid Search) 提高检索精度

1.问题&#xff1a;向量检索也易混淆&#xff0c;而关键字会更精准 在实际生产中&#xff0c;传统的关键字检索&#xff08;稀疏表示&#xff09;与向量检索&#xff08;稠密表示&#xff09;各有利弊。 举个具体例子&#xff0c;比如文档中包含很长的专有名词&#xff0c; 关…...

CTFHub-FastCGI协议/Redis协议

将木马进行base64编码 <?php eval($_GET[cmd]);?> 打开kali虚拟机&#xff0c;使用虚拟机中Gopherus-master工具 Gopherus-master工具安装 git clone https://github.com/tarunkant/Gopherus.git 进入工具目录 cd Gopherus 使用工具 python2 "位置" --expl…...

【算法day4】最长回文子串——动态规划方法

最长回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的 回文 子串。 https://leetcode.cn/problems/longest-palindromic-substring/submissions/607962358/ 动态规划&#xff1a; 回文串即是从前面开始读和从后面开始读&#xff0c;读出来的字符串均相同的字符串&#…...

C++之“string”类的模拟实现

​ &#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;C入门 前言 hello &#xff0c;大家又来跟着bear学习了。一起奔向更好的自己&#xff0c;上篇博客已经讲清楚了string的一些功能的使用。我们就实现一些主要的功…...

Hitboxer:开源SOCD清理工具,3分钟提升游戏操作精准度

Hitboxer&#xff1a;开源SOCD清理工具&#xff0c;3分钟提升游戏操作精准度 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在激烈的游戏对抗中经历过这样的挫败&#xff1a;同时按下左右方向键时角色卡…...

CANN-昇腾NPU-RAG推理-检索增强生成怎么部署

RAG&#xff08;Retrieval-Augmented Generation&#xff09;是 LLM 知识库的组合&#xff1a;先检索相关文档&#xff0c;再让 LLM 基于文档回答。昇腾NPU 上部署 RAG 需要两个组件&#xff1a;Embedding 模型&#xff08;做向量检索&#xff09;和 LLM&#xff08;做生成&am…...

别再盲跑了!手把手教你用Arduino Zero在IDE 2.0里设置断点单步调试

告别盲跑时代&#xff1a;Arduino Zero与IDE 2.0的源码级调试实战指南 当你的Arduino项目逻辑越来越复杂&#xff0c;仅靠串口打印调试就像在迷宫里摸黑前行——直到遇见Arduino Zero与IDE 2.0的调试组合。本文将揭示如何用这套工具实现 源码级精准调试 &#xff0c;即使你手…...

Python基础语法:生成器 generator(yield)

一、简介根据指定的规则循环生成数据&#xff0c;当条件不成立时则生成数据结束。数据不是一次性全部生成出来&#xff0c;而是使用一个&#xff0c;再生成一个&#xff0c;好处是可以节约大量的内存。就像设计模式中的懒汉式。适合处理大数据或流数。生成器是一种特殊的迭代器…...

Vulnhub-DC-1

1.信息收集 使用工具nmap扫描主机端口 这是Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成 Web指纹扫描 发现是&#xff1a;drupal…...

钱钟书《围城》第1-5章阅读笔记:一场关于人生困境的提前预演

前言 钱钟书先生的《围城》被誉为"新儒林外史"&#xff0c;是中国现代文学史上风格独特的讽刺经典。这部创作于20世纪40年代的长篇小说&#xff0c;以抗战初期为背景&#xff0c;通过主人公方鸿渐的人生轨迹&#xff0c;深刻揭示了知识分子群体的精神困境与人性弱点。…...

Hindsight API参考:REST接口完整文档

Hindsight API参考&#xff1a;REST接口完整文档 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight Hindsight是一个强大的Agent Memory系统&#xff0c;提供了全面的REST API接口&…...

PrivacyGuard实战:基于实证差分隐私的机器学习模型隐私审计框架

1. 项目概述与核心价值在过去的几年里&#xff0c;我亲眼见证了机器学习模型从实验室走向银行、医疗、社交网络等各个敏感领域的全过程。模型性能的每一次飞跃都令人兴奋&#xff0c;但随之而来的隐私泄露事件也一次次为我们敲响警钟。一个在医疗数据上训练出的诊断模型&#x…...

收藏|2026年大模型算法岗崛起!程序员小白入门高薪赛道全攻略

前些年&#xff0c;算法岗位一直稳居技术圈高薪行列&#xff0c;无数程序员争相入局&#xff0c;也成为计算机专业毕业生求职首选方向。 伴随大模型技术飞速迭代落地&#xff0c;行业就业格局迎来重大变革。如今含金量最高、人才缺口最大、长期发展潜力顶尖的岗位&#xff0c;已…...

PostgreSQL Merge Join 大白话详解

用生活中最直观的例子&#xff0c;彻底搞懂 Merge Join 是什么、为什么快、什么时候用。一、先从生活场景开始 场景一&#xff1a;两摞乱序试卷找同学 期末考试&#xff0c;老师手里有两摞试卷&#xff1a; A 摞&#xff1a;数学试卷&#xff0c;500 份&#xff0c;乱序堆放B 摞…...