Help us understand the problem. What is going on with this article?

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

はじめに

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

環境

  • 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

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

おわりに

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

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away