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")

最初の方法の方が優れており、2 番目の方法は汚いハックです。

于 2012-08-08T08:26:53.097 に答える
0

私は通常、次のようなことをします:

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

それで

if pymol_imported:
    display_results(...)

それが Python の「ベスト プラクティス」であるかどうかはわかりませんが、PyMol スクリプトは通常、ほとんどの場合、1 回限りの簡単なものです。

于 2013-04-04T02:35:57.033 に答える