FAQs

Q1. 蛋白断裂

Q1. 老师您好 我用pymol显示相互作用的时候 show sticks 然后蛋白的beta折叠就断了 咋样显示让蛋白更好看一些不断裂呢?

../_images/break.png

A1. 参见 入门教程中的 show 和 show as 的区别。

Q2. 界面暗淡

Q2. pymol里面打开结构很暗,重装软件也没有用,怎么解决?

../_images/darkColor.png

A2. OpenGL模块不兼容,在setting中rendering中设置关闭opengl,或者重新装opengl驱动。或者点击 File-> reinitialize->original settings.

Q3. 消除虚线

Q3. 请问pymol如何消除自动补全的虚线啊?

../_images/1t48_dash.png

A3. 氨基酸缺失或者一段seq离开了自己原来的位置,pymol 会在它认为链接的地方加虚线。如果想要掩藏虚线,将其拆分成2个独立的object就可以了。

Q4. 透明物体消失

Q4. ray 渲染后内部非透明物体消失?

../_images/beforeR.jpg

Fig 1. befor ray

../_images/afterR.jpg

Fig 2. after ray

可通过间接的方法实现ray后内部非透明物体可见,保留3张图片,然后1.openPOCKET; 2. closePocket; 3.proteintCartoon. 然后把3张图图片导入到PhotoShop中,从上到下一次是123的顺序就可以了。

../_images/close_pocket.png

Fig 1. openPocket

../_images/open_pocket.png

Fig 2. closePocket

../_images/proteinC.png

Fig 3. proteinCartoon

../_images/ray_ok.jpg

Q5. Biological Assembly

Q5. 想请教老师们一个问题。我在pdb官网想下载一个蛋白,这个蛋白应该是个六聚体,图上也是这样显示的(功能上是多聚体), 但是我在下载栏下载pdb format下载结果却是单体,请问老师们知不知道这个问题如何解决?

../_images/Q52png2020-03-04_210149.474905.png

A5. 方法一 直接在PDB网站上下载相应的生物多聚体,点击Dowoload Files 然后选择对应的Biological Assembly. 在PYmol 中打开该文件,点击 Action->state->split 就可以了。适合PyMOL2。

../_images/A52020-03-04_210445.535110.png

方法二 直接打开单体文件,点击Action->generate->symmetry mates->within 5a (合适的半径进行拓展) 然后删除冗余的单体就可以了。

Q6 三角形表面

Q6. PyMOL如何渲染出下面图片的效果(三角形表面)?

../_images/triangle2020-03-19_224804.774831.png
A6. 从图中我们可以看出是光滑表面上加了一层三角形网格。该图片来源 Hex 网站
具体操作步骤,在pymol中第一次渲染普通表面,然后ray 背景透明保存成第一张图片。 然后在设置表面为三角形,
set surface_type,2

然后ray,然后再渲染表面,背景透明保存成第二张图片,注意该操作对电脑要求较高,建议使用20个以内的氨基酸蛋白尝试。 最后再在photohop中,把两张图片叠合在一起即可。

Q7. 如何同时打开两个pse文件?

A7. 首先File->open 打开第一个pse文件,然后继续File-open 选择第二个pse文件, 会弹出对话框,有3个选项:

  1. 打开最新的pse,原来的pse丢弃;
  2. 同时打开两个pse,如果有object重名,则自动修改名字
  3. 在新的窗口中打开新的pse.

因此,选第二个选项就可以打开2个pse 文件了。

../_images/pse_open2020-04-11_215545.726879.png

Q8. 疏水氨基酸和亲水氨基

如何在pymol里面可以鲜明地显示这种亲水氨基酸残基和疏水氨基酸残基区域吗,如下图所示?

../_images/hydrophbic2020-04-17_203412.809246.jpg

A8. 疏水氨基酸有9个:Gly,Ala,Val,Leu,Ile,Pro,Phe,Met,Trp。 The nine amino acids that have hydrophobic side chains are glycine (Gly), alanine (Ala), valine (Val), leucine (Leu), isoleucine (Ile), proline (Pro), phenylalanine (Phe), methionine (Met), and tryptophan (Trp).

非电极性(亲水)氨基酸有6个:Ser,Thr,Cys,Asn,Gln,Tyr。

注解

氨基酸性质的划分是基于其侧链R基团进行划分的。

Amino acids are grouped according to what their side chains are like.
The nine amino acids that have hydrophobic side chains are glycine (Gly), alanine (Ala), valine (Val),
leucine (Leu), isoleucine (Ile), proline (Pro), phenylalanine (Phe),
methionine (Met), and tryptophan (Trp).

Six amino acids have side chains that are polar but not charged.
These are serine (Ser), threonine (Thr), cysteine (Cys), asparagine (Asn), glutamine (Gln), and tyrosine (Tyr).
These amino acids are usually found at the surface of proteins, as discussed in the Proteins 2 module.

在命令行窗口,输入下面4个命令就可以。

color yellow, resn Gly+Ala+Val+Leu+Ile+Pro+Phe+Met+Trp
as sphere, resn Gly+Ala+Val+Leu+Ile+Pro+Phe+Met+Trp
as sphere,   resn Ser+Thr+Cys+Asn+Gln+Tyr+Asp+Glu+Arg+Lys+His
color blue,  resn Ser+Thr+Cys+Asn+Gln+Tyr+Asp+Glu+Arg+Lys+His
../_images/hydrophbic_polar2020-04-17_205703.434193.png

Q9. 缺失残基resi 26-39怎么在PyMOL中用虚线表示?

缺失残基resi 26-39怎么在PyMOL中用虚线表示? 如果缺失残基的数目小于10个,在pymol 1.8.2+自动在gap处添加虚线。 如果超过10个,则需要手动设置是否显示虚线。 A9. 关闭虚线

set cartoon_gap_cutoff, 0
../_images/dash_gap_close2020-05-05_175215.468631.png

设置阈值,如果缺失的残基小于阈值,则显示虚线,默认是10

set cartoon_gap_cutoff, 100
../_images/dash_gap_open2020-05-05_175211.121721.png

Q10. 不能正确显示cartoon 等二级结构

../_images/cartoon_disorder2020-05-22_225559.032607.png

分析后发现是残基的链接顺序和编号顺序不一致导致的,解决办法由有2种。 22号和23号在PyMOL默认认为相连号码的残基在空间是相连的。

方法一: 修改pdb文件,调整编号顺序。 方法二: 自动识别残基的可能链接顺序,暂时不支持rebuild导出正确的顺序。

set retain_order,1
dss all

修改后的效果

../_images/retain2020-05-22_225802.302280.png

Q11. 如何自定义label

如下图所示,显示了氨基酸的单字符和字符的位置ID,我如何指定将I93 指只显示为I,而不显示93呢? 请问有谁知道该如何处理吗?谢谢

../_images/labelRESN2020-05-23_161050.058198.png

通过label命令进行自定义就可以了,Label命令格式如下

label  atom, customLabel

第一个参数: 定位需要label的原子。 第二个参数: 字符串

在PyMOL中运行下述命令 label chain C and resi 93 and name CA,’I’ 就可以了。

../_images/labelI2020-05-23_162819.852188.png

Q12. 添加、修改chain ID

我模拟出来的PDB文件没有链的ID号,我想自己编辑一个链ID号上去,请问怎么进行编辑

../_images/chain_no2020-10-29_212823.817026.png

方法一: 在pymol 命令窗口输入命令

PyMOL>alter qseq1.b99990001, chain='A'
 Alter: modified 967 atoms.
PyMOL>sort
../_images/chain_add2020-10-29_212834.729409.png

方法二: 在文本中修改

Q13. 用pymol怎么显示蛋白的亲水疏水表面

下载脚本 color_h 。 到工作目录下面(如D:/),打开pymol切换到工作目录,载入蛋白,运行脚本。 color_h 绘制疏水表面,红色越深疏水越强; color_h2 绘制亲水表面,绿色越深,亲水越强。

运行 color_h 命令,

../_images/pymol_hydrosurf2021-03-18_195957.561543.png

运行 color_h2 命令,

../_images/pymol_hydrosurf22021-03-18_200335.570229.png

参考: https://pymolwiki.org/index.php/Color_h

Q14. 颜色按钮无法正常显示颜色

方案一: 尝试对object着一个颜色,然后再点击颜色按钮;

方案二: 使用命令行,尝试不同的颜色编码

util.cba(1,"obj01",_self=cmd)
util.cba(2,"obj01",_self=cmd)
util.cba(3,"obj01",_self=cmd)
util.cba(4,"obj01",_self=cmd)
util.cba(5,"obj01",_self=cmd)

Q15. 如何RmsdByResidue插件?

这个脚本怎么使用呀? https://pymolwiki.org/index.php/RmsdByResidue
第一个问题我装不上,我看了一下是不是因为他是根据python2 写的?
第二个 我有的同学装上了,但是也不会用。

我打开发现这个脚本是我师兄Zhenting Gao写的,可能使用频率不是很高,没有维护下去。 里面的细节处理值得学习一下。

第一个问题主要有2个问题:

  1. 上传到pymolwiki后缩进不正确,建议提高文件下载链接;
  2. 所有的print添加括号,这样可以兼容python2 和python3。

可直接下载笔者修改后的脚本 rmsdbyresidues_v2

第二个问题如何使用, ` rmsdByRes referenceProteinChain,sel, targetProteinChain `

注解

  1. 使用该命令前,先对结构进行align叠合。
  2. 对应氨基酸的原子数目要一致,不能一个有氢原子,另一个没有氢原子。建议删除氢原子。

用法如下图所示:

../_images/rmsdbyres2021-10-13_210339.839139.png

Q16. 如何找底物附近的氨基酸?

以PDB ID: 4O75为例,在mode为residues模式先,选中底物,出现sele,

在sele的对象上点击A->MODIFY->RESIDUES WITHIN 4A; 然后点击A->copy to object new。

../_images/resis2021-12-24_201248.543795.png

创建了object1, 对object1进行show as sticks和label residues就可以看到附近4A的残基了。

../_images/labelress2021-12-24_201253.089697.png

Q17. 如何把两个object合并到一个pdb文件中?

点击object1的A(action)->copy to objec->object2。 然后保存object2就可以了。 如下图所示

../_images/copy2022-04-06_201835.095965.png

Q18. 如何快速查看感兴趣原子的坐标?

鼠标点击选中感兴趣的原子,然后在命令行中运行下面的命令

print(cmd.get_model('sele').atom[0].coord)

Q19. pymol有没有命令返回在氨基酸编号,在小分子4A范围内氨基酸的编号?

这里以JAK1 (PDB ID:3EYG)为例,

示例代码如下:

from pymol import cmd
select mt1around5, name ca and byres (resn MI1 around 5 and polymer) and name ca
atoms =cmd.get_model("mt1around5").atom
[ print(a.resn,a.resi) for a in atoms]

Q20. 请问一个nmr的pdb文件中有很多个构象,如何求他的平均结构呢?

下载笔者编写的脚本 mutate.py ,保存到E盘,

这里以PDB ID: 1WYM为例,运行如下命令:

run e:/states_avg.py
fetch 1wym
states_avg 1wym
../_images/states_avg2022-05-04_155335.710707.png

关于该脚本的更详细说明,参见 高级教程->PyMol脚本->平均构象

Q21 如何调节PyMOL右侧窗口的大小

如果分子名字太长,默认pymol右侧窗口太小,这样名字会看不清。 鼠标左键点击右小角,如图所示,按住不放,移动鼠标就可以调节窗口宽度了。

../_images/pwin2022-05-10_120333.449379.png

Q22. 让含氢原子的键的stick和其他键的粗细保持一致?

默认pymol中含有氢原子的键的stick模式,要比其它键更细,这有什么办法可以让键的粗细保持一致?

命令如下:

PyMOL>set_bond line_width, 10,obj01
Setting: line_width set for 36 bonds in object "obj01".
PyMOL>as lines, obj01
PyMOL>ray

默认效果:

../_images/hbondradiuslittle2022-05-26_122242.250496.png

修改后效果:

../_images/hbondradiuslittle_ray2022-05-26_122248.542569.png

注意事项:

注解

  1. 只有在ray的状态下可以看到效果,点一下就消失。
  2. 存图的时候,进行ray。

Q23. PyMOL工作路径异常怎么恢复?

场景: 某某修改PyMOL的环境变量PATH后,发现工作路径异常, 每次打开pdb文件或者sdf文件,工作路径自动定位到C盘。

需求:每次打开pdb文件,工作路径自动切换到pdb文件所在路径。

测试发现和环境变量无关,暂时不清楚是什么原因导致工作路径异常。

File -> Reinitialize-> Oiginal Settings 进行设置。 如果一次不行,可以多重复几次。

Q24. 如何在heme中心的Fe在垂直上方加一个O原子,形成Fe=O,键长约1.64埃?

以PDB ID: 3CBD 为例,如下图所示,我们可以看到HEME下方有一个Cys400和Fe进行配位。

../_images/3CBD_IN2022-06-11_150914.744623.png

现在我们想在Fe的正上方加一个O原子,形成Fe=O,键长约1.64埃。点击pymol的菜单窗口, 右上方的Builder按钮,在chemical中选择-OCH3片段,然后点击Fe原子。关闭builder窗口。 接着删除CH3原子,点击Wizard 测量Fe和氧原子的距离,以及测量 N-Fe-O 的角度, 接着切换mouse mode为editing模式,按住ctrl键和鼠标左键移动氧原子到合适的位置就可以了。 最后再在builder中把FeO键修改为双键。首先从builder中选择双键,再点击FeO键就可以了。

../_images/builder2022-06-11_150730.774429.png

调整后的效果图如下:

../_images/3CBD_out2022-06-11_150919.539067.png

Q25. 请问如何ray,使颜色不变?

pymol 经常使用,难免会遇到一些异常情况,比如ray 颜色发生变化。

ray 之前的图片如下:

../_images/ray_b2022-07-22_215636.925408.png

ray 之后的图片如下:

../_images/ray_a2022-07-22_215642.055570.png

虽然清晰度变高,但是颜色失真明显。

遇到问题不要慌,先查看ray的可选参数:

help ray
PyMOL>help ray

DESCRIPTION

    "ray" creates a ray-traced image of the current frame. This
    can take some time (up to several minutes, depending on image
    complexity).

USAGE

    ray [width [,height [,antialias [,angle [,shift [,renderer [,quiet
        [,async ]]]]]]]]]

ARGUMENTS

    width = integer {default: 0 (current)}

    height = integer {default: 0 (current)}

    antialias = integer {default: -1 (use antialias setting)}

    angle = float: y-axis rotation for stereo image generation
    {default: 0.0}

    shift = float: x-axis translation for stereo image generation
    {default: 0.0}

    renderer = -1, 0, 1, or 2: respectively, default, built-in,
    pov-ray, or dry-run {default: 0}

    async = 0 or 1: should rendering be done in a background thread?

EXAMPLES

    ray
    ray 1024,768
    ray renderer=2

NOTES

    Default width and height are taken from the current viewpoint. If
    one is specified but not the other, then the missing value is
    scaled so as to preserve the current aspect ratio.

    angle and shift can be used to generate matched stereo pairs

    renderer = 1 uses PovRay.  This is Unix-only and you must have
        "povray" in your path.  It utilizes two two temporary files:
        "tmp_pymol.pov" and "tmp_pymol.png".

    See "help faster" for optimization tips with the builtin renderer.
    See "help povray" for how to use PovRay instead of PyMOL's
    built-in ray-tracing engine.

PYMOL API

    cmd.ray(int width, int height, int antialias, float angle,
            float shift, int renderer, int quiet, int async)
SEE ALSO

    draw, png, save

我们可以看到examples中有一个renderer参数,试试看。

如果感觉还不行的话,再试试快速ray的命令dray。

Draw creates an oversized and antialiased OpenGL image using the current window.
It's like Ray but not ray traced. Also,
as now with Ray the oversized images are scaled and shown in the viewer window.
As Draw doesn't ray trace the shadows of the scene, it is far faster than ray.

draw 后的效果图:

../_images/dray2022-07-22_215644.397923.png

Q26. select+save 和 creat+save的区别

一个pdb文件中有2个小分子,希望保存成sdf数据库,该数据库中有2个小分子,则使用select+save组合。

示例代码:

from pymol import cmd
cmd.load("target.pdb")
cmd.load("receptor.pdb")
cmd.select("ligand","organic")
cmd.save("ligs.sdf","ligand")
cmd.quit()

一个pdb文件中有2个小分子,希望保存成sdf数据库,该数据库中有1个小分子包含2个片段,则使用create+save组合。

示例代码:

from pymol import cmd
cmd.delete("all")
cmd.load("target.pdb")
cmd.load("receptor.pdb")
cmd.create("ligand","organic")
cmd.save("ligsssss.sdf","ligand")
cmd.quit()

Q27. 保存多个object为一个pdb文件

确保segment都为空,确保chain 不重复。

建议空间上按照一定的顺序,把chain分别命名为”A”,”B”,”C”,”D”等。