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

解析TMalign文本文件中的转换矩阵

TM-align 将两个蛋白质结构通过旋转和位移对齐后

TMalign test1.pdb  test2.pdb -m mtx.txt

输出转换矩阵,文件内容为:

------ The rotation matrix to rotate Chain_1 to Chain_2 ------
m               t[m]        u[m][0]        u[m][1]        u[m][2]
0       0.7438770778   0.9928096071   0.1017845140   0.0629999746
1       3.6134235067   0.0559138503   0.0710345055  -0.9959054877
2      18.3578484222  -0.1058429281   0.9922671070   0.0648325754Code for rotating Structure A from (x,y,z) to (X,Y,Z):
for(i=0; i<L; i++)
{X[i] = t[0] + u[0][0]*x[i] + u[0][1]*y[i] + u[0][2]*z[i];Y[i] = t[1] + u[1][0]*x[i] + u[1][1]*y[i] + u[1][2]*z[i];Z[i] = t[2] + u[2][0]*x[i] + u[2][1]*y[i] + u[2][2]*z[i];
}
  • 旋转矩阵 u 是一个 3x3 的矩阵,用于定义结构 A 到结构 B 的旋转。
  • 平移向量 t 是一个长度为 3 的向量,用于定义结构 A 到结构 B 的平移。

解析为numpy array代码

方法一:

import numpy as np# 打开mtx.txt文本,读入数据
text = ""
with open("mtx.txt") as f:lines = f.readlines()# 1. 取数据行
data_lines = lines[2:5]# 初始化一个空列表来存储每一行的数值
data = []# 遍历每一行,提取数值
for line in data_lines:# 将每行按空白字符分割,并将数值转换为 floatvalues = [float(x) for x in line.split()[1:5]]data.append(values)# 转换为 numpy 数组
array = np.array(data)print(f"转换矩阵:{array}")t = array[:,0] # 平移向量
u = array[:,1:] # 旋转矩阵
print(f"平移向量:{t}")
print(f"平移旋转:{u}")

方法二:

# 打开mtx.txt文本,读入数据
with open("mtx.txt") as f:lines = f.readlines()# 1. 取数据行
data_lines = lines[2:5]# 2. 去掉每行的第一个索引,留下数值部分
cleaned_lines = []
for line in data_lines:# 使用split分割并去掉每行的第一个元素(索引),保留数值部分cleaned_line = ' '.join(line.split()[1:5])cleaned_lines.append(cleaned_line)print(f"cleaned_lines:{cleaned_lines}")# 3. 将数值部分拼接成一个字符串,用于 fromstring 解析
data_string = ' '.join(cleaned_lines)
print("data_string")
print(data_string)# 4. 使用 numpy.fromstring 解析数值字符串
array = np.fromstring(data_string, sep=' ')# 5. 将生成的数组reshape为合适的形状 (3, 4)
array = array.reshape(3, 4)
print(array)### 简洁形式
array = np.fromstring(' '.join(l[2:] for l in lines[2:5]), dtype=float, sep=' ').reshape((3,4))print(f"转换矩阵:{array}")t = array[:,0] # 平移向量
u = array[:,1:] # 旋转矩阵
print(f"平移向量:{t}")
print(f"平移旋转:{u}")

相关文章:

解析TMalign文本文件中的转换矩阵

TM-align 将两个蛋白质结构通过旋转和位移对齐后&#xff1a; TMalign test1.pdb test2.pdb -m mtx.txt 输出转换矩阵&#xff0c;文件内容为&#xff1a; ------ The rotation matrix to rotate Chain_1 to Chain_2 ------ m t[m] u[m][0] u[…...

vue.js组建开发

Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它采用了组件化的开发方式&#xff0c;将UI界面拆分成多个可重用的组件&#xff0c;通过组合这些组件来构建复杂的应用程序。在本文中&#xff0c;我们将探讨Vue.js组件开发的相关概念和技术。 一、组件化开发的优势 组件…...

D29【python 接口自动化学习】- python基础之输入输出与文件操作

day29 格式化输出 学习日期&#xff1a;20241006 学习目标&#xff1a;输入输出与文件操作&#xfe63;-41 格式化输出&#xff1a;如何将执行结果通过屏幕输出&#xff1f; 学习笔记&#xff1a; 三种常用的格式化输出方式 百分号方式 format函数方式 总结 1. 格式化输出…...

jQuery——平滑翻页

平滑翻页 param next true&#xff1a;下一页 false&#xff1a;下一页 本文分享到此结束&#xff0c;欢迎大家评论区相互讨论学习&#xff0c;下一篇继续分享jQuery中循环翻页的学习。...

二叉树--DS

1. 树 1.1 树的定义 树是一种非线性的数据结构&#xff0c;它是由n (n > 0)个有限结点组成的一个具有层次关系的集合。之所以将它称为“树”&#xff0c;是因为它像一颗倒挂起来的树&#xff0c;也就是说它是根朝上&#xff0c;叶子在下的。 参考上面的图片&#xff0c;…...

State of ChatGPT ---- ChatGPT的技术综述

声明&#xff1a;该文总结自AI菩萨Andrej Karpathy在youtube发布的演讲视频。 原视频连接&#xff1a;State of GPT | BRK216HFS 基础知识&#xff1a; Transformer原文带读与代码实现https://blog.csdn.net/m0_62716099/article/details/141289541?spm1001.2014.3001.5501 H…...

构建高效新闻推荐系统:Spring Boot的力量

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

如何使用ipopt进行非线性约束求目标函数最小值(NLP非线性规划)内点法(inner point method)

非线性规划&#xff0c;一般用matlab调用cplex和gurobi了&#xff0c;但这两个一般用于线性规划和二次规划 线性规划LP&#xff0c;二次规划&#xff08;quadratic programming&#xff09;&#xff0c;如果要求更一般的非线性规划IPOT是个很好的选择&#xff0c;求解器很多&a…...

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题

【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题 一句话省流&#xff1a; 确保项目地址没有任何中文&#xff0c;重新申请个许可证&#xff0c;然后该咋就咋&#xff0c;完事。 ——————————————————————————————…...

回归分析在数据挖掘中的应用简析

一、引言 在数据驱动的时代&#xff0c;数据挖掘技术已成为从海量数据中提取有价值信息的关键工具。 回归分析&#xff0c;作为一种经典的统计学习方法&#xff0c;不仅在理论研究上有着深厚的基础&#xff0c;而且在实际 应用中也展现出强大的功能。 二、回归分析基础 2.1 回…...

【Node.js】worker_threads 多线程

Node.js 中的 worker_threads 模块 worker_threads 模块是 Node.js 中用于创建多线程处理的工具。 尽管 JavaScript 是单线程的&#xff0c;但有时候在处理计算密集型任务或长时间运行的操作时&#xff0c;单线程的运行会导致主线程被阻塞&#xff0c;影响服务器性能。 为了…...

贪心算法c++

贪心算法C概述 一、贪心算法的基本概念 贪心算法&#xff08;Greedy Algorithm&#xff09;&#xff0c;又名贪婪法&#xff0c;是一种解决优化问题的常用算法。其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决…...

【STM32】 TCP/IP通信协议(3)--LwIP网络接口

LwIP协议栈支持多种不同的网络接口&#xff08;网卡&#xff09;&#xff0c;由于网卡是直接跟硬件平台打交道&#xff0c;硬件不同则处理也是不同。那Iwip如何兼容这些不同的网卡呢&#xff1f; LwIP提供统一的接口&#xff0c;底层函数需要用户自行完成&#xff0c;例如网卡的…...

15分钟学 Python 第39天:Python 爬虫入门(五)

Day 39&#xff1a;Python 爬虫入门数据存储概述 在进行网页爬虫时&#xff0c;抓取到的数据需要存储以供后续分析和使用。常见的存储方式包括但不限于&#xff1a; 文件存储&#xff08;如文本文件、CSV、JSON&#xff09;数据库存储&#xff08;如SQLite、MySQL、MongoDB&a…...

使用Pytorch构建自定义层并在模型中使用

使用Pytorch构建自定义层并在模型中使用 继承自nn.Module类&#xff0c;自定义名称为NoisyLinear的线性层&#xff0c;并在新模型定义过程中使用该自定义层。完整代码可以在jupyter nbviewer中在线访问。 import torch import torch.nn as nn from torch.utils.data import T…...

学习记录:js算法(五十六):从前序与中序遍历序列构造二叉树

文章目录 从前序与中序遍历序列构造二叉树我的思路网上思路 总结 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示…...

qt使用QDomDocument读写xml文件

在使用QDomDocument读写xml之前需要在工程文件添加&#xff1a; QT xml 1.生成xml文件 void createXml(QString xmlName) {QFile file(xmlName);if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate |QIODevice::Text))return false;QDomDocument doc;QDomProcessin…...

Oracle架构之表空间详解

文章目录 1 表空间介绍1.1 简介1.2 表空间分类1.2.1 SYSTEM 表空间1.2.2 SYSAUX 表空间1.2.3 UNDO 表空间1.2.4 USERS 表空间 1.3 表空间字典与本地管理1.3.1 字典管理表空间&#xff08;Dictionary Management Tablespace&#xff0c;DMT&#xff09;1.3.2 本地管理方式的表空…...

springboot整合seata

一、准备 docker部署seata-server 1.5.2参考&#xff1a;docker安装各个组件的命令 二、springboot集成seata 2.1 引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>&…...

鸿蒙开发(NEXT/API 12)【二次向用户申请授权】程序访问控制

当应用通过[requestPermissionsFromUser()]拉起弹框[请求用户授权]时&#xff0c;用户拒绝授权。应用将无法再次通过requestPermissionsFromUser拉起弹框&#xff0c;需要用户在系统应用“设置”的界面中&#xff0c;手动授予权限。 在“设置”应用中的路径&#xff1a; 路径…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

大数据治理的常见方式

大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法&#xff0c;以下是几种常见的治理方式&#xff1a; 1. 数据质量管理 核心方法&#xff1a; 数据校验&#xff1a;建立数据校验规则&#xff08;格式、范围、一致性等&#xff09;数据清洗&…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建

目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.   本…...

十二、【ESP32全栈开发指南: IDF开发环境下cJSON使用】

一、JSON简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有以下核心特性&#xff1a; 完全独立于编程语言的文本格式易于人阅读和编写易于机器解析和生成基于ECMAScript标准子集 1.1 JSON语法规则 {"name"…...

设计模式-3 行为型模式

一、观察者模式 1、定义 定义对象之间的一对多的依赖关系&#xff0c;这样当一个对象改变状态时&#xff0c;它的所有依赖项都会自动得到通知和更新。 描述复杂的流程控制 描述多个类或者对象之间怎样互相协作共同完成单个对象都无法单独度完成的任务 它涉及算法与对象间职责…...