Python:PDB文件中原子和残基重新编号

Python脚本:PDB文件中原子和残基重新编号

 

Command:

python renumber_pdb.py -i protein.pdb -a -r > output.pdb

 

 

 

renumber_pdb.py

# Python 3 script to atoms and residues in a PDB file.
#
# run
# ./renumber.py -h
# for help
#class Pdb(object):""" Object that allows operations with protein files in PDB format. """def __init__(self, file_cont = [], pdb_code = ""):self.cont = []self.atom = []self.hetatm = []self.fileloc = ""if isinstance(file_cont, list):self.cont = file_cont[:]elif isinstance(file_cont, str):try:with open(file_cont, 'r') as pdb_file:self.cont = [row.strip() for row in pdb_file.read().split('\n') if row.strip()]except FileNotFoundError as err:print(err)if self.cont:self.atom = [row for row in self.cont if row.startswith('ATOM')]self.hetatm = [row for row in self.cont if row.startswith('HETATM')]self.conect = [row for row in self.cont if row.startswith('CONECT')]def renumber_atoms(self, start=1):""" Renumbers atoms in a PDB file. """out = list()count = startfor row in self.cont:if len(row) > 5:if row.startswith(('ATOM', 'HETATM', 'TER', 'ANISOU')):num = str(count)while len(num) < 5:num = ' ' + numrow = '%s%s%s' %(row[:6], num, row[11:])count += 1out.append(row)return outdef renumber_residues(self, start=1, reset=False):""" Renumbers residues in a PDB file. """out = list()count = start - 1cur_res = ''for row in self.cont:if len(row) > 25:if row.startswith(('ATOM', 'HETATM', 'TER', 'ANISOU')):next_res = row[22:27].strip() # account for letters in res., e.g., '1A'if next_res != cur_res:count += 1cur_res = next_resnum = str(count)while len(num) < 3:num = ' ' + numnew_row = '%s%s' %(row[:23], num)while len(new_row) < 29:new_row += ' 'xcoord = row[30:38].strip()while len(xcoord) < 9:xcoord = ' ' + xcoordrow = '%s%s%s' %(new_row, xcoord, row[38:])if row.startswith('TER') and reset:count = start - 1out.append(row)return outif __name__ == '__main__':import argparseparser = argparse.ArgumentParser(description='Renumber residues in a pdb file',formatter_class=argparse.RawTextHelpFormatter)parser.add_argument('-i', '--input', help='Input PDB file')parser.add_argument('-s', '--start', help='Number of the first residue in the renumbered file (default = 1)')parser.add_argument('-a', '--atoms' ,action='store_true', help='Renumbers atoms')parser.add_argument('-r', '--residues', action='store_true', help='Renumbers residues')parser.add_argument('-c', '--chainreset', action='store_true', help='Resets the residue renumbering after encountering a new chain.')parser.add_argument('-v', '--version', action='version', version='v. 1.0')args = parser.parse_args()if not args.input:print('{0}\nPlease provide an input file.\n{0}'.format(50* '-'))parser.print_help()quit()if not args.start:start = 1else:start = int(args.start)if not args.atoms and not args.residues:print('{0}\nPlease provide at least the --atoms or --residues flag.\n{0}'.format(50* '-'))parser.print_help()quit()pdb1 = Pdb(args.input)if args.atoms:pdb1.cont = pdb1.renumber_atoms(start=start)if args.residues:pdb1.cont = pdb1.renumber_residues(start=start, reset=args.chainreset)for line in pdb1.cont:print(line)

 

效果:

 

参考:

https://github.com/AspirinCode/protein-science/tree/master/scripts-and-tools/renumber_pdb


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382185.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

VSCode插件生成编号、目录、文件目录树

安装VSCode 官方地址&#xff1a;https://code.visualstudio.com/ 下载安装完毕后在扩展中安装中文插件Chinese (Simplified) Markdown自动生成编号和目录 安装插件Markdown All in One配置插件&#xff0c;将目录起始级别由1改为2 打开MD文档&#xff0c;右键–命令面板&…

MarkDown标题自动添加编号

转自&#xff1a;MarkDown标题自动添加编号 说明&#xff1a; 这是一个实现给本地 Markdown 文件添加标题编号的 python 脚本。可与 Markdown文件自动生成目录 搭配使用。 比如说你现在有一个 Markdown 文件&#xff0c;这个文件有很多级标题且标题没有编号&#xff0c;如图&am…

python docx 读取自动编号

最近需要用python读取docx文档&#xff0c;然后遇到python-docx无法读取到自动编号的问题&#xff0c;例如我们要读取的docx文档&#xff1a; 接下来我们读取文档的文本内容&#xff1a; from docx import Documentdoc Document(simple.docx)for para in doc.paragraphs:tex…

教你用最简单的方法,将数百个文件快速添加编号的方法

在管理文件的时候&#xff0c;经常要给大量的文件名添加上编号要怎么操作呢&#xff1f;今天小编教你们如何用最短的时间来添加文件编号的方法。 使用工具&#xff1a;云炫文件管理器 一、登陆软件&#xff0c;并选择“文件批量重命名”。&#xff08;通过使用小技巧对软件快…

批量删除文件名前缀编号

在处理文件的时候&#xff0c;如何将多个文件名称上的前缀编号一一删除呢&#xff1f;今天小编给大家分享一个新的处理技巧&#xff0c;下面一起来试试。 所需工具 文件素材若干 操作步骤 运行【文件批量改名高手】&#xff0c;在“文件批量管理任务”中&#xff0c;导入文件…

第024篇:ArcGIS中实现要素的自动编号

最近又用到这个自动编号功能,所以翻出来了老博客。之前写的太糙了,这次找出来发现连自己都不会用了,这豆腐渣工程 鸣谢:一位不轻易透明姓名的大佬儿 使用场景:给shp里的要素重新编号。 代码实现:给Id字段从1开始以1递增自动编号 (一)ArcMap中,打开Python窗口,输入…

计算机设备编号中字母代号对照,设备编号设置方法(一)

在现代化企业中,固定资产的种类、数量很多,尤其是设备、管线、仪器仪表等,占的比重较大,而且同类设备也较多,因此,应对这些固定资产编号。固定资产编号的方法应力求科学、直观、简便、便于统一管理,又应减少文字说明提高工作效率。目前一些单位已运用电子计算机来汇总、…

arcgis用python字段自动编号_属性表字段自动编号

一、利用Python进行自动编号 打开ARCGIS——右击文件打开属性表——选择需要操作的字段(Feature)——打开字段计算器 选择python——字段选择Feature——勾选显示代码块——预逻辑脚本代码中输入代码——Feature中输入autoIncrement()——点击确定 自动编号的python代码如下&am…

文件的编码方式

1、GBK编码 java的默认编码方式是GBK编码方式&#xff0c;一个中文对应2个字节&#xff0c;一个英文占一个字节 2、utf-8 utf-8的编码方式中&#xff0c;一个中文对应三个字节&#xff0c;一个英文占一个字节 3、utf-16be utf-16be编码方式是java的编码方式&#xff0c;不…

怎么批量给文件名编号?

工作中我们可能会面的很多的文件&#xff0c;一项工作中可能会涉及上百个文件&#xff0c;给这些文件编号就变得非常的重要&#xff0c;编号后的文件更加容易查找&#xff0c;方便我们的日常使用和保存。最简单的方法是一个一个文件进行重命名修改添加编号就可以了&#xff0c;…

C语言笔试训练【第九天】

文章目录 &#x1f47f;1、下列程序的输出是&#xff08; &#xff09;&#x1f48e;2、二维数组X按行顺序存储&#xff0c;其中每个元素占1个存储单元。若 X[4][4] 的存储地址为 Oxf8b82140 , X[9][9] 的存储地址为 Oxf8b8221c ,则 X[7][7] 的存储地址为&#xff08; &#xf…

模仿学习笔记:行为克隆

1 模仿学习 模仿学习 (Imitation Learning) 不是强化学习&#xff0c;而是强化学习的一种替代品。模仿学习与强化学习有相同的目的&#xff1a; 两者的目的都是学习策略网络&#xff0c;从而控制智能体。模仿学习与强化学习又有不同的原理&#xff1a; 模仿学习向人类专家学习…

WPF界面设计学习

github上发现了一个不错的项目&#xff1a; https://github.com/HenJigg/wpf-uidesign 还配有B站的学习视频&#xff1a; https://space.bilibili.com/32497462 看了这个项目&#xff0c;觉得自己学了这么多年的WPF&#xff0c;界面还设计的这么丑&#xff0c;顿时脸都不知道往…

联邦学习(Federated Learning)

联邦学习简介 联邦学习&#xff08;Federated Learning&#xff09;是一种新兴的人工智能基础技术&#xff0c;其设计目标是在保障大数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下&#xff0c;在多参与方或多计算结点之间开展高效率的机器学习。其…

机器学习(Machine Learning)

简介 bili 吴恩达 机器学习 这是一门让计算机在没有明确编程的情况下学习的科学。 亚瑟塞缪尔(1959)&#xff1a;赋予计算机学习能力而不被明确编程的研究领域。 机器学习作为人工智能的一个子领域。专门研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或…

机器学习丨监督学习与无监督学习

较为通俗易懂的参考&#xff1a;2 监督学习与无监督学习 表述比较清晰的参考&#xff1a;监督学习和无监督学习的区别 前言 机器学习算法最主要两个分类就是监督学习、无监督学习。&#xff08;此外强化学习和推荐系统也都是机器学习算法的一员&#xff09;&#xff08;强化学…

深度学习面试题

深度学习面试题 1.深度学习常用算法&#xff0c;及相应应用场景有哪些2.什么数据集不合适做深度学习3.如何确定CNN卷积核通道数和卷积输出层的通道数4.什么是卷积5.什么是CNN的池化层&#xff08;pool&#xff09;6.CNN常用的几个模型7.CNN的特点以及优势8.卷积神经网络CNN中池…

机器学习的实验

目录 BP神经网络预测波士顿房价 1. 神经网络基本概念 1.1概念 1.2发展 CNN RNN GAN 2.神经网络基本框架 2.1单元/神经元 2.2 连接/权重/参数 2.3偏置项 2.4超参数 2.5激活函数 2.6层 3.神经网络算法 4.算法方案 5. 实验 6.参考文献 BP神经网络预测波士顿房价 …

联邦学习概述

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/122779883 一、联邦学习的定义与应用场景 联邦学习是从技术维度出发&#xff0c;重点研究其中的隐私保护和数据安全问题的一种技术。其旨在建立一个基于分布数据集的联邦学习模型。 对于联邦学习的过…

基于Pytorch的深度学习激励函数总结

基于Pytorch的深度学习激励函数总结 1 激励函数定义2 常见激励函数2.1 Threshold函数2.1.1 数学定义2.1.2 常见性质2.1.3 Pytorch实现 2.2 Tanh函数2.2.1 数学定义2.2.2 常见性质2.2.3 Pytorch实现 2.3 Sigmoid函数2.3.1 数学定义2.3.2 常见性质2.3.3 Pytorch实现 2.4 ReLU函数…