2

我有一个脚本可以对蛋白质进行一些计算。完成后,一个方法会导入pymol模块,并使用pymol.cmdAPI 在 PyMOL 会话中显示结果。该过程类似于以下内容:

def display_results(results, protein_fn):
    import pymol
    pymol.cmd.load(protein_fn)
    pymol.cmd.alter(...)
    ...

protein_fn = "1abc.ent"
results = analyze_protein(protein_fn)
display_results(results, protein_fn)

但是,我的脚本不一定需要在 PyMOL 中显示结果,我希望仅在安装并运行 PyMOL 时才这样做。

检查是否安装了 PyMOL 很容易(我可以try: import pymol),但是有没有办法检查是否有活动的 PyMOL 会话来显示结果?

4

2 回答 2

4

我不是 PyMOL 方面的专家(从未编写过脚本),但我看到了 2 种可能的方法:

  1. 做一些需要打开 PyMOL 会话并捕获异常的琐碎事情
  2. 查看进程名称(类似于os.system("ps ux | grep -i pymol")

第一种方法更好,第二种方法是肮脏的黑客。

于 2012-08-08T08:26:53.097 回答
0

我通常只是做类似的事情:

try:
    import pymol
    pymol_imported = True
except:
    pymol_imported = False

然后

if pymol_imported:
    display_results(...)

我不知道这是否是 Python 的“最佳实践”,但无论如何,在大多数情况下,PyMol 脚本通常只是快速的、一次性的东西。

于 2013-04-04T02:35:57.033 回答