Chapter 37

RDKitで分子の構造変換

poclabweb
poclabweb
2022.10.17に更新

4. 分子の構造変換

分子の読み込み

from google.colab import drive
drive.mount('/content/drive')
!wget -P /content/drive/MyDrive/data https://raw.githubusercontent.com/chemoinformatics-lecture/lecture-beginner/main/lesson04_RDKit/data/PubChem_TCI_phenol_records.sdf
suppl = Chem.SDMolSupplier('/content/drive/MyDrive/data/PubChem_TCI_phenol_records.sdf')
mols = [mol for mol in suppl]

from rdkit.Chem import Draw
Draw.MolsToGridImage(mols[:6])

今回読み込んだ分子の構造は、こちら(最初のものだけ表示)

1番大きなフラグメントを残して他を除去

from rdkit.Chem import MolStandardize

lfc = MolStandardize.fragment.LargestFragmentChooser()
mols2 = [lfc.choose(mol) for mol in mols ]
Draw.MolsToGridImage(mols2[:3])

一番大きなフラグメントを残した分子が得られたのが構造を表示してもわかる。

水素の付加

Chem.AddHs(mol, addCoords=True)

以下の例では、molsというリストの中のmolにAddH2でHを追加している。

mols2 = [Chem.AddHs(mol, addCoords=True) for mol in mols2 ]
Draw.MolsToGridImage(mols2[:6])

構造最適化

AllChemのEmbedMoleculeで3次元構造の作成
MMFFOPtimizeMoleculeConfsで、MMFFによる構造の最適化

from rdkit.Chem import AllChem

AllChem.EmbedMolecule(mol, AllChem.ETKDG())
rdkit.AllChem.MMFFOptimizeMolecule(mol)
from rdkit.Chem import AllChem
n = 0
#水素の付加
Chem.AddHs(mols2[n], addCoords=True)
# 3次元構造の作成。
AllChem.EmbedMolecule(mols2[n], AllChem.ETKDG())
# MMFFで最適化
AllChem.MMFFOptimizeMoleculeConfs(mols2[n])
# 構造を書き出す
Draw.MolsToGridImage([mols2[n]])