PSP - TMScore(US-align)、RMSD、Sequence 源码

article/2025/7/18 10:51:03

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/129125467

参考文档:Nature Methods | 蛋白、RNA、DNA及其复合物结构的比对算法US-align

官网地址:https://zhanggroup.org/US-align/

TMScore

TMScore,即 Template Modeling Score,参考Wikipedia、ZhangGroup:

image-20230220152641656

US-align (Universal Structural alignment) is a unified protocol to compare 3D structures of different macromolecules (proteins, RNAs and DNAs) in different forms (monomers, oligomers and heterocomplexes) for both pairwise and multiple structure alignments.

  • US-align(通用结构比对)是一种统一协议,用于比较不同形式(单体、低聚物和异源复合物)的不同大分子(蛋白质、RNA 和 DNA)的 3D 结构,用于成对和多结构比对。

The core alogrithm of US-align is extended from TM-align and generates optimal structural alignments by maximizing TM-score of compared strucures through heuristic dynamic programming iterations.

  • US-align 的核心算法是从TM-align扩展而来的,通过最大化TM-score来生成最优结构比对通过启发式动态编程迭代比较结构。

Large-scale benchmark tests showed that US-align can generate more accurate structural alignments with significantly reduced CPU time, compared to the state-of-the-art methods developed for specific structural alignment tasks.

  • 大规模基准测试表明,与为特定结构对齐任务开发的最先进方法相比,US-align 可以生成更准确的结构对齐,同时显着减少 CPU 时间。

TM-score has values in (0,1] with 1 indicating an identical structure match, where a TM-score ≥0.5 (or 0.45) means the structures share the same global topology for proteins (or RNAs).

  • TM-score 的值在 (0,1] 范围内,其中 1 表示相同的结构匹配,其中 TM-score ≥0.5(或 0.45)表示结构共享相同的蛋白质(或 RNA)全局拓扑结构。

TMScore的计算,一般使用US-align,来源于

  • US-align: Universal Structure Alignment of Proteins, Nucleic Acids and Macromolecular Complexes
  • 蛋白质、核酸和大分子复合物的通用结构比对

全部比对功能都统一使用的TM-score作为打分函数。支持:

  1. 单链结构的两两比对,Monomeric Structure Alignment
  2. 复合物(低聚物)结构的两两比对,Oligomeric Structure Alignment
  3. 多结构比对,Multiple Structure Alignment,MSTA
  4. 基于模板的分子对接,Template-based Docking

image-20230220150443634

RMSD

Root Mean Squared Deviation,均方根偏移,是重叠后的两个蛋白质的原子(一般是主链原子)之间的平均距离的度量 。完全重合为0A,一般认为小于3A时,两个结构相似。

计算公式:
R M S D ( X , X r e f ) = min ⁡ R , t 1 N ∑ i = 1 N [ ( R ⋅ X i ( t ) + t ) − X i r e f ] 2 RMSD(X,X^{ref})=\min_{R,t}\sqrt{\frac{1}{N}\sum_{i=1}^{N}[(R \cdot X_{i}(t)+t)-X^{ref}_{i}]^2} RMSD(X,Xref)=R,tminN1i=1N[(RXi(t)+t)Xiref]2

  • X X X X r e f X^{ref} Xref为两个要对比的蛋白, X i X_i Xi X i r e f X_{i}^{ref} Xiref为用于比对的两个原子, N N N为比对的序列长度
  • 蛋白重叠对齐的过程就是,找到一组旋转矩阵R和向量t使得两个用于比较的蛋白 X X X X r e f X^{ref} Xref有最小的RMSD

具体步骤:

  1. 下载USalign.cpp:https://zhanggroup.org/US-align/bin/module/USalign.cpp
  2. 编译CPP脚本:
    1. g++ -static -O3 -ffast-math -lm -o USalign USalign.cpp
    2. macOS,不使用’-static’,即g++ -O3 -ffast-math -lm -o USalign USalign.cpp

注意:如果编译TMalign.cpp,无法编译,将#include <malloc.h>替换为#include <stdlib.h>

源码:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2022. All rights reserved.
Created by C. L. Wang on 2023/2/16
"""import os
import subprocessfrom root_dir import DATA_DIR, ROOT_DIRclass TMScoreAndRMSD(object):"""TMScore,来源于USalign"""def __init__(self):self.bin_dir = os.path.join(ROOT_DIR, "bin")self.usalign = os.path.join(self.bin_dir, "USalign")def get_tms_and_rmsd_with_usalign(self, pdb1_path="", pdb2_path=""):"""计算 TM Score参考: https://zhanggroup.org/US-align/"""if not pdb1_path or not pdb2_path:return -1.0cmd = " ".join([f"{self.usalign}", "-TMscore 1", "-outfmt 2", pdb1_path, pdb2_path])res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE).stdout.read()res = res.decode("utf-8")# [PDBchain1 PDBchain2 TM1 TM2 RMSD ID1 ID2 IDali L1 L2 Lali]# IDali 一致ID/对齐ID# Lali 对齐长度items = res.split("\n")[1].split("\t")tm_score = (float(items[2]) + float(items[3])) * 0.5  # TM1和TM2的均值rmsd = float(items[4])return tm_score, rmsddef main():pdb1_path = os.path.join(DATA_DIR, "test_7roa.pdb")pdb2_path = os.path.join(DATA_DIR, "7roa.pdb")tsu = TMScoreAndRMSD()tm_score, rmsd = tsu.get_tms_and_rmsd_with_usalign(pdb1_path, pdb2_path)print(f"[Info] tm_score: {tm_score}, rmsd: {rmsd}")if __name__ == '__main__':main()

Sequence

标准FASTA序列,例如7ROA:

  • https://www.rcsb.org/structure/7ROA
>7ROA_1|Chain A|EntV|Enterococcus faecalis OG1RF (474186)
SDQLEDSEVEAVAKGLEEMYANGVTEDNFKNYVKNNFAQQEISSVEEELNVNISDASTVVQARFNWNALGSCVANKIKDEFFAMISISAIVKAAQKKAWKELAVTVLRFAKANGLKTNAIIVAGQLALWAVQCGLS

源码:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2022. All rights reserved.
Created by C. L. Wang on 2023/2/17
"""
import os.path
import warningsfrom Bio.Data.PDBData import protein_letters_3to1_extended as d3to1
from Bio.PDB import PDBParserfrom root_dir import DATA_DIRdef get_seq_from_pdb(pdb_path):"""从PDB中获取序列:param pdb_path: PDB路径:return: PDB结构"""# 常见的20种结构# d3to1 = {'CYS': 'C', 'ASP': 'D', 'SER': 'S', 'GLN': 'Q', 'LYS': 'K',#          'ILE': 'I', 'PRO': 'P', 'THR': 'T', 'PHE': 'F', 'ASN': 'N',#          'GLY': 'G', 'HIS': 'H', 'LEU': 'L', 'ARG': 'R', 'TRP': 'W',#          'ALA': 'A', 'VAL': 'V', 'GLU': 'E', 'TYR': 'Y', 'MET': 'M',}record = pdb_path  # PDB路径# 解析器parser = PDBParser(QUIET=True)structure = parser.get_structure('struct', record)res_str = ""for model in structure:for chain in model:header = chain.idseq = []for residue in chain:if residue.resname in d3to1.keys():seq.append(d3to1[residue.resname])elif residue.resname == "HOH":continueelse:warnings.warn(f"{residue.resname} don't support!")seq_str = "".join(seq)res_str += f">{header}\n{seq_str}\n"return res_strdef main():pdb_path = os.path.join(DATA_DIR, "7roa.pdb")res_str = get_seq_from_pdb(pdb_path)print(f"[Info] res: \n{res_str}")if __name__ == '__main__':main()

http://chatgpt.dhexx.cn/article/YyNpe1d5.shtml

相关文章

基于Gromacs的蛋白分子动力学模拟(RMSD、RMSF及蛋白的回旋半径)

一、实验要求 实验对象&#xff1a;目标体系为modeller或其他方法建模的结果中评价最好的模型。 软件&#xff1a; Gromacs-5.1.2 二、实验步骤 加立场 gmx pdb2gmx –h 打开帮助菜单。 选力场的时候选择 Amber99sb…,溶剂类型选Tip3p。 2、加模拟盒子&#xff0c;溶剂层…

RMSD与PMSF 解释与区别

我不需要力量源泉 对我来说 这只是需要完成的一件事&#xff0c;我应该一直全力以赴的做下去 放弃不是我的天性&#xff0c;我甚至不在乎乐观还是悲观。 二者都是对位移的平方和再求平方根&#xff0c;最后求得均值。区别在于&#xff1a;RMSD为在同一帧情况下&#xff0c;对不…

pymol pymol-align两分子或蛋白距离误差计算RMSD;spyrmsd库计算RMSD

参考&#xff1a;https://zhuanlan.zhihu.com/p/347743101 https://www.codenong.com/cs106148400/ RMSD 单位是埃 RMSD,root-mean-square deviation&#xff0c;也就是均方根偏差。 原子位置的均方根偏差是叠加蛋白质的原子&#xff08;通常是骨架原子&#xff09;之间的平均…

RMSD和RMSF

RMSD&#xff0c;Root Mean Square Deviation&#xff0c;均方根偏差&#xff1b;RMSF&#xff0c;Root Mean Square Fluctuation&#xff0c;均方根波动。 在轨迹分析中&#xff0c;最经常用&#xff0c;最简单&#xff0c;也最有用的就是这两巨头&#xff0c;二者都是对位移的…

统计学常用指标

目录 标准差(SD)均方根误差(RMSE/RMSD)均方误差(MSE/MSD)平均绝对误差(MAE)决定系数/拟合优度(R^2)平均偏差(Bias) 标准差(SD) 标准差&#xff08;StandardDeviation&#xff09;&#xff0c;在概率统计中最常使用作为统计分布程度&#xff08;statisticaldispersion&#xff…

Excel如何查找批注

Excel查找的选项&#xff0c;查找范围选择批注就可以了

Excel 打印显示批注(亲自实践)

有时候需要将Excel中的批注,随同正文一起打印出来 方法如下: 1.右键有批注的单元格,选择"显示/隐藏批注" 2.选择"分页预览"模式显示工作表 3.右键任意单元格,选择"页面设置" 4.在"页面设置"窗口中,标签"工作表"的&quo…

excel中深入理解批注

excel中深入理解批注 系统要求一、单个批注二、所有批注三、形状修改四、插入图 系统要求 装有office2010以上版本功能&#xff1a;批注 一、单个批注 右击显示或隐藏批注 显示表示批注不退出&#xff08;鼠标移开时&#xff09; 二、所有批注 审阅显示或隐藏批注 三、…

Excel中批量添加批注图片

excel中想实现这种悬停时显示图片的效果 1、将图片与单元格命名一致&#xff0c;并将图片与excel文件放置在同一目录下 2、选中需要设置的单元格&#xff0c;点击【开发工具】 -查看代码&#xff08;如果没有开发工具往下看&#xff09; 3、在编辑框中输入以下代码并运行 Sub …

Excel技能之批注超链接,你竟然真的不会用

资源整合是新时代职场人的顶配。资源整合&#xff0c;可以快速查找想要的资源。一个目录&#xff0c;如果包含了所有相关的内容&#xff0c;那么&#xff0c;价值是宝贵的。点击目录打开对应的内容&#xff0c;离不开超链接。超链接&#xff0c;改变了互联网&#xff0c;也改变…

Excel表格中重要的数据如何隐藏不显示

Excel表格中重要的数据如何隐藏不显示 目录 Excel表格中重要数据值如何隐藏不显示 1、选中需要隐藏的单元格数值 2、鼠标右键 点击“设置单元格格式” 3、点击“自定义”在“类型”一栏中输入三个“;”号即可&#xff08;输入法切换在英文状态输入分号&#xff09;。 4、想…

关于poi/Npoi创建批注后,EXCEL不能显示,wps能显示的问题(2020-08-25)

一般百度到这个&#xff1a; https://blog.csdn.net/zyr2206328732/article/details/48341191 实测不是作者描述的原因。 我的需求上&#xff1a;在列名&#xff08;一个集合&#xff09;增加注释。 代码如下&#xff1a;Row headRow sheet.createRow(0);XSSFDrawing drawing…

esayExcel自定义注解导出表头批注

注解 package com.baidu.activitidemo.annotation;import com.baidu.activitidemo.handler.ExcelRemarkHandler;import java.lang.annotation.*;/*** 设置表头的批注, 需要配合{link ExcelRemarkHandler}使用** author li* date 2022/09/24*/ Target(ElementType.FIELD) Reten…

把Excel批注的“红三角”放在单元格左上角_Excel的批注功能,全部知道的不足10%,你会用的仅仅是冰山一角...

Excel【审阅】功能区中,显示了5个最基本的功能,如下图红色矩形框所示,这也是我们最常用的基础。其实,Excel中批注的相关操作远不止这些,一起来看看。 插入删除批注 【插入批注】 插入批注的方法常见的有这3种: ❶ 【审阅】→【新建批注】。 ❷ 单元格点击右键,插入批注。…

Excel批注教学:一键添加多个不同批注

今天要和大家分享的是Excel一键添加多个不同批注&#xff0c;看下面终端经销商反馈函件的统计表&#xff0c;想把最后一列的反馈情况&#xff0c;对应的添加为经销商的批注内容&#xff0c;如何操作呢 &#xff08;方方格子插件&#xff09; 1.选中需要添加批注的单元格 ​ 2.…

word保存html格式批注没有了,word批注不见了 怎么显示批注

为什么word批注里的字都没有了,怎么恢复? 文档处于修订状态,需要关闭它。 在退出修订模式前需要作以操作:1、接受或拒绝修改:审阅--更改--接受/拒绝,根据需要进行设置;2、显示最终状态:审阅--修订--显示最终状态(显示以供审阅),选择“最终状态”;退出修订模式:审阅--…

WPS表格Excel:提取批注到单元格(宏实现)

问题和目标&#xff1a;将带批注的数据 Public Function Pz(x As Range) Pz x.Cells.Comment.Text End Function 然后&#xff0c;在EXCEL中输入 Pz(A1) 就返回A1的批注内容了 打开VB编辑器&#xff08;wps收费&#xff0c;office可用AltF11打开VB编辑界面&#xff09; 插入模…

C# 如何在Excel表格中插入、编辑和删除批注(二)修改、隐藏Excel批注

修改、隐藏Excel批注 更多文章:http://www.iis7.com/ 步骤1&#xff1a;创建一个Workbook类对象&#xff0c;并加载Excel文档 Workbook workbook new Workbook(); workbook.LoadFromFile(“AddComment.xlsx”); 步骤2&#xff1a;获取第一个工作表 Worksheet sheet wor…

Excel答粉丝问:批量将单元格内容转为批注

点赞再看&#xff0c;养成习惯&#xff1b;烈士暮年&#xff0c;壮心不已。 微信搜索【亦心Excel】关注这个不一样的自媒体人。 本文 GitHub https://github.com/hugogoos/Excel 已收录&#xff0c;包含Excel系统学习指南系列文章&#xff0c;以及各种Excel资料。 前几天有粉丝…

更改Excel单元格中批注的显示位置

当在Excel中插入一个批注时&#xff0c;你可以把它调整到不同的位置(如 单元格的左边等等)。但是有一个问题&#xff0c;当把批注的显示方式更改为 只显示标示符 后。你移到鼠标到单元格上时批注还是恢复初始的位置-即显示单元格的右方。下面这个小程序就可以 解决这个问题。 O…