<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>CDK / Drkcore</title><link>http://blog.kzfmix.com/CDK</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Fri, 20 Oct 2006 08:29:37 +0919</lastBuildDate><item><title>Structure-CDKをperlで使う</title><link>http://blog.kzfmix.com/entry/1161300577</link><description>&lt;p&gt;smilesを描画するwebのインターフェースが欲しくて、色々作ってみた&lt;/p&gt;
&lt;p&gt;必要なもの&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Structure-CDK (include cdk)&lt;/li&gt;
&lt;li&gt;opsin-big-0.1.0&lt;/li&gt;
&lt;li&gt;Perl&lt;/li&gt;
&lt;li&gt;Inline::Java&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chemistry::OpenBabel( need for iupac2png)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://depth-first.com/articles/2006/10/17/from-iupac-nomenclature-to-2-d-structures-with-opsin"&gt;http://depth-first.com/articles/2006/10/17/from-iupac-nomenclature-to-2-d-structures-with-opsin&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://depth-first.com/articles/2006/08/28/drawing-2-d-structures-with-structure-cdk"&gt;http://depth-first.com/articles/2006/08/28/drawing-2-d-structures-with-structure-cdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sourceforge.net/projects/structure"&gt;http://sourceforge.net/projects/structure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここら辺を参考に書いた。できたものは&lt;a href="/tools/CDK-Util-0.01.tar.gz"&gt;CDK-Util-0.01.tar.gz&lt;/a&gt;においておいた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;smi2mol&lt;/li&gt;
&lt;li&gt;smi2png&lt;/li&gt;
&lt;li&gt;IUPAC2CML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;が可能。IUPAC2PNGも書いたのだけどmake testで豪快にこけるので無視してインストールしてください。podの細かいとこも気にしないように。Iupac2Pngはcdkでcmlをmolに変換するあたりがわからなくてあきらめたけど、そこのコードの部分だけ手直しすれば動くと思う。&lt;/p&gt;
&lt;p&gt;っていうか、iupac2pngはopenbabelのモジュール使えばいいじゃんって気付いた途端もういいやってなってしまった。書式コンバートはopenbabelのほうがわかりやすい。ちょっとコード量は増えるけど、こんな感じ。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;warnings&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;CDK::&lt;/span&gt;&lt;span class="n"&gt;Smi2Png&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;CDK::&lt;/span&gt;&lt;span class="n"&gt;Iupac2Cml&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;Chemistry::&lt;/span&gt;&lt;span class="n"&gt;OpenBabel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$iupac_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;shift&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$ic&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;CDK::&lt;/span&gt;&lt;span class="n"&gt;Iupac2Cml&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$cml&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$ic&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$iupac_name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$obMol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nn"&gt;Chemistry::OpenBabel::&lt;/span&gt;&lt;span class="n"&gt;OBMol&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$obConversion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nn"&gt;Chemistry::OpenBabel::&lt;/span&gt;&lt;span class="n"&gt;OBConversion&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$obConversion&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;SetInAndOutFormats&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;cml&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;smi&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$obConversion&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;ReadString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$obMol&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$cml&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$smi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$obConversion&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;WriteString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$obMol&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;$! not converted&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$smi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/\t/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$smi&lt;/span&gt;&lt;span class="p"&gt;))[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$smic&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;CDK::&lt;/span&gt;&lt;span class="n"&gt;Smi2Png&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$smic&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;writePNG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$smi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;/home/kzfm/test.png&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;で実行する。&lt;a href="http://redpoll.pharmacy.ualberta.ca/drugbank/cgi-bin/getCard.cgi?CARD=APRD01028.txt"&gt;Imatinib&lt;/a&gt;くらいは認識するようだ。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;iupac2png&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pl&lt;/span&gt;  &lt;span class="s"&gt;&amp;quot;4-[(4-methylpiperazin-1-yl)methyl] \&lt;/span&gt;
&lt;span class="s"&gt;-N-[4-methyl-3-[(4-pyridin-3-ylpyrimidin-2-yl)amino] \&lt;/span&gt;
&lt;span class="s"&gt;-phenyl]-benzamide&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;img alt="Imatinib" src="http://www.kzfmix.com/images/blosxom/Imatinib.png" /&gt;&lt;/p&gt;
&lt;p&gt;あとはcatalystとsmi2pngを組み合わせて、&lt;a href="http://blog.kzfmix.com/entry/1137502149"&gt;chemicho&lt;/a&gt;のwebインターフェースに使ったり、iupac2pngでcgiでもつくってbookmarkletでポストできるようにしとけばpubmedとかのIUPAC名をいつでもひける。&lt;a href="http://blog.kzfmix.com/entry/1154954993"&gt;辞書サーチ&lt;/a&gt;のプラグインで右クリック呼び出しでもいいけど。&lt;/p&gt;</description><pubDate>Fri, 20 Oct 2006 08:29:37 +0919</pubDate><category>perl</category><category>java</category><category>CDK</category></item></channel></rss>