<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>pluto / Drkcore</title><link>http://blog.kzfmix.com/pluto</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Tue, 12 Jan 2010 11:13:08 +0919</lastBuildDate><item><title>ExactMassを求める</title><link>http://blog.kzfmix.com/entry/1205761729</link><description>&lt;p&gt;そういえば多数の化合物からなるsdfからExactMassってどうやって計算したらいいのかね？と尋ねられて、&lt;/p&gt;

&lt;p&gt;うーんそれはね、perlでChemistry::OpenBabelモジュールを使ってだなぁ、ごにょごにょとやればいいんだよ、ほら楽勝だろ。&lt;/p&gt;

&lt;p&gt;とか言ってみたんだけど、別にpythonでもいいので書いてみた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import openbabel as ob

obconv = ob.OBConversion()
obconv.SetInFormat("sdf");
obmol = ob.OBMol()

notatend = obconv.ReadFile(obmol, "test.sdf");
while notatend:
    print obmol.GetExactMass()
    obmol = ob.OBMol()
    notatend = obconv.Read(obmol)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;たぶんPlutoだったら&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from pluto import *

for mol in Molecule.readfile("test.sdf"):
    print mol.ExactMass
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;と書けるようになるはず。&lt;/p&gt;

&lt;p&gt;でも今夜はOBChemTsfmとかいうクラスがねーとかいう謎の深みにはまりかけ、SWIGやらC++にやられっぱなしでそれどころじゃないのであった。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:13:08 +0919</pubDate><category>chemoinformatics</category><category>Python</category><category>pluto</category></item><item><title>plutoで結合をいじくる</title><link>http://blog.kzfmix.com/entry/1205662902</link><description>&lt;p&gt;こんな感じで。
titleとかはmol.title("newtitle")にしたほうがいいのかこのままでいいのか決めかねているのでそのうちちゃんと考える。&lt;/p&gt;

&lt;p&gt;エタンをエチレンに変えてみた&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; from pluto import *
&amp;gt;&amp;gt;&amp;gt; mol = Molecule.readstring("CC\tethane")
&amp;gt;&amp;gt;&amp;gt; mol.bond([1,2]).order(2)
&amp;gt;&amp;gt;&amp;gt; mol.title = "ethylene"
&amp;gt;&amp;gt;&amp;gt; mol.writestring()
'C=C\tethylene\n'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;あとはmolecule同士のの結合とatomの追加と削除を実装すればよさそう&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:12:42 +0919</pubDate><category>chemoinformatics</category><category>Python</category><category>pluto</category></item><item><title>Pluto : Python module for chemoinformatics</title><link>http://blog.kzfmix.com/entry/1205636869</link><description>&lt;p&gt;Pythonでも&lt;a href="http://www.perlmol.org/"&gt;PerlMol&lt;/a&gt;みたいに化学反応を手軽に扱えるツールが欲しいなぁという欲求があったので書いてみることにした。Pybelみたいな&lt;a href="http://openbabel.org/wiki/Main_Page"&gt;OpenBabel&lt;/a&gt;のラッパーだけど。&lt;/p&gt;

&lt;p&gt;そういえば、&lt;a href="http://pymol.sourceforge.net/"&gt;PyMOL&lt;/a&gt;や&lt;a href="http://sourceforge.net/projects/pychem/"&gt;PyChem&lt;/a&gt;という、それっぽい名前は既に使われてるんですよな。&lt;/p&gt;

&lt;p&gt;で、アトムにちなんでみた。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4091874312/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51R3Q2V8NFL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;PLUTO (1) (ビッグコミックス)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
浦沢 直樹 &lt;br /&gt;
小学館 / ￥ 550 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;でも、国内しかわからなんだろうな。海外だとastro boyなんでしょ？まぁいいや。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; from pluto import *
&amp;gt;&amp;gt;&amp;gt; mol = Molecule.readstring("c1ccccc1O")
&amp;gt;&amp;gt;&amp;gt; mol.title = "phenol"
&amp;gt;&amp;gt;&amp;gt; mol.writestring()
'c1c(cccc1)O\tphenol\n'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;とりあえず、readとwriteまではできた。SMARTSのクラスも作ってあるのだけどアトムばっか返ってきてボンドの返し方がよく分からん。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.kzfmix.com/blosxom_archive/Computer/Informatics/DielsAlder060211.html"&gt;diels-alder反応ぐらいまで書けるように&lt;/a&gt;するとこまではとっととやる。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:12:29 +0919</pubDate><category>chemoinformatics</category><category>Python</category><category>pluto</category></item><item><title>plutoでExactMass,分子量,化学式</title><link>http://blog.kzfmix.com/entry/1205844473</link><description>&lt;p&gt;というわけで、分子量とかformulaとか出せるようにしておいた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CCC       propane
CC        ethane
c1ccccc1  benzene
CO        methanol
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;というsmilesを&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;babel -ismi test.smi -osdf testsdf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で変換したファイルを使った。ExactMassを計算する場合は&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; from pluto import *
&amp;gt;&amp;gt;&amp;gt; mols = Molecule.readfile("test.sdf")
&amp;gt;&amp;gt;&amp;gt; for mol in mols:
...   print mol.exactmass
...
44.062600256
30.046950192
78.046950192
32.026214748
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ついでに分子量と化学式も&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; from pluto import *
&amp;gt;&amp;gt;&amp;gt; mols = Molecule.readfile("test.sdf")
&amp;gt;&amp;gt;&amp;gt; for mol in mols:
...   print mol.formula, mol.molwt
...
C3H8 44.09562
C2H6 30.06904
C6H6 78.11184
CH4O 32.04186
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;openbabelにはPerlMolでいうところのcombineみたいなメソッドがないので反応させるところで悩み中。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:10:52 +0919</pubDate><category>chemoinformatics</category><category>Python</category><category>pluto</category></item><item><title>Open Babel 2.2.0をmacbookにインストール</title><link>http://blog.kzfmix.com/entry/1215214847</link><description>&lt;p&gt;&lt;a href="http://openbabel.org/wiki/Open_Babel_2.2.0"&gt;Open Babel 2.2.0&lt;/a&gt;にバージョンがあがったのでインストールをした。ソースから。&lt;/p&gt;

&lt;p&gt;同時に、perl,python,rubyのバインディングもコンパイルしてインストールしておく。&lt;/p&gt;

&lt;h3&gt;WindowsにおいてあるPlutoのファイル群を持ってくる&lt;/h3&gt;

&lt;p&gt;Windowsで開発している&lt;a href="http://blog.kzfmix.com/tag/pluto"&gt;Pluto&lt;/a&gt;をmacでもいじれるようにする。windowsのほうはhg serveと打てばhttpサーバーが立ち上がり、port8000番でアクセスできるようになる。&lt;/p&gt;

&lt;p&gt;macのほうはディレクトリを作って初期化してpullしてupdate&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkdir Pluto
cd Pluto
hg init
hg pull http://192.168.XXX.XXX:8000/
hg update
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これでOK&lt;/p&gt;
</description><pubDate>Sat, 05 Jul 2008 08:55:29 +0919</pubDate><category>chemoinformatics</category><category>Mercurial</category><category>pluto</category><category>macbook</category><category>openbabel</category></item></channel></rss>