0

我正在尝试加载一个mrc文件,生成它的映射然后保存图像,问题是它只保存一个空白图像,我运行的代码如下:

from pymol import cmd
cmd.load('./6vof.mrc', ' 6vof')
cmd.volume( '6vof _volume', ' 6vof')
cmd.png('./test.png', 300, 200)

界面中的等效代码确实有效,我想知道如何使保存方法等待所有内容的呈现。

4

1 回答 1

0

嗨路易斯何塞卡斯蒂略,

看来我遇到了和你一样的问题。我想在 Ruby on Rails 应用程序中使用 Pymol,当我从 ruby​​ 中启动它时,总是收到他的消息:

 CmdLoad: "mypol/4hhb.pdb" loaded as "4hhb".
 Ray: render time: 0.02 sec. = 178776.9 frames/hour (0.02 sec. accum.).

结果是一个空白的透明png。如果我在命令行中使用相同的脚本运行它,我会收到这条消息和一个完美的 png:

CmdLoad: "4hhb.pdb" loaded as "4hhb".
 Ray: render time: 4.04 sec. = 890.8 frames/hour (4.04 sec. accum.).

我在 Ubuntu 20、Ubuntu 18 Server 和 Docker 上得到了这种行为。我发现,唯一的区别是,我使用了 ruby​​ 中的相对路径,但总是在命令行的同一个文件夹中运行所有内容。好吧,所以我只是为我的 Rails 应用程序绕道而行,现在它确实可以工作了:

  def get_protein_image(pdb_id)
    dir_path = get_pdb_file(pdb_id)
    `cp lib/png_from_pdb.py #{dir_path} && cd #{dir_path} && pymol protein.pdb png_from_pdb.py -qc` 
  end

抱歉这里的 ruby​​ 代码,但这里是基本的解决方案,尝试在同一个文件夹中运行所有内容(我只是在生成 png 后删除了 tmp 子文件夹)。

cp lib/png_from_pdb.py #{dir_path} && cd #{dir_path} && pymol protein.pdb png_from_pdb.py -qc

我希望这个技巧也能帮助你!最好的问候,斯蒂芬

于 2021-02-12T10:15:55.410 回答