0

我正在尝试使用 python 脚本查找 pymol 中蛋白质残基之间的距离,该脚本调用 pymol 命令 cmd.get_distance。但是,有时会有多个原子赋值,这会导致错误:

GetDistance-Error: Selection 2 doesn't contain a single atom/vertex.

我想跳过有这个问题的网站,所以我尝试使用 try/pass:

try:
    cmd.get_distance(atom2)
except GetDistance-Error:
    pass

但是,它告诉我没有这样的错误消息:

NameError: global name 'GetDistance' is not defined.

我如何告诉它通过这个错误?GetDistance-Error 不是错误吗?

4

1 回答 1

0

我偶然发现了同样的问题。我想从 pymols cmd.get_distance 中捕获错误。在我的情况下,一个(或两个)选择根本不包含一个原子(而不是 2 个)。

这个答案不会澄清 pymol 脚本中的处理错误,但会解决问题本身。

因此,您可以先检查您的选择中是否正好有 1 个原子,而不是捕获错误。

错误代码:

PyMOL>dist = cmd.get_distance("///A/44/CA","///A/60/CA")
GetDistance-Error: Selection 1 doesn't contain a single atom/vertex.

优化代码:

PyMOL>p1 = cmd.select("p1","///A/44/CA")
PyMOL>p2 = cmd.select("p2","///A/60/CA")
PyMOL>dist = "N/A"
PyMOL>if p1 == 1 and p2 == 1: dist = cmd.get_distance("p1","p2")

因此,您无需捕获错误,而是检查 get_distance 命令的要求(每个选择一个原子)。如果您运行连续代码,则需要 dist = "N/A" ,否则您将错误地获得距离的最后分配。

于 2020-11-03T14:49:31.060 回答