RDKit
0
どのような問題がありますか?

投稿日

更新日

RDKitで水素を付加するときにハマったメモ

はじめに

RDKit等で3次元構造を生成する際には、水素原子を付与することが推奨されている。しかしSDFから読み込んで生成したMolオブジェクトにChem#AddHsメソッドで付与しても正しく水素原子が付与されてない場合があるので、メモ

環境

  • RDKit 2018/9/1
  • Python 3.6
  • Jupyter Notebook

うまくいかない方法

まずは読み込んで表示。

import rdkit.Chem 
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import AllChem

molBlock = '''3-methylpentane
     RDKit          2D

  6  5  0  0  0  0  0  0  0  0999 V2000
    0.2606    0.1503    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    1.3000    0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.6000    0.0000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    2.6000   -1.2000    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    3.9000    0.7500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
    4.9394    0.1503    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0
  1  2  1  0
  2  3  1  0
  3  4  1  0
  3  5  1  0
  5  6  1  0
M  END'''

molFromSDF = Chem.MolFromMolBlock(molBlock)
Draw.MolToImage(molFromSDF)

image.png

次にAddHsで水素を追加。

molFromSDFH = Chem.AddHs(molFromSDF)
Draw.MolToImage(molFromSDFH)

image.png

明らかに失敗。

正しい方法

MOLオブジェクトをいったんSMILES化し、SMILESからMOLオブジェクトを再作成する。

smiles = Chem.MolToSmiles(molFromSDF)
molFromSDFnorm = Chem.MolFromSmiles(smiles)

次にAddHsで水素追加

molFromSDFnormH = Chem.AddHs(molFromSDFnorm)
Draw.MolToImage(molFromSDFnormH)

image.png

おおう、正しく表示された。うまくいったようだ。

追記(重要) 2022/06/19

どうやら、AddHsを行う時に全ての水素の座標が(0,0)の位置に追加されるため、表示が崩れるらしい。addCoordsオプションをTrueに指定することで、水素の座標がいい感じで追加され表示が崩れないようである。

Chem.AddHs(ligand_mol, addCoords=True)
ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
ユーザー登録ログイン
kimisyo
主にライフサイエンス分野向けサービス開発を行っています。これからはライフサイエンスの時代です。化学、AI(機械学習)を中心に、学んだこと、経験したことをシェアしていきます。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
Snykを使って開発者セキュリティに関する記事を投稿しよう!
~
GitHub Actionsの自分流の使い方をシェアしよう
~
0
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー