LoginSignup
1
0

More than 3 years have passed since last update.

RDKitで電荷の中和をやってみる

Last updated at Posted at 2019-10-19

はじめに

前回のフラグメント除去に続き、今回も化合物の前処理の一つとして行われる電荷の中和をやってみようと思う。

環境

  • Python3.6
  • RDKit 2019.03.3.0

コード

コードは以下の通りである。事例も含め、参考文献からの流用である。

from rdkit import Chem
from rdkit.Chem import MolStandardize

#-------------------------------------------------------
# 電荷の中和
#-------------------------------------------------------
smis = ("c1cccc[nH+]1",
        "C[N+](C)(C)C", "c1ccccc1[NH3+]",
        "CC(=O)[O-]", "c1ccccc1[O-]",
        "CCS",
        "C[N-]S(=O)(=O)C",
        "C[N-]C=C", "C[N-]N=C",
        "c1ccc[n-]1",
        "CC[N-]C(=O)CC")

uc = MolStandardize.charge.Uncharger()
for smi in smis:
    mol = Chem.MolFromSmiles(smi)
    mol = uc.uncharge(mol)
    uncharge_smi = Chem.MolToSmiles(mol)
    print("Before: " + smi + " -> After: " + uncharge_smi)

結果は以下のとおりである。

Before: c1cccc[nH+]1 -> After: c1ccncc1
Before: C[N+](C)(C)C -> After: C[N+](C)(C)C
Before: c1ccccc1[NH3+] -> After: Nc1ccccc1
Before: CC(=O)[O-] -> After: CC(=O)O
Before: c1ccccc1[O-] -> After: Oc1ccccc1
Before: CCS -> After: CCS
Before: C[N-]S(=O)(=O)C -> After: CNS(C)(=O)=O
Before: C[N-]C=C -> After: C=CNC
Before: C[N-]N=C -> After: C=NNC
Before: c1ccc[n-]1 -> After: c1cc[nH]c1
Before: CC[N-]C(=O)CC -> After: CCNC(=O)CC

2番目と5番目は変化がなく、それ以外は処理がされている。変化があるものとないものの違いがよくわからない。
smilesだとよくわからないので画像で見てみよう。

Before After
c1cccc[nH+]1.png c1ccncc1.png
C[N+](C)(C)C.png C[N+](C)(C)C.png
c1ccccc1[NH3+].png Nc1ccccc1.png
CC(=O)[O-].png CC(=O)O.png
c1ccccc1[O-].png Oc1ccccc1.png
CCS.png CCS.png
C[N-]S(=O)(=O)C.png CNS(C)(=O)=O.png
C[N-]C=C.png C=CNC.png
C[N-]N=C.png C=NNC.png
c1ccc[n-]1.png c1cc[nH]c1.png
CC[N-]C(=O)CC.png CCNC(=O)CC.png

私の画像化処理の問題のためか、ところどころ電荷が表示されていない画像があるが、要するにプロトンの除去または追加によって電荷が中和されるものについては、処理がされているように見える。

おわりに

調べてみると前処理として「標準化」、「トートマーの正規化」といったキーワードもあるが具体的にどんな処理をしているのか、調べるのが面倒くさいからスルーした今の自分の化学力からは理解できなかった。また別の機会に調べてみたい。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0