LICSS System (Excel-CDK): 部分構造検索


Excel-CDKを用いれば、Excel上で部分構造検索を行うことができます。

Step 1:
Excelを起動し、ワークシート上で”Ctrl+E”を押します。

Step 2:
“Workbook Selection”ダイアログが表示されるので、リストボックスからBook1を選択し、”OK”ボタンを押します。
そうすると”LICSS Programs”というワークシートが追加されます。

Step 3:
“LICSS Programs”以外のワークシート上で”Ctrl+Shift+M”を押します。

Step 4:
“LICSS Programs”ワークシートを選択すると、”LICSS Programs”ダイアログが表示されます。

Step 5:
“LICSS Programs”ダイアログ”の”Import SDF File”ボタンを押して、sdfをインポートします。
ここでは、Chemblから取得したCDK2阻害剤のデータであるcdk2.sdf(1965化合物)を用います。
ワークシートにSMILESが表示されますので、SMILESの列を選択し、”Ctrl+Shift+M”を押します。

Step 6:
“LICSS Programs”ワークシートを選択すると、”LICSS Programs”ダイアログが表示されます。
“SubstructureSearching”を選択し”OK”ボタンを押します。

Step 7:
“SubStructure Search”ダイアログが表示されます。
TextBoxにSMILESで部分構造を入力してもいいのですが、空のままで”OK”ボタンを押すと分子エディタが起動します。
今回は、以下の部分構造を描画し、左上のボタン(赤四角)を押します。

Step 8:
ワークシート上のSMILESの横の列に検索結果が表示されます。ヒットしたSMILESの横には”1″が、そうでないものには”0″が表示されます。127化合物がヒットしました。

Step 9:
ExcelのFilter機能を使って”1″の行だけ表示させるとヒット化合物一覧を得ることができます。

ほぼ同じ手順で、Similarity Searching, Diverse Compounds Pickerを行うことができます。
数千化合物程度であれば、速度的にも問題なくExcel上で処理できます。


LICSS Ver3.2

カテゴリー: Excel-CDK | タグ: , | コメントは受け付けていません。

LICSS System (Excel-CDK): 化合物一覧表の作成


Excel-CDKを使って化合物の一覧表を作成してみます。

Step 1:
Excelを起動し、ワークシート上で”Ctrl+E”を押します。

Step 2:
“Workbook Selection”ダイアログが表示されるので、リストボックスからBook1を選択し、”OK”ボタンを押します。
そうすると”LICSS Programs”というワークシートが追加されます。

Step 3:
“LICSS Programs”以外のワークシート上で”Ctrl+Shift+M”を押します。

Step 4:
“LICSS Programs”ワークシートを選択すると、以下の”LICSS Programs”ダイアログが表示されます。

Step 5:
“LICSS Programs”ダイアログ”の”Import SDF File”ボタンを押して、sdfをインポートします。
ここでは、DUDにあるACE阻害剤をインポートしました。

Step 6:
ワークシート上に、化合物のIDとSMILESが表示されていると思います。
SMILESが表示されている列を選択し、”Ctrl+Shift+M”を押します。

Step 7:
“LICSS Programs”ダイアログを表示させて、”Calculate Molecular Descriptors”を選択し”OK”ボタンを押します。
ここでは、MolWt, TPSA, XLogP, RotatableBondsCountを選択し、”OK”ボタンを押します。

ワークシートに選択したDescriptorsの値が表示されると思います。

Step 8:
“LICSS Programs”ダイアログを表示させて、”Set Defaults”ボタンを押します。
“Structure Size”を50とします。この値で、Excel上に表示させる構造式のサイズを調整できます。

Step 9:
“LICSS Programs”ダイアログを表示させて、”Active Structure Display”ボタンを押します。
もしくは、ワークシート上で”Cntl+T”を押します。
これで、ワークシート上に化学構造式が表示されます。あとは、適当に整形して、印刷します。

pdfで化合物一覧を出力すると、こんな感じになります

LICSS_table.pdf

化合物の画像サイズを調整できるところが気に入ってます。


LICSS ver3.2

カテゴリー: Excel-CDK | コメントは受け付けていません。

スペクトラルクラスタリング


スペクトラルクラスタリングは、グラフの分割問題を解くことにより、クラスタリングを行う手法です。
グラフの分割を固有値問題の解から得ることができます。

以下の書籍を参考にして、化合物のクラスタリングを行ってみました。

 ”Rで学ぶクラスタ解析”
  新納浩幸著 オーム社

RDKit, Numpyを使って実装しています。
spclus.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import numpy as np
import math
import sys
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit import DataStructs
 
 
def getSimMatrix(filename):
    """ Similarity Matrixの作成
    """
    suppl = Chem.SDMolSupplier(filename)
    fps =[AllChem.GetMorganFingerprintAsBitVect(m,2,nBits=2048) for m in suppl if m is not None]
    W = []
    for i,fp in enumerate(fps):
        W.append(DataStructs.BulkTanimotoSimilarity(fps[i],fps,returnDistance=0))
    W = np.array(W)
 
    return W
 
 
def spclus(W, clsn):
    """ スペクトラルクラスタリング (メイン)
    """
    N = W.shape[0]          # 行数
    gclsn = 1               # クラス数の初期値
    scorelist = np.ones(1)  # 各クラス内の平均類似度
    result = np.ones(N)     # 各化合物の属するクラス
    tgc = 1                 # 分割するクラスidx
 
    while gclsn < clsn:
        tgv = np.array([i for i in range(N) if result[i] == tgc]) 
        cab = spclus_core(W,tgv)
        ca = cab[0]
        cb = cab[1]
        gclsn += 1
        result[cb] = gclsn
        cav1 = spclus_clusscore(W,ca)
        cav2 = spclus_clusscore(W,cb)
        scorelist[tgc-1] = cav1
        scorelist = np.append(scorelist,cav2)
        tgc = scorelist.argsort()[0] + 1
 
    return result
 
 
def spclus_core(bigW, tgv):
    """ スペクトラルクラスタリング (分割対象の領域の抽出)
    """
    W = bigW[tgv,:][:,tgv].copy()
    cab = spclus_subcore(W)
    ca = cab[0]
    cb = cab[1]
 
    return [tgv[ca],tgv[cb]]
 
 
def spclus_subcore(W):
    """ スペクトラルクラスタリング (計算の中心)
    """
    N = W.shape[0]
    row_sum = np.sum(W,axis=1)
    D2 = np.diag(np.array([1/math.sqrt(s) for s in row_sum]))
    I = np.diag(np.ones(N))
    X = I - np.dot(np.dot(D2,W),D2)
    eg_val, eg_vec = np.linalg.eig(X)
    min2 = eg_val.argsort()[1]
    fv = eg_vec[:,min2]
    ca = np.array([ i for i in range(N) if fv[i] >= 0])
    cb = np.array([ i for i in range(N) if fv[i] < 0])
 
    return [ca,cb]
 
 
def spclus_clusscore(W, ca):
    """ クラス内の平均類似度を計算
    """
    N = len(ca)
    dzero = W[0,0]
    if N == 1:
        return dzero
    ave_sim = (np.sum(W[ca,:][:,ca]) - N*dzero)/(N*(N-1))
 
    return ave_sim
 
 
def main():
    """ メイン
    """
    # Similarity Matrixの作成
    W = getSimMatrix("ligands.sdf")
 
    # スペクトラルクラスタリングの実行
    result = spclus(W,3)
 
    # 結果の表示
    print result
 
if __name__ == '__main__':
    main()

ここでは、ACE, Thrombin, ERを標的とした化合物を各3つ用意しました。
合計9の化合物からなるligands.sdfを入力とし、3つのクラスへの分割を行いました。

・実行

$ python spclus.py
[ 3.  3.  3.  1.  1.  1.  2.  2.  2.]

結果は、クラス番号を要素とする配列として得られます。
要素のインデックスが化合物に対応しています。

以下に化合物とクラス番号の対応を示します。

ごく当たり前の結果ですが、化合物の標的タンパク質とクラス番号が一致しています。


RDKit Release_2013.09.2
Numpy 1.7.0

カテゴリー: RDKit | タグ: | コメントは受け付けていません。

LICSS System (Excel-CDK)のインストールと動作確認


LICSS Systemは、Excel上で化学構造式の表示や物性計算を行うためのアドインです。

・インストール
LICSS-3.2は、以下のサイトのNew (December 2013)の下にあるリンク先から入手できます。
http://code.google.com/p/excel-cdk/

私の環境は、Excel 2010 (32bit版), Windows 7 (64bit版)です。
64bit版のExcelでもLICSSのインストールを試みましたが、インストールできませんでした。
今のところ32bit版のExcelでしか動作しないようです。

Step 1:
入手したファイル、LICSS-3.2-FullInstaller[ExperimentalVersion].exeをダブルクリックし、インストーラーの指示に従います。

Step 2:
Excelが立ち上がりますので、”コンテンツの有効化”をボタンを押します。

Step 3:
以下のダイアログが表示されますので、”OK”ボタンを押します。

Step 4:
Excelとインストーラーを閉じます。

・アドインのアクティブ化の確認
Excelを起動し、”ファイル”→”オプション”→”アドイン”を押します。
アクティブなアプリケーションアドインにLicssv3.2が表示されていればOKです。

・動作確認
Step 1:
Excelを立ち上げ、”Cntl+E”を押すと以下のダイアログが表示されます。
リストボックスからBook1を選択し、”OK”ボタンを押します。

Step 2:
1行目にタイトル、2行目以降にSMILESを記載します。
列Aを選択し、”Ctrl+Shift+M”を押します。

Step 3:
“Ctrl+T”を押すとセルに構造式が表示されます。

もう一度”Ctrl+T”を押すとSMILESに戻ります。

ちょっと動作は不安定ですが、便利なアドインだと思います。


LICSS ver3.2
Excel 2010 (32bit版)

カテゴリー: Excel-CDK | タグ: | コメントは受け付けていません。

AquaSolのインストールと動作確認


logSの予測をAquaSolを使って行ってみたいと思います。
AquaSolは、Deep Learningを用いて予測モデルを構築しています。

以下のサイトでAquaSolを利用することもできますが、今回は、ソースコード(UG-RNN.zip)を入手して、ローカル環境にインストールしてみます。

http://chemdb.ics.uci.edu/cgibin/tools/AquaSolWeb.py

・インストール
OS:CentOS 6.4
OpenBabel(2.3.1)を事前にインストールしてください。

$ cd ~/software
$ unzip UG-RNN.zip
$ cd UG-RNN/ugrnn
$ make clean
$ make
$ make -f makefilePredict

make cleanは忘れずに実行してください。
これで、インストールは完了しました。

・学習用データセットの準備
今回は動作確認のためにUG-RNN.zipに含まれているデータセットdelaneyをdata01として使います。

$ cd ~/software/UG-RNN/dataset
$ mkdir data01
$ cd delaney
$ cp delaney.smi delaney.target delaney.logP ../data01

delaneyには、1144化合物のsmiles(delaney.target)、実測logS(delaney.target)、logP値(delaney.logP)があります。
今回は、このうち1000化合物を学習セット、144化合物を予測セットとして利用します。
本来は、1000化合物をランダムに選択した方がいいのでしょうが、今回はファイルの先頭から1000化合物を単純に学習セットとしました。

$ cd ../data01
$ cat delaney.smi | awk 'NR <= 1000 {print}' > data01.smi
$ cat delaney.target | awk 'NR <= 1000 {print}' > data01.target
$ cat delaney.logP | awk 'NR <= 1000 {print}' > data01.logP

data01を使って学習用データファイル(data01)を作成します。

$ cd ~/software/UG-RNN/dataset
$ /bin/sh generateDataset.sh data01
$ cp data01/data01 ../ugrnn/data

・予測モデルの構築
学習用データファイル(data01)を用いて予測モデルを作成します。
ここでは、10-fold Cross Validationを行うことにします。

$ cd ~/software/UG-RNN/ugrnn
$ python ugrnnTrain.py -d data01 -t data01 -m 1 -f 10
$ cd test/data01/PBS
$ /bin/bash data010F0M
$ /bin/bash data011F0M
$ /bin/bash data012F0M
$ /bin/bash data013F0M
$ /bin/bash data014F0M
$ /bin/bash data015F0M
$ /bin/bash data016F0M
$ /bin/bash data017F0M
$ /bin/bash data018F0M
$ /bin/bash data019F0M

・予測モデルの評価

python ugrnnCheckResults.py -t test/data01 -f 10 -m 1 -vl -aof

標準出力に結果が出力されます。

...
AVERAGE...
RMSE:1.20841267279 0.0827968266057 AAE:0.964268012 0.0591614177625 PEARSON:0.694966404674 0.0480359513947

10個の予測モデルにおける平均の相関係数が約0.695であることが分かります。

・予測モデルを用いたlogSの算出
delaneyから残りの144化合物を取り出します。

$ cd ~/software/UG-RNN/dataset/data01
$ cat delaney.smi | awk 'NR > 1000 {print}' > data01_pred.smi
$ cat delaney.target | awk 'NR > 1000 {print}' > data01_pred.smi.target
$ cat delaney.logP | awk 'NR > 1000 {print}' > data01_pred.smi.logP
$ cp data01_pred.* ~/software/UG-RNN/ugrnn

144化合物のlogSを算出してみます。
ここでは、10-fold Cross Validationで構築された10個の予測モデルを使ってlogSを算出します。

$ python ugrnnPredict.py -i data01_pred.smi -md test/data01 -m 1 -f 10 > data01_pred.out

10個の予測モデルより算出されたlogSの平均値と実測logSをグラフにしてみます。

なかなか良好な結果だと思います。


カテゴリー: AquaSol | タグ: | コメントは受け付けていません。