首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python脚本调用当前的PyMOL会话

从python脚本调用当前的PyMOL会话
EN

Stack Overflow用户
提问于 2012-10-26 08:42:56
回答 1查看 1.7K关注 0票数 0

我试图从python (wxpython )调用当前的PyMOL会话,然后从PyMOL加载一些数据,并向PyMOL发送少量命令。目前,我可以在python脚本中打开一个新的PyMOL会话:

代码语言:javascript
复制
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中调用'print‘函数:

代码语言:javascript
复制
try:
    from pymol import cmd
    print 'Connected'
except:
    <open new Pymol sesssion>

但我在PyMOL cmd中没有看到任何文本。在此声明之前,我试图确定PyMOL路径,但再次失败。

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

EN

回答 1

Stack Overflow用户

发布于 2013-03-11 19:13:18

据我所知,无法通过Python解释器与现有的PyMOL会话进行交互。有几种选择:

  1. 现有的PyMOL命令提示符接受有效的运行任何脚本,您可以直接从提示符中获得运行任何脚本。也许你可以从那里开始执行你的脚本?
  2. 您可以启动一个新的PyMOL会话,作为脚本的一部分。PyMOL的-i标志可能特别有用-它使您能够在无头环境中工作: -i禁用内部OpenGL GUI (对象列表、菜单等)
  3. 仔细看看PyMOL的__init.py__。您将在那里发现PyMOL线程的复杂之处。也许你能找到有用的东西来操纵?

附带说明:

从脚本调用print不会使文本出现在PyMOL会话中,它只会将文本写入标准输出(即它将被打印到终端)。

以下PyMOL维基页面可能会对您有所帮助:

  • 运行脚本
  • 启动PyMOL
  • 从脚本启动
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13083590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档