脱塩したい(pybelで)

化合物の物性などを予測する時には、イオン化の状態を揃えて中性にしたり脱塩して、単一の化合物にするというルーチンワークが必須です。

openbabelにはそのためのメソッドとしてStripSaltというものが用意されています。例として以下の化合物の脱塩をしてみます。

http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid=24847969&loc=ec_rcs:aspirin

import pybel
mol = pybel.readstring('smi','CCC(C)C(=O)OC1CC(C=C2C1C(C(C=C2)C)CCC(CC(CC(=O) \
[O-])O)O)O.CC(=O)OC1=CC=CC=C1C(=O)O.[Na]')
mol.OBMol.StripSalts(14)
mol.write('smi') # 'CCC(C)C(=O)OC1CC(C=C2C1C(C(C=C2)C)CCC(CC(CC(=O)[O-])O)O)O\t\n'

引数として与えた数未満のヘテロアトム数のcompoundが除かれるようです。

実際には、化合物本体よりも大きい塩があったり、R体とS体の両方が一つの化合物として入力されていたりと解析者泣かせのデータを扱うことが多いので、もう少し複雑怪奇な脱塩ルーチンが使われることが多いようですが、、、(謎)