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]])