Python スクリプト (wxpython GUI) から現在の PyMOL セッションを呼び出し、PyMOL からいくつかのデータをロードして、いくつかのコマンドを PyMOL に送信しようとしています。現時点では、Python スクリプトで新しい PyMOL セッションを開くことができます。
import sys, os
from wx import *
app = wx.App()
dialog = wx.FileDialog ( None, message = 'Set PyMOL directiry', style = wx.OPEN)
if dialog.ShowModal() == wx.ID_OK:
# Pymol path
moddir = dialog.GetDirectory()
sys.path.insert(0, moddir)
os.environ['PYMOL_PATH'] = moddir
import pymol
pymol.finish_launching()
else:
print 'Nothing was selected.'
from pymol import *
dialog1 = wx.FileDialog ( None, message = 'Set PDB file', style = wx.OPEN)
if dialog1.ShowModal() == wx.ID_OK:
pdbfile = dialog1.GetPath()
cmd.load(pdbfile)
else:
print 'Nothing was selected.'
dialog.Destroy()
app.MainLoop()
しかし、実際には、PyMOL セッションが既に開かれているかどうかを python scrip で確認したいと思います。ここでこのトピックに対応する議論を見つけました: Only call function if PyMOL running この議論に続いて、PyMOL で「print」関数を呼び出そうとしました:
try:
from pymol import cmd
print 'Connected'
except:
<open new Pymol sesssion>
しかし、PyMOL cmd にテキストが表示されません。このステートメントの前に PyMOL パスを決定しようとしましたが、再び失敗しました。
Pythonスクリプトから現在のPyMOLセッションを呼び出す方法を知っている人はいますか?