【Python】共通構造をもつ化合物を分かりやすく示したい
・お題:Pythonで共通構造を持つ低分子化合物を弄っていた。構造情報を分かりやすく示したい。
・以下のサイトなどを参考にさせて頂いた。正しいことは元サイトをご確認いただきたい。
・まず、化合物の構造を落としてくる。今回はchemblから化合物を借りてきた(割愛)。検索した化合物はsdfでカレントディレクトリに保存した。
・次に、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)

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