四、在af中使用pymol(三)添加标签,测量结构大小
这里我们调用了cgo类去绘图label,参考 https://pymolwiki.org/index.php/Category:CGO
先定义一个函数,然后调用它,具体看注释
def add_label(w,obj,s):
#调用cgo类
cgo = []
#获取最大最小坐标
minxyz,maxxyz = cmd.get_extent(obj, state=0)
#获取中心坐标
#获取大小坐标
size_x, size_y, size_z = [maxxyz[0]-minxyz[0], -minxyz[1]+maxxyz[1],-minxyz[2]+maxxyz[2]]
#获取中心坐标最大值
maxl=max(center_x,center_y,center_z)
#获取label的位置坐标,放在z轴上,x轴负移动1-8倍中心坐标值,避开结构,自己调整
#根据坐标轴中心位置的大小,确定字体坐标轴的大小,从而确定字体大小,这里s取值为0.1-1.5,自己定
axesp=round(maxl*s,1)
axes = [[axesp,0.0,0.0],[0.0,axesp,0.0],[0.0,0.0,axesp]]
#创建字体标签
wire_text(cgo,plain,label_z_pos,w,axes)
#设定字体标签的粗细
cmd.load_cgo(cgo,'times')
#设定颜色
add_label ("happy",i,0.5) ##不支持中文哦
完整的代码,复制粘贴就可以执行:
cmd.remove("(solvent and 1G9A)")
add_label ("happy",i,0.5)
渲染后的效果图: