问题描述
我正在尝试加载一个mrc文件,生成它的地图然后保存图像,问题是它只保存了一个空白图像,我运行的代码如下:
from pymol import cmd
cmd.load('./6vof.mrc',' 6vof')
cmd.volume( '6vof _volume',' 6vof')
cmd.png('./test.png',300,200)
接口中的等效代码确实有效,我想知道如何让 save 方法等待所有内容的渲染。
解决方法
嗨,路易斯·何塞·卡斯蒂略,
看来我遇到了和你一样的问题。 我想在 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
我希望这个技巧也能帮到你! 最好的祝福, 斯蒂芬