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

AF3 Rigid3Array类介绍

AlphaFold3  geometry.rigid_matrix_vector 模块的 Rigid3Array类表示 3D 刚体变换,用于描述 旋转 + 平移 这种常见的空间操作,在 AlphaFold3 里主要用于 蛋白质结构的旋转对齐、坐标变换、骨架参考系生成Rigid3Array 是一个用于表示三维刚性变换(即特殊欧几里得群 SE(3) 的元素)的类。

主要组件

  • rotation: rotation_matrix.Rot3Array
    3x3 旋转矩阵,负责旋转对象。

  • translation: vector.Vec3Array
    3D 平移向量,负责平移对象。

这个类基本上在实现 特殊欧几里得群 SE(3) 里的变换操作(3D 空间的刚体运动)。

源代码:

@dataclasses.dataclass(frozen=True)
class Rigid3Array:
    """Rigid Transformation, i.e. element of special euclidean group."""

    rotation: rotation_matrix.Rot3Array
    translation: vector.Vec3Array

    def __matmul__(self, other: Rigid3Array) -> Rigid3Array:
        new_rotation = self.rotation @ other.rotation  # __matmul__
        new_translation = self.apply_to_point(other.translation)
        return Rigid3Array(new_rotation, new_translation)

    def __getitem__(self, index) -> Rigid3Array:
        return Rigid3Array(
            self.rotation[index],
            self.translation[index],
        )

    def __mul__(self, other: torch.Tensor) -> Rigid3Array:
        return Rigid3Array(
            self.rotation * other,
            self.translation * other,
        )

    def map_tensor_fn(self, fn) -> Rigid3Array:
        return Rigid3Array(
            self.rotation.map_tensor_fn(fn),
            self.translation.map_tensor_fn(fn),
        )

    def inverse(self) -> Rigid3Array:
        """Return Rigid3Array corresponding to inverse transform."""
        inv_rotation = self.rotation.inverse()
        inv_translation = inv_rotation.apply_to_point(-self.translation)
        return Rigid3Array(inv_rotation, inv_translation)

    def apply_to_point(self, point: vector.Vec3Array) -> vector.Vec3Array:
        """Apply Rigid3Array transform to point."""
        return self.rotation.apply_to_point(point) + self.translation

    def apply(self, point: torch.Tensor) -> torch.Tensor:
        return self.apply_to_point(vector.Vec3Array.from_array(point)).to_tensor()

  

相关文章:

  • 【时时三省】(C语言基础)用printf函数输出数据3
  • 【Go每日一练】猜数字游戏
  • DVWA 命令注入从 Low 到 Impossible 教程及源码分析
  • 基于小参数量大语言模型(Small Language Models) ---- 在制造业落地降本增效应用:可行性研究初探
  • Spring Boot项目中成功集成了JWT
  • 250316-Open-WebUI源码部署+离线迁移
  • 使用正则前瞻检查密码强度
  • VS2022输入 scanf 报错解决方法
  • 99.HarmonyOS NEXT跑马灯组件教程:动画配置与参数详解
  • 工厂模式的扩展
  • 2.7 滑动窗口专题:串联所有单词的子串
  • 2024浙江大学计算机考研上机真题
  • 日志、类加载器、XML(配置文件)
  • 如何免费无限制使用 Cursor 软件:完整指南
  • 生活中的可靠性小案例12:类肤材质老化发粘问题
  • git操作大全
  • EDAS:投稿经验-word版本-问题解决
  • 微服务架构: SpringCloud实战案例
  • 计算机网络开发--阻塞与非阻塞、同步与异步、http协议
  • 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b或DeepSeek-r1:1.5b 模型(完成度80%)
  • 正规的南昌网站建设/网络营销渠道有哪几种
  • 家用宽带怎么做网站 访问/软文推广软文营销
  • 一起做彩票网站的人/百度手机关键词排名工具
  • 打开上海发布/在线网站seo诊断
  • 厦门做网站排名/宁波seo软件免费课程
  • 哪些网站做企业招聘不要花钱/方象科技专注于什么领域