5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RDKit で何となくSMILESを生成するのはそろそろやめよう

Last updated at Posted at 2020-08-29

#概要
デフォルトオプションを理解せず、なんとなく Chem.MolToSmiles 使うのは、そろそろ卒業しようぜ。ということでまとめたメモ。

#環境
RDkit 2020.03.5

#オプションの説明

オプション 説明
iosomericSmiles SMILESに立体化学に関する情報を含める。デフォルトはtrue
kekuleSmiles SMILESでKekule形式(芳香族結合なし)を使用。 デフォルトはfalse
rootedAtAtom 負でない場合、これはSMILESを特定の原子で強制的に開始する。デフォルトは-1
canonical falseの場合、正規化されない。デフォルトはtrue。
allBondsExplicit trueの場合、すべての結合次数が出力SMILESで明示的に出力される。 デフォルトはfalse。
allHsExplicit trueの場合、すべてのHカウントが出力SMILESで明示的に出力される。 デフォルトはfalse。

#やってみよう

rootedAtAtom以外の動作を確認するために、こんなメソッドを作成。

def generate_smiles(old_smiles, isometric=True, kekule=False, allBondsExplicit=False, allHsExplicit=False, canonical=True):
    print(f"\n\ngenerate smiles {old_smiles}")
    print(f"prev smiles = {old_smiles}")
    old_mol = Chem.MolFromSmiles(old_smiles)
    new_smiles = Chem.MolToSmiles(old_mol, isomericSmiles=isometric, kekuleSmiles=kekule,
                                 allBondsExplicit=allBondsExplicit, allHsExplicit=allHsExplicit, canonical=canonical)

    print(f"new smiles = {new_smiles}")

実験対象のSMILES

立体情報と芳香環情報のある、こいつで確認していこう。

C[C@H]1COC2=C1C(=O)C(=O)c1c2ccc2c1CCCC2(C)C

isometicSmilesをデフォルトのtrueからflaseに変えた場合

CC1COC2=C1C(=O)C(=O)c1c2ccc2c1CCCC2(C)C

お、立体情報が消えた。

canonicalをデフォルトのtrueからflaseに変えた場合

C[C@H]1COC2=C1C(=O)C(=O)c1c2ccc2c1CCCC2(C)C

変更なし。元のSMILESがcanonicalだった可能性も。

kekureSmilesをデフォルトのfalseからtrueに変えた場合

C[C@H]1COC2=C1C(=O)C(=O)C1:C2:C:C:C2:C:1CCCC2(C)C

cが大文字になりコロンが増えた。-と=が交互にってパターンじゃないのね。

allBondsExplicitをデフォルトのfalseからtrueに変えた場合

C-[C@H]1-C-O-C2=C-1-C(=O)-C(=O)-c1:c-2:c:c:c2:c:1-C-C-C-C-2(-C)-C

単結合もちゃんと出ましたね。うーん、うるさい(笑)。

allHsExplicitをデフォルトのfalseからtrueに変えた場合

[CH3][C@H]1[CH2][O][C]2=[C]1[C](=[O])[C](=[O])[c]1[c]2[cH][cH][c]2[c]1[CH2][CH2][CH2][C]2([CH3])[CH3]

暗黙水素があぶりだされましたね。さらにうるさい(笑)

#最後に、allBondsExplicitとallHsExplicitを同時にtrueにする(おまけ)

 [CH3]-[C@H]1-[CH2]-[O]-[C]2=[C]-1-[C](=[O])-[C](=[O])-[c]1:[c]-2:[cH]:[cH]:[c]2:[c]:1-[CH2]-[CH2]-[CH2]-[C]-2(-[CH3])-[CH3]

行間読めない人向け。

#参考
https://www.rdkit.org/docs/source/rdkit.Chem.rdmolfiles.html

5
7
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
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?