このチャプターの目次
0. rdkitのインストールと呼び出し及びversion確認
!pip install pubchempy
!pip install rdkit==2022.3.5
from rdkit import rdBase, Chem
print(rdBase.rdkitVersion)
今回使用したソフトとversionは、以下の通り。rdkit以外のものについても、念の為に示しておきます。
pubchemとpandasとrdkitのバージョン
1. 分子の読み込みと表示
1分子の読み込み
rdkit.Chem.MolFromSmiles(smiles)
pubchempyでquercetineのsmilesを取得して、そのsmilesを
import pubchempy as pcp
quercetine = pcp.get_compounds('quercetine', 'name')
quercetine_smiles = quercetine[0].isomeric_smiles
quercetine_smiles
quercetine_mol = Chem.MolFromSmiles(quercetine_smiles)
type(quercetine_mol)
rdkit.Chem.rdchem.Molという形式で保存される。この形式から色々な化合物の情報へと変換できる。
google colabolatory上で構造を表示したい場合には、Drawをimportして使用する。
from rdkit.Chem import Draw
Draw.MolsToGridImage([quercetine_mol])
rdkit.Chem.MolFromMolBlock(mol_block)
quercetineのsdfファイル(molファイル)をpubchemで取得して表示する。
quercetine_sdf = pcp.get_sdf('quercetine', 'name')
print(quercetine_sdf)
このSDFファイルから、分子をmolファイルへと変換することもできる。
SDFファイルには座標情報も含まれている。もとの座標情報も読み込んでmolファイルにしてくれる。
quercetine_mol_fromSDF = Chem.MolFromMolBlock(quercetine_sdf)
Draw.MolsToGridImage([quercetine_mol_fromSDF])
rdkit.Chem.MolFromInchi(Inchi)
inchiからもmolファイルへと変換することができる。
quercetine_inchi = quercetine[0].inchi
quercetine_inchi
Draw.MolsToGridImage([Chem.MolFromInchi(quercetine_inchi)])
その他の読み込み方法もあるが、必要に応じて調べてみてください。
たとえば、PDBのファイル形式でも読み取ることができます。
help(Chem.MolFromPDBFile)
複数分子の読み込み
rdkit.Chem.SDMolSupplier(SDF)
SDFファイルのダウンロード
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')
# supplを変換してリストにする。
mols = [mol for mol in suppl]
Draw.MolsToGridImage(mols)
Pandasのデータフレームに変換
from rdkit.Chem import PandasTools
df = PandasTools.LoadSDF('/content/drive/MyDrive/data/PubChem_TCI_phenol_records.sdf')
SDFファイルを読み取ってdfにしてくれる。
すでにPandasでdaraframeになっていてsmilesの列があるものをPandasToolsで変換する。
from rdkit.Chem import PandasTools
PandasTools.AddMoleculeColumnToFrame(df, "smiles")
Pandasの復習
読み取ったものからの変換
df["smiles"] = df["ROMol"].map(Chem.MolToSmiles)
これでsmilesの列を追加することができる。