在pymol中从笛卡尔坐标绘制彩色球体

7 投票
2 回答
5807 浏览
提问于 2025-04-15 18:00

我在查找如何将以下关于珠子的信息转换成图形,这些信息包括笛卡尔坐标和能量:

23.4 54.6 12.3 -123.5 54.5 23.1 9.45 -56.7 .......

我想在pymol中绘制一个图形,里面每个原子都有一个半径为R的球体,球体的中心在它的坐标上,并且颜色是彩虹渐变的。

谢谢!

2 个回答

0

我对彩虹渐变的部分不是很明白,不过关于上面/下面的代码,我需要把它改成这样:

import pymol

from pymol.cgo import *

from pymol import (
                    
                    cmd ,
                    )


print('########## PYMOL VERSION ##########################################')
print('         ',  cmd.get_version() )
print('###################################################################')


pymol.finish_launching()

spherelist = [
   [COLOR,    0.100,    1.000,    0.000,
   SPHERE,   30.304,   30.407,   30.531,0.30],
   [COLOR,    1.000,    0.000,    0.000,
   SPHERE,   30.250,   30.250,   30.250,0.20],
    ]

for i in spherelist:
    
    a = str(spherelist.index(i))

    cmd.load_cgo(i, 'sphere_'+a )

在Pymol版本中,根据输出结果:

########## PYMOL VERSION ##########################################
          ('2.3.0',


要让单独的对象像 spheres_0spheres_1 看起来像这样:

在这里输入图片描述

我得查看代码,才弄明白在 load_cgo 中缺少的第三个参数,这在维基上没有提到: Load CGO PyMOLWiki,不过我猜 zoom 这个参数可能在很多命令中都可以用:

cmd.load_cgo(obj , cgo_name , zoom=0)

10

你在渲染的内容和分子结构真的有关系吗?也就是说,使用PyMol的目的是什么呢?

如果你是在绘制某个分子结构,我建议你直接输出一个自定义的PDB文件,里面包含球体的坐标(你可以利用每个ATOM行的B因子字段来控制每个原子的颜色,在PyMol中显示出来)。

如果你不是在绘制分子结构,使用PyMol的CGO接口会更合适。

根据PyMol的文档:

CGO球体是通过 SPHERE命令生成的。

SPHERE, x,y,z,d

其中x,y,z是球体中心的坐标,d是球体的直径。注意,COLOR命令用于设置球体的颜色。和LINES命令一样,只有在下一个要绘制的球体颜色变化时,才需要使用COLOR命令。

一个简单的例子:

from pymol.cgo import *
from pymol import cmd

spherelist = [
   COLOR,    0.100,    1.000,    0.000,
   SPHERE,   30.304,   30.407,   30.531,0.30,
   COLOR,    1.000,    0.000,    0.000,
   SPHERE,   30.250,   30.250,   30.250,0.20,
    ]

cmd.load_cgo(spherelist, 'segment',   1)

撰写回答