1.先从pdb下载相应的共晶结构,然后用pymol打开
2.将配体结构选中:选中右侧的A中的下图
2.选中配体:
3.在命令行中执行:
set_name sele,ligand #将选中sele命名为ligand
centerofmass ligand
便会返回配体的中心坐标点
4.找配体盒子:参考地址 https://zhuanlan.zhihu.com/p/427433083
稍作修改之后的版本记录:
from pymol.cgo import *
from random import randint
def gridbox(center_x=1, center_y=1, center_z=1, size_x=20, size_y=20, size_z=20, name="gridbox", r1=0,
g1=0, b1=1, trasp=0.2):
center_x = float(center_x)
center_y = float(center_y)
center_z = float(center_z)
size_x = float(size_x)
size_y = float(size_y)
size_z = float(size_z)
r1 = float(r1)
g1 = float(g1)
b1 = float(b1)
trasp = float(trasp)
p1 = [center_x - size_x / 2, center_y - size_y / 2, center_z + size_z / 2]
p2 = [center_x - size_x / 2, center_y + size_y / 2, center_z + size_z / 2]
p3 = [center_x + size_x / 2, center_y + size_y / 2, center_z + size_z / 2]
p4 = [center_x + size_x / 2, center_y - size_y / 2, center_z + size_z / 2]
p5 = [center_x - size_x / 2, center_y - size_y / 2, center_z - size_z / 2]
p6 = [center_x - size_x / 2, center_y + size_y / 2, center_z - size_z / 2]
p7 = [center_x + size_x / 2, center_y + size_y / 2, center_z - size_z / 2]
p8 = [center_x + size_x / 2, center_y - size_y / 2, center_z - size_z / 2]
obj = [
ALPHA, trasp,
COLOR, r1, g1, b1,
BEGIN, TRIANGLE_STRIP,
VERTEX, p1[0], p1[1], p1[2],
VERTEX, p2[0], p2[1], p2[2],
VERTEX, p4[0], p4[1], p4[2],
VERTEX, p3[0], p3[1], p3[2],
END,
BEGIN, TRIANGLE_STRIP,
# COLOR,1,0,0,
VERTEX, p1[0], p1[1], p1[2],
VERTEX, p5[0], p5[1], p5[2],
VERTEX, p4[0], p4[1], p4[2],
VERTEX, p8[0], p8[1], p8[2],
END,
BEGIN, TRIANGLE_STRIP,
VERTEX, p4[0], p4[1], p4[2],
VERTEX, p8[0], p8[1], p8[2],
VERTEX, p3[0], p3[1], p3[2],
VERTEX, p7[0], p7[1], p7[2],
END,
BEGIN, TRIANGLE_STRIP,
VERTEX, p7[0], p7[1], p7[2],
VERTEX, p3[0], p3[1], p3[2],
VERTEX, p6[0], p6[1], p6[2],
VERTEX, p2[0], p2[1], p2[2],
END,
BEGIN, TRIANGLE_STRIP,
# COLOR,0,1,0,
VERTEX, p2[0], p2[1], p2[2],
VERTEX, p6[0], p6[1], p6[2],
VERTEX, p1[0], p1[1], p1[2],
VERTEX, p5[0], p5[1], p5[2],
END,
BEGIN, TRIANGLE_STRIP,
VERTEX, p1[0], p1[1], p1[2],
VERTEX, p5[0], p5[1], p5[2],
VERTEX, p4[0], p4[1], p4[2],
VERTEX, p8[0], p8[1], p8[2],
END,
BEGIN, TRIANGLE_STRIP,
VERTEX, p5[0], p5[1], p5[2],
VERTEX, p8[0], p8[1], p8[2],
VERTEX, p6[0], p6[1], p6[2],
VERTEX, p7[0], p7[1], p7[2],
END,
]
cmd.load_cgo(obj, name)
minX = center_x - size_x / 2
maxX = center_x + size_x / 2
minY = center_y - size_y / 2
maxY = center_y + size_y / 2
minZ = center_z - size_z / 2
maxZ = center_z + size_z / 2
boundingBox = [
LINEWIDTH, float(2),
BEGIN, LINES,
COLOR, float(1), float(0), float(0),
VERTEX, minX, minY, minZ,
VERTEX, minX, minY, maxZ,
VERTEX, minX, maxY, minZ,
VERTEX, minX, maxY, maxZ,
VERTEX, maxX, minY, minZ,
VERTEX, maxX, minY, maxZ,
VERTEX, maxX, maxY, minZ,
VERTEX, maxX, maxY, maxZ,
VERTEX, minX, minY, minZ,
VERTEX, maxX, minY, minZ,
VERTEX, minX, maxY, minZ,
VERTEX, maxX, maxY, minZ,
VERTEX, minX, maxY, maxZ,
VERTEX, maxX, maxY, maxZ,
VERTEX, minX, minY, maxZ,
VERTEX, maxX, minY, maxZ,
VERTEX, minX, minY, minZ,
VERTEX, minX, maxY, minZ,
VERTEX, maxX, minY, minZ,
VERTEX, maxX, maxY, minZ,
VERTEX, minX, minY, maxZ,
VERTEX, minX, maxY, maxZ,
VERTEX, maxX, minY, maxZ,
VERTEX, maxX, maxY, maxZ,
END
]
p4 = '_4' + str(randint(0, 100))
p5 = '_5' + str(randint(0, 100))
p6 = '_6' + str(randint(0, 100))
p7 = '_7' + str(randint(0, 100))
cmd.pseudoatom(pos=[minX, minY, minZ], object=p4)
cmd.pseudoatom(pos=[minX, minY, maxZ], object=p5)
cmd.pseudoatom(pos=[minX, maxY, minZ], object=p6)
cmd.pseudoatom(pos=[maxX, minY, minZ], object=p7)
cmd.distance(None, p4, p7)
cmd.distance(None, p4, p6)
cmd.distance(None, p4, p5)
cmd.hide("nonbonded")
boxName = "box_IABB_" + str(randint(0, 100))
cmd.load_cgo(boundingBox, boxName)
cmd.extend('gridbox', gridbox)
在pymol中输入:
run E:\box.py
gridbox 2, 2, 2, 10, 10, 10, 0.7, 0.7, 0.7 ,0.2
# 参数解释:盒子中心为[2, 2, 2],盒子尺寸为[10, 10, 10],盒子RGB颜色为[0.7, 0.7, 0.7],透明度为0.2