🔖
rdkitで原子電荷の取得と構造式とともに表示する方法
はじめに
rdkitで原子電荷の数字を取得したり、画像で表示する方法をまとめました。
原子電荷に関して理論
使用するライブラリーとインポートするライブラリー
!pip install rdkit==2022.3.5
from rdkit import Chem
from rdkit.Chem import AllChem, Draw
from rdkit.Chem.Draw import IPythonConsole, SimilarityMaps
今回使用する分子
mol = Chem.MolFromSmiles('c1ncncc1C(=O)[O-]')
mol
これを実行すると、以下の分子が表示される。
原子のidを表示
mol_with_id = Chem.Mol(mol)
for atom in mol_with_id.GetAtoms():
atom.SetProp('molAtomMapNumber', str(atom.GetIdx()))
mol_with_id
このコードでidごとに数字を表示したものが表示される。
電荷の数字を取得する。
AllChem.ComputeGasteigerCharges(mol)
atom_charges = [float(mol.GetAtomWithIdx(i).GetProp('_GasteigerCharge')) for i in range(mol.GetNumAtoms())]
for i, atom_charge in enumerate(atom_charges):
print(i, ":", round(atom_charge, 3))
idごとの数字が表示される。
原子ごとにatom_chargeを画像とともに表示する。
mol_with_charge = Chem.Mol(mol)
for atom in mol_with_charge.GetAtoms():
lbl = str(round(atom.GetDoubleProp("_GasteigerCharge"), 3))
atom.SetProp('atomNote',lbl)
mol_with_charge
画像とともに数字が表示される。
原子電荷のmapで表示
fig = SimilarityMaps.GetSimilarityMapFromWeights(mol, weights=atom_charges, colorMap='bwr', size=(300, 300))
等高線と色で表示することができる。
今回使ったコードをgoogle colabolatoryで公開
今回使ったコードをWEB上で試せるアプリ
streamlitを使って作成しています。
ChargeAnalysisを選択して、simlesを入力すれば表示することができます。
Discussion