CML2SVG(Perl)

当初、CMLからSVGに変換するのはxsltでも用意すればと考えていた。だが、xsltイマイチ分からん、というより覚えるのがだるい。というわけで、「だらだら流れる(逐次処理する)んだったらSAXでも使おうかナァ」なんてノリでとりかかってみた。 しかし、bondのatomRefがatomidで、座標をatomエレメントから呼んでこないといけないので、やっぱSAXもメンドイかなってことで最終的にDOMりましたヨ。

perlのXML::DOMSVGモジュール使用。

とりあえず出来たSVGをconvertでpngにしてみた。

SVGはココだが一回セーブしてからでないとビューアーがうまく立ち上がらないような。

あとは、アトムラベルのとことかダブルトリプルボンドの処理とかだけど、丁寧に書いていけばよいな。それから、スケーリングもちゃんと書かないといけないなぁ。もうちょっと、ましなスクリプトになったら落とせるようにしておくヨ。

しかし、重要な問題が残っている(まぁコレに気付いてやる気レス化したため、プログラム書くのが延び延びになったんだが、、、)

それは、

openbabelPerlMolも座標を自動で発生してくれない!

ということだ。ちゅうわけで、SMILESからCMLにすると泣く。まぁ座標の問題はそのうち対応するみたいなんで期待してる。

JChemPaint

最近、コマンドラインから化学構造式をうまく画像として表示する方法を探している。特に、CMLをSVGに変換するプログラムを誰かが書いてることを期待したが、いいのが見つからず。唯一Adobeのサンプルにcml2svgってのがあったけど、イマイチ出力がはてなです(アレだと実用ではないヨ)。

そんななか、JChemPaintといふものは、SVGで出力できるってことを発見。

#java -jar jchempaint-2.0.12.jar

エディターとしてはなかなかいい感じで、SMILES表記で構造に変換してくれるのはプチ便利。

だが、JChemPaintでSVG出力すると、heightとwidthが指定されていないのでブラウザで表示させることが出来ないみたいだ。

コマンドラインからCML2SVGできれば、convertでBMPでもPNGでも変換できるので、とても便利な気がするヨ。openbabel使えば大抵のファイル形式をCMLに変換できるしな。

ちゅうわけで、JChemPaintの出力のSVGを眺めてたら、XSL用意すれば、自前でCMLからSVGに変換できそうな気はするのですこしいじってみるかなとか思ったり。

XSLTプロセッサ

コマンドラインからCMLをSVGに変換するやり方はなんとなく見えてきたので、あとはゴリゴリやるかXSLT使うか悩ましいところ。

調べ物してたらうっかりFOPとかXSLTをいじくってみたくなったヨ。

で、ハマル(win用のバッチファイルがまたアレだ)

サンプル眺めて、イメージがわかないのはきちんと理解していない証拠だナァ。しかも、どのXSLTプロセッサがいいのかわからんし、、、

シーエムエル 渡るFOPは JAVAばかり