CDKで構造描画

smilesから二次元座標を立ち上げるには、CDKを使う。openbabelとかperlmolはここらへんが未実装。

StructureDiagramGenerator sdg = newStructureDiagramGenerator(); sdg.setMolecule(someMolecule); sdg.generateCoordinates(); Molecule layedOutMol = sdg.getMolecule();

これで二次元座標が起こせる。

さらに、org.openscience.cdk.rendererで構造をpngやjpgに書き出せる。

dopamine

でもCDKでも画像サイズを小さくするとサイズにあわせてダブルボンドの幅を小さくしたりフォントも綺麗に見えるように小さくなったりというような親切設計ではないんだよね。

dopamine

こんな風になってしまうな。今回eclipse使ってjavaで書いたけど、今後はこれをjythonで書き直す予定ダ。

CDKで構造描画(Linux)

linuxで二次元構造立ち上げる場合はXからの場合は問題ないが、ターミナルから起動するときにはjavaのAWTでこけるのでXvfbで仮想Xを起動してからprogramを動かす。FC1はXFree86-XvfbだけどFC2はxorg-x11-Xvfbだった。yumで入れられなくてちょっと悩んだ。

Linuxは画像出力サーバーとかCGIで使いたいからこの設定は必須でしょう。

colinux(debian)にChemRubyを導入

年末を利用してCMLをSVGに変換するperlスクリプトでも書いておくかなと情報収集したら、ChemRubyなるものがあるのね。

で、ChemRubyのプロジェクトを探してドキュメントを探ってみたが、

立ち上がったばかりで、大して書いてニャァ 

ドキュメントの充実はこれからなのかな。頑張って欲しいとこだ。 というわけで、ないものはないしそれは仕方ないので、実際に導入して自分で確認してみることにした(このあたりから目的と手段がよくわからなくなったのかなんないのか?)。

まずはcolinux-debianにrubyのインストール。

apt-get install ruby apt-get install ruby1.8-dev

で、続いてchemrubyはココに倣ってさくっとナ。

さて、これでいじる環境できたが、sampleが少なめなのでイマイチわかりづらかった。僕がそもそもruby使いではないせいでもあるが。

知りたかったのはグラフィックライブラリの充実度と、smilesから構造立ち上げて、sdfで出力した場合にうまいこと座標を割り付けてくれるのかどうかだったんだけど。

年始にでもまたいじってみよう。