23 08 2012 chemoinformatics Tweet
そのうちMMPベースのプロジェクト診断ツールでも作ろうかなと思っているので、fmcsを使ったMMP構築をやってみた。
fmcs sample.sdf --output-format complete-sdf --save-smiles-tag \ MCS_SMILES --save-atom-indices-tag MCS_ATOMS --output-all
で、MCSのSMILESと対応するatom indexをタグ付けしたsdfを出力しておいてpybelでMCSを削除する。
import pybel import sys input = sys.argv[1] for mol in pybel.readfile("sdf", input): print mol.data["MCS_SMILES"] del_atom_idxs = [int(num) for num in mol.data["MCS_ATOMS"].split()] del_atoms = [] for i,atom in enumerate(mol,0): if i in del_atom_idxs: del_atoms.append(atom) for a in del_atoms: mol.OBMol.DeleteAtom(a.OBAtom) print mol
そうすると、MMPが作れる。
もう少し具体的な例をと思ってChEMBLからsdfでも取ってきてとか思ったけど、やり方がわからなかったのでわからんとか言ってたら@32nmに教えてもらった。ありがとうございます。
というわけで、ChEMBLからカテプシンK阻害剤の化合物データからCHEMBL100616,CHEMBL101160,CHEMBL316685,CHEMBL327743,CHEMBL329731,CHEMBL419891の6化合物を引っ張ってきてやってみた
CCC(C)C(C=Cc1ccccc1)NC(=O)C1CCCCN1CC(=O)c1ccccc1 C(=O)(N)C CCC(C)C(C=Cc1ccccc1)NC(=O)C1CCCCN1CC(=O)c1ccccc1 Cl CCC(C)C(C=Cc1ccccc1)NC(=O)C1CCCCN1CC(=O)c1ccccc1 [NH+](=O)[O-] CCC(C)C(C=Cc1ccccc1)NC(=O)C1CCCCN1CC(=O)c1ccccc1 Cl CCC(C)C(C=Cc1ccccc1)NC(=O)C1CCCCN1CC(=O)c1ccccc1 [NH+](=O)[O-] CCC(C)C(C=Cc1ccccc1)NC(=O)C1CCCCN1CC(=O)c1ccccc1 OC.OC
あとはアッセイ情報と付きあわせてpIC50みたいなプロパティの引き算をすればMMPを利用した解析ができる。
ある程度コントロールできてる化合物群ではうまくいくんだが、MCSだと期待している以上にスキャフォールドをアサインしまうために、結果としてフラグメントが細切れになったり(Rの環が分割されてしまったり)してMMPを構成するにはちょっとあれかな。