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

AF3 quat_to_rot函数解读

AlphaFold3 rigid_utils 模块的 quat_to_rot 函数的功能是把四元数转换为旋转矩阵,函数利用预定义的四元数到旋转矩阵的转换表 _QTR_MAT 来简化计算。

理解四元数到旋转矩阵的转换

源代码:

_quat_elements = ["a", "b", "c", "d"]
_qtr_keys = [l1 + l2 for l1 in _quat_elements for l2 in _quat_elements]
_qtr_ind_dict = {key: ind for ind, key in enumerate(_qtr_keys)}


def _to_mat(pairs):
    mat = np.zeros((4, 4))
    for pair in pairs:
        key, value = pair
        ind = _qtr_ind_dict[key]
        mat[ind // 4][ind % 4] = value

    return mat


_QTR_MAT = np.zeros((4, 4, 3, 3))
_QTR_MAT[..., 0, 0] = _to_mat([("aa", 1), ("bb", 1), ("cc", -1), ("dd", -1)])
_QTR_MAT[..., 0, 1] = _to_mat([("bc", 2), ("ad", -2)])
_QTR_MAT[..., 0, 2] = _to_mat([("bd", 2), ("ac", 2)])
_QTR_MAT[..., 1, 0] = _to_mat([("bc", 2), ("ad", 2)])
_QTR_MAT[..., 1, 1] = _to_mat([("aa", 1), ("bb", -1), ("cc", 1), ("dd", -1)])
_QTR_MAT[..., 1, 2] = _to_mat([("cd", 2), ("ab", -2)])
_QTR

http://www.kler.cn/a/597453.html

相关文章:

  • 手机号登录与高并发思考
  • C#实现高性能文件批量处理器(多线程+Hash校验+正则过滤)
  • 时序分析笔记
  • Java多线程与高并发专题——Future 是什么?
  • 【记录】并行运行olmocr把服务器跑崩
  • curl库+openssl库windows编译
  • Web3 环境下用户数据隐私保护的技术方案分析
  • Android Studio 中出现的 org.codehaus.groovy.GroovyBugError 错误版本兼容性修复
  • 【Linux】如何在 Linux 上查找占用空间较大的文件和文件夹
  • Ubuntu 20.04 安装并使用Cursor
  • 能不能解释一下 ,什么是React 的错误边界?
  • 用tensorboard支持pytorch训练可视化
  • 【视频】m3u8相关操作
  • 笔记:代码随想录算法训练营day59:110.字符串接龙 、105.有向图的完全可达性、106.岛屿的周长
  • ubuntu系统/run目录不能执行脚本问题解决
  • LabVIEW发电平台数据采集系统
  • 15:视图
  • 如何使用TortoiseGit将master最新的合并到本地的子分支
  • 关于JESD204B 接口的调试
  • 基于ssm的会员积分管理系统(全套)