いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【Python】共通構造をもつ化合物を分かりやすく示したい

・お題:Pythonで共通構造を持つ低分子化合物を弄っていた。構造情報を分かりやすく示したい。

 

・以下のサイトなどを参考にさせて頂いた。正しいことは元サイトをご確認いただきたい。

qiita.com

・まず、化合物の構造を落としてくる。今回はchemblから化合物を借りてきた(割愛)。検索した化合物はsdfでカレントディレクトリに保存した。

www.ebi.ac.uk

 ・次に、sdfファイルを読み込む。今回は、rdkitを用いて処理を進めていく。

from rdkit import Chem
suppl = Chem.SDMolSupplier("20230226.sdf", removeHs = False)
ms = [x for x in suppl if x is not None]
print(len(ms)) 

で73が返ってきた。73個の分子がsdfに入っている。

・次に、共通構造をとって来る。

from rdkit.Chem import rdFMCS
res = rdFMCS.FindMCS(ms)
mcs = Chem.MolFromSmarts(res.smartsString)
mcs

・次に、MCSを基準に向きを合わせる。
from rdkit.Chem import AllChem
AllChem.Compute2DCoords(mcs)
for m in ms:
    AllChem.GenerateDepictionMatching2DStructure(m, mcs)

・最後に、図示する。

from rdkit.Chem import Draw
ms_match = [n.GetSubstructMatch(mcs) for n in ms]
Draw.MolsToGridImage(ms, molsPerRow = 4, subImgSize = (200,200), legends = [x.GetProp("chembl_id") for x in ms], highlightAtomLists = ms_match)

・例が悪すぎて微妙なことこの上ないけれど、一応目標の図示はできた。

 

おわり。