调用Python脚本的当前Pymol会话



我正在尝试调用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() 

但实际上,我想检查一下我的Python脚本是否已经打开了任何Pymol会话。我在这里发现与此主题相对应的讨论:仅在Pymol运行时呼叫功能在讨论之后,我试图在Pymol中调用"打印"功能:

try:
    from pymol import cmd
    print 'Connected'
except:
    <open new Pymol sesssion>

,但我在Pymol CMD中没有看到任何文本。我试图在此语句之前确定Pymol路径,然后再次失败。

有人知道如何从Python脚本调用当前的Pymol会话吗?

据我所知,无法与Python解释器的现有Pymol会话进行交互。有一些替代方法:

  1. 现有的pymol命令提示符接受有效的python,您可以直接从提示符中运行任何脚本。也许您可以从那里执行脚本?

  2. 您可以作为脚本的一部分启动新的Pymol会话。Pymol的-i标志可能特别有用 - 它使您能够在无头环境中工作:

    -i     Disable the internal OpenGL GUI (object list, menus, etc.)
    
  3. 仔细看看Pymol的__init.py__。您会发现Pymol在那里的螺纹的复杂性。也许您可以找到有用的操作?

旁注:

从您的脚本调用 print will 不是使文本显示在Pymol会话中,它将仅将文本写入标准输出(即它将打印到您的终端)。


以下Pymol Wiki页面可能对您有所帮助:

  • 运行脚本
  • 启动Pymol
  • 从脚本启动

最新更新