Drkcore

23 08 2012 chemoinformatics Tweet

MCSベースでMatched Molecular Pair(MMP)を求める

そのうち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を構成するにはちょっとあれかな。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021