Chemrubyうまくいかないとか書いたが、視覚化の通りにopen_molしたらすんなりいけた。
require 'chem'
molecule = Chem.open_mol("mol/C01455.mol")
molecule.save("test.smi")
うーん、open_molとparseの違いがわからん。perlだったらdumpしてやればいいんだが、rubyではどうやるんだろうか?
ついでに、色付けもやってみた。
require 'chem'
mol = Chem.open_mol("mol/C00019.mol")
query = Chem.open_mol("mol/C00147.mol")
m = mol.match_by_ullmann(query)
matched_nodes = m.inject([]){|ret, i| ret.push(mol.nodes[i])}
mol.edges.each do |bond, atom1, atom2|
bond.color = [1, 0, 0] if matched_nodes.include?(atom1)
and matched_nodes.include?(atom2)
end
mol.nodes.each{|node| node.visible = true unless node.element == :C}
mol.save("hello.pdf")
test2.rbで保存して、ruby test2.rb
で実行。出来たのがhello.pdf
ダブルボンドとかはリングの内側に入って欲しいが、ナカナカ良い。
で、RMagickも入れたから、pngの出力を試そうとpngtest.rbというスクリプトを書いて
require 'chem'
mol = Chem.open_mol("mol/C00019.mol")
mol.save("hello.png")
ruby pngtest.rb
で実行したところエラー。
ruby pngtest.rb
/usr/local/lib/ruby/site_ruby/1.8/chem/writer.rb:41:
in `save': NotImplementedError (NotImplementedError)
from pngtest.rb:4
pngに限らず、smiとかpdbでも同じエラーが出る。