只有在PyMOL运行时调用函数

时间:2012-08-08 06:16:30

标签: python bioinformatics 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会话来显示结果?

2 个答案:

答案 0 :(得分:2)

我不是PyMOL的专家(还没有编写脚本),但我看到了两种可能的方式:

  1. 做一些微不足道的事情,需要一个开放的PyMOL会话并捕获 例外
  2. 查看流程名称(类似os.system("ps ux | grep -i pymol")
  3. 第一种方式更好,第二种方式是肮脏的黑客。

答案 1 :(得分:0)

我通常只做以下事情:

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

然后

if pymol_imported:
    display_results(...)

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