Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
149 lines (113 sloc) 7.9 KB

8章: 沢山の化合物を一度にみたい

jupyter

沢山のデータがどのように分布しているのかを見るには適当な空間にマッピングするのが一般的です。特にケモインフォマティクスではケミカルスペースという言葉が使われます。

Chemical Spaceとは

ケミカルスペースとは化合物を何らかの尺度でn次元の空間に配置したものを指します。一般に、2次元または3次元が使われることが多いです(人間の理解のため)。尺度つまり類似性に関しては色々な手法が提案されていますが、うまく化合物の特徴を表すような距離が定義されるように決められることが多いです。

今回は睡眠薬のターゲットとして知られているOrexin Receptorのアンタゴニストについて、どの製薬企業がどういった化合物を開発しているのかを視覚化してみます。データのダウンロード方法は4章を参照してください。今回は表の10個の論文のデータを利用しました。

今回知りたいことは主に以下の2つです。

  • 似たような化合物を開発していた会社はあったのか?

  • Merckは似たような骨格ばかり最適化していたのか、それとも複数の骨格を最適化したのか?

Table 1. Orexin Receptor Antagonist

Doc ID

Journal

Pharma

CHEMBL3098111

Bioorg. Med. Chem. Lett. (2013) 23:6620-6624

Merck

CHEMBL3867477

Bioorg Med Chem Lett (2016) 26:5809-5814

Merck

CHEMBL2380240

Bioorg. Med. Chem. Lett. (2013) 23:2653-2658

Rottapharm

CHEMBL3352684

Bioorg. Med. Chem. Lett. (2014) 24:4884-4890

Merck

CHEMBL3769367

J. Med. Chem. (2016) 59:504-530

Merck

CHEMBL3526050

Drug Metab. Dispos. (2013) 41:1046-1059

Actelion

CHEMBL3112474

Bioorg. Med. Chem. Lett. (2014) 24:1201-1208

Actelion

CHEMBL3739366

MedChemComm (2015) 6:947-955

Heptares

CHEMBL3739395

MedChemComm (2015) 6:1054-1064

Actelion

CHEMBL3351489

Bioorg. Med. Chem. (2014) 22:6071-6088

Eisai

ユークリッド距離を用いたマッピング

描画ライブラリにはggplotを使います。主成分分析(PCA)を利用して、化合物が似ているものは近くになるように分布させて可視化します。まずは必要なライブラリをインポートします

from rdkit import Chem, DataStructs
from rdkit.Chem import AllChem, Draw
import numpy as np
import pandas as pd
from ggplot import *
from sklearn.decomposition import PCA
import os

ダウンロードしたsdfを読み込んで、製薬企業とドキュメントIDの対応が取れるようにしてそれぞれの化合物についてフィンガープリントを構築します。もし不明な点があれば6章を確認してください。

oxrs = [("CHEMBL3098111", "Merck" ),("CHEMBL3867477", "Merck" ),
     ("CHEMBL2380240", "Rottapharm" ),("CHEMBL3352684", "Merck" ),
     ("CHEMBL3769367", "Merck" ),("CHEMBL3526050", "Actelion" ),
     ("CHEMBL3112474", "Actelion" ),("CHEMBL3739366", "Heptares" ),
     ("CHEMBL3739395", "Actelion" ), ("CHEMBL3351489", "Eisai" )]

fps = []
docs = []
companies = []

for cid, company in oxrs:
    sdf_file = os.path.join("ch08", cid + ".sdf")
    mols = Chem.SDMolSupplier(sdf_file)
    for mol in mols:
        if mol is not None:
            fp = AllChem.GetMorganFingerprintAsBitVect(mol, 2)
            arr = np.zeros((1,))
            DataStructs.ConvertToNumpyArray(fp, arr)
            docs.append(cid)
            companies.append(company)
            fps.append(arr)
fps = np.array(fps)
companies = np.array(companies)
docs = np.array(docs)

フィンガープリントの情報を確認すると10の論文から293化合物のデータが得られていることがわかります。

fps.shape
# (293, 2048)

これで主成分分析の準備完了です。主成分の数はn_componentsで指定できますが今回は二次元散布したいので2にします。

pca = PCA(n_components=2)
x = pca.fit_transform(fps)

描画します。colorオプションを変えると、それぞれのラベルに応じた色分けがされるので、OMPANYとDOCIDの2つの属性を選んでみました。

d = pd.DataFrame(x)
d.columns = ["PCA1", "PCA2"]
d["DOCID"] = docs
d["COMPANY"] = companies
g = ggplot(aes(x="PCA1", y="PCA2", color="COMPANY"), data=d) + geom_point() + xlab("X") + ylab("Y")
g

各製薬会社がどのような化合物を最適化したのかがわかるようになりました。ケミカルスペースの中心部に各社重なる領域があるので、Merck, Acterion, Eisai, Heptaressは似たような化合物を最適化していたと思われます。Acterionはうまく独自性のある方向(左下)に展開できたのか、展開できなくてレッドオーシャン気味の中心部に進出してきたのかは興味深いです。

またMerckは色々な骨格を最適化していたようです。同時に最適化したのか先行がこけてバックアップに走ったのかわかりませんが、多数の骨格の最適化が動いていたのは間違いないので、ターゲットとしての魅力が高かったということでしょう。実際SUVOREXANTは上市されましたしね。

PCA PCA

patinformatics

本章では論文データを利用しましたが、実際の現場でこのような解析をする場合には論文データは使いません。なぜなら企業が論文化するときはそのプロジェクトが終わったこと(成功して臨床に進んだか、失敗して閉じたか)を意味するからです。実際の場面では特許データを利用して解析をします。

このような解析とメディシナルケミストの経験と洞察力をもとに他社状況を推測しながら自分たちの成功を信じてプロジェクトは進んでいきます。

tSNEをつかったマッピング

PCAよりもtSNEのほうが分離能がよく、メディシナルケミストの感覚により近いと言われています。sklearnではPCAをTSNEに変更するだけです。

from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, random_state=0)
tx = tsne.fit_transform(fps)

描画するとわかりますが、PCAに比べてよく分離されています。

d = pd.DataFrame(tx)
d.columns = ["PCA1", "PCA2"]
d["DOCID"] = docs
d["COMPANY"] = companies
g = ggplot(aes(x="PCA1", y="PCA2", color="COMPANY"), data=d) + geom_point() + xlab("X") + ylab("Y")
g
PCA

今回紹介したPCA,tSNEの他にも色々な描画方法があるので調べてみるとよいでしょう。

You can’t perform that action at this time.