如何在pymol / python中传递错误?

时间:2014-12-14 12:06:16

标签: python pymol

我试图使用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 - 错误错误?

1 个答案:

答案 0 :(得分: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”,否则将错误地获取距离的最后一个分配。