我有一个脚本,可以对蛋白质进行一些计算。完成后,方法导入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 种可能的方法:
- 做一些需要打开 PyMOL 会话的琐碎事情并捕获异常
- 查看进程名称(类似于
os.system("ps ux | grep -i pymol")
)
第一种方法更好,其次是肮脏的黑客。
我通常只做这样的事情:
try:
import pymol
pymol_imported = True
except:
pymol_imported = False
然后
if pymol_imported:
display_results(...)
我不知道这是否是Python的"最佳实践",但无论如何,在大多数情况下,PyMol脚本通常只是快速的一次性东西。