仅在 PyMOL 运行时调用函数



我有一个脚本,可以对蛋白质进行一些计算。完成后,方法导入pymol模块,并使用pymol.cmd API 在 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 会话来显示结果?

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

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

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

我通常只做这样的事情:

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

然后

if pymol_imported:
    display_results(...)

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

最新更新