如何创建pymol重命名循环
how to create pymol rename loop
我想创建一个循环来更改 PyMol 中的交互名称。但是在一个选择循环之后它崩溃并且不起作用。
def get_dists(interactions): # interactions=([1,2], [3,4])
for i in interactions:
a = "////" + str(i[0]) + "/C2'"
b = "////" + str(i[1]) + "/C2'"
cmd.distance("(" + a + ")", "(" + b + ")")
for j in range(1, 599):
x = "dist" + "0" + str(j)
y = str(i[0]) + " " + str(i[1])
cmd.set_name(str(x), str(y))
在 Pymol 中,交互的默认名称是 dist01, 02, 03。
我想把这些改成1_3,5_59,4_8,(残基之间的相互作用)。
除了一件事,您的代码完全没问题:如果 PyMol 没有成功 set_name,整个脚本将中止。当您将其更改为时,它应该可以工作:
try:
cmd.set_name(str(x), str(y))
except:
print('failed to rename')
一些补充意见:
y = str(i[0]) + " " + str(i[1])
应该是 y = str(i[0]) + "_" + str(i[1])
- 此行可能用于填充零
x = "dist" + "0" + str(j)
。只有当 j
是单个数字时才需要,否则距离对象的名称是 dist20
或 dist123
cmd.set_name(str(x), str(y))
可以简化为 cmd.set_name(x, y)
因为 x
和 y
已经是 strings
.
我想创建一个循环来更改 PyMol 中的交互名称。但是在一个选择循环之后它崩溃并且不起作用。
def get_dists(interactions): # interactions=([1,2], [3,4])
for i in interactions:
a = "////" + str(i[0]) + "/C2'"
b = "////" + str(i[1]) + "/C2'"
cmd.distance("(" + a + ")", "(" + b + ")")
for j in range(1, 599):
x = "dist" + "0" + str(j)
y = str(i[0]) + " " + str(i[1])
cmd.set_name(str(x), str(y))
在 Pymol 中,交互的默认名称是 dist01, 02, 03。
我想把这些改成1_3,5_59,4_8,(残基之间的相互作用)。
除了一件事,您的代码完全没问题:如果 PyMol 没有成功 set_name,整个脚本将中止。当您将其更改为时,它应该可以工作:
try:
cmd.set_name(str(x), str(y))
except:
print('failed to rename')
一些补充意见:
y = str(i[0]) + " " + str(i[1])
应该是y = str(i[0]) + "_" + str(i[1])
- 此行可能用于填充零
x = "dist" + "0" + str(j)
。只有当j
是单个数字时才需要,否则距离对象的名称是dist20
或dist123
cmd.set_name(str(x), str(y))
可以简化为cmd.set_name(x, y)
因为x
和y
已经是strings
.