使用问答

北极星集群使用

当前位置: 首页 -> 使用问答 -> 北极星集群使用 -> 正文

四、在af中使用pymol(三)添加标签,测量结构大小

信息来源: 发布日期:2023-05-05

这里我们调用了cgo类去绘图label,参考 https://pymolwiki.org/index.php/Category:CGO

先定义一个函数,然后调用它,具体看注释

defadd_label(w,obj,s):

#调用cgo类

cgo =[]

#获取最大最小坐标

minxyz,maxxyz =cmd.get_extent(obj, state=0)

#获取中心坐标

center_x, center_y, center_z= [ (minxyz[0]+maxxyz[0])/2 , (minxyz[1]+maxxyz[1])/2, (minxyz[2]+maxxyz[2])/2 ]

#获取大小坐标

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倍中心坐标值,避开结构,自己调整

label_z_pos = [minxyz[0]-2*maxl, minxyz[1] , center_z]

#w="x:"+str(round(center_x,2))+" y:"+str(round(center_y,2))+" z:"+str(round(center_z,2))+" W:"+w

#根据坐标轴中心位置的大小,确定字体坐标轴的大小,从而确定字体大小,这里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.set("cgo_line_radius",0.5)

cmd.load_cgo(cgo,'times')

#设定颜色

cmd.color_deep("orange",'times',0)

cmd.zoom("all",1.0)

add_label("happy",i,0.5) ##不支持中文哦

完整的代码,复制粘贴就可以执行:

import pymol,os,codecs,re

from pymol import cmd

frompymol.wizardimport Wizard

from chempy import cpv

frompymol.cgoimport *

frompymol.vfontimport plain

from fnmatch import fnmatch

i="1G9A"

cmd.fetch(i)

cmd.remove("hydro")

cmd.remove("(solvent and 1G9A)")

defadd_label(w,obj,s):

cgo =[]

minxyz,maxxyz =cmd.get_extent(obj, state=0)

center_x, center_y, center_z= [ (minxyz[0]+maxxyz[0])/2 , (minxyz[1]+maxxyz[1])/2, (minxyz[2]+maxxyz[2])/2 ]

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_pos = [minxyz[0]-2*maxl, minxyz[1] , center_z]

#w="x:"+str(round(center_x,2))+" y:"+str(round(center_y,2))+" z:"+str(round(center_z,2))+" W:"+w

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.set("cgo_line_radius",0.2)

cmd.load_cgo(cgo,'times')

cmd.color_deep("orange",'times',0)

cmd.zoom("all",1.0)

add_label("happy",i,0.5)

cmd.save("%s.pse"%i,all,-1,"pse")

cmd.set("bg_rgb",'white')

cmd.set("ray_opaque_background",'1')

cmd.png("%s.png"%i,width=2000, height=1500, dpi=300, ray=1)

渲染后的效果图:

图片关键词