欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Python 每日话题|No.24.example.5-PyMol.4-alter-change

最编程 2024-07-08 22:55:22
...

Emm,想错了

竟然忘掉了要抓重点

PyMol中cmd指令很多,常用的写一下就好

我又不是遍历hhh

alter

web:https://pymolwiki.org/index.php?title=Alter&redirect=no

参考:https://kpwulab.com/2020/01/14/pymol-alter-your-molecules/#:~:text=“alter”%20is%20a%20useful%20function%20in%20PyMOL.%20One,to%20redraw%20secondary%20structure%20of%20ubiquitin%20%28PDB%3A%201UBQ%29.

描述

"alter"是一个十分重要的指令

他可以重新对氨基酸编号进行重排,重命名蛋白链,重新定义二级结构。

使用

alter selection, expression

案例

# 更改链名
alter chain A, chain='B'
alter all, resi=str(int(resi)+100)
sort
# 改变原子的vdw半径
alter (name P), vdw=1.90
# 如果dots, spheres, mesh or surface等表现形式被使用,则使用rebuild
rebuild

注意

其可改变的属性有

name, resn, resi, chain, alt, elem, q, b, segi,type (ATOM,HETATM), partial_charge, formal_charge,text_type, numeric_type, ID, vdw
在更改属性之后,需要进行sort

如果dots, spheres, mesh or surface等表现形式被使用,则使用rebuild
则需要rebuild

解释

视觉型学习者这里来

案例蛋白为:1UBQ

1.改变链名

alter (chain A),chain='B' 
sort

更改之后

原始蛋白文件

更改之后蛋白文件

右边的A应该是segid,而左边的A则为chainID

所以,alter真实的改变了链名

2.修改某一条链中的氨基酸的编号,

类似于从氨基酸14-15变为氨基酸114-115

看下图,可以看到氨基酸从0开始

输入指令

alter (chain A),resi=str(int(resi)+100) 
sort

编号从100开始

看下pdb文件

原始文件

更改之后

1.改变二级结构显示

拿到一个蛋白1UBQ

蛋白质链上40-45位氨基酸的主链,以stick形式显示,C为黄色

重新定义40-45的二级结构

命令框中输入指令

alter 40-45/, ss='L' 
rebuild

此时显示为loop

命令框中输入

alter 40-45/, ss='H' 
rebuild

此时显示为螺旋

可以看到 alter只是影响二级结构的显示,并不是真正的改变了主链原子的空间位置

最后,仍然来强制使用python,将HETATM 标记更改了ATOM

In [1]: import pymol

In [2]: Feature has expired.
Feature:       PYMOL_MAIN
Expire date:   01-nov-2020
License path:  /Users/sujiaqi/.pymol/license.lic:
FlexNet Licensing error:-10,32
For further information, refer to the FlexNet Licensing documentation,
available at "www.flexerasoftware.com".

In [3]: pymol.cmd.load('1ubq.cif')
 PyMOL not running, entering library mode (experimental)
 ExecutiveLoad-Detail: Detected mmCIF
    
In [6]: pymol.cmd.get_object_list()
Out[6]: ['1ubq']

In [7]: pymol.cmd.alter('all', 'type="ATOM"')
Out[7]: 660

In [8]: pymol.cmd.sort('all')
In [9]: pymol.cmd.save('1ubq_c.pdb','1ubq')