Chainerで簡単なQSARモデルを試してみる【化合物の血液脳関門透過性を予測する】
QSAR(定量的構造活性相関:Quantitative Structure-Activity Relationship)とは、化学物質の構造とその生理活性(毒性・酵素への結合能・医薬品としての作用性など)の統計的な相関関係のことをいいます。膨大な化学物質の実験データセットをもとにした相関から化合物の性能を予測することができます。
今回は日本製のディープラーニングフレームワークであるChainerを用いて「化合物の血液脳関門透過性を予測する」簡単なQSARモデルが作成し、テストセットに対する性能を検証してみます。
予測対象とデータ
データには、MoleculeNetのBBBPを利用。データの俯瞰は以前に実施した以下を参照。
化合物の血液脳関門透過性について「透過性あり(penetration)」を1、「透過性なし(non-penetration)」を0でまとめたデータになります。
モデルの作成
環境
rdkit version: 2019.03.4 Platform: Linux-5.0.0-37-generic-x86_64-with-debian-buster-sid Chainer: 6.2.0 NumPy: 1.17.4 CuPy: CuPy Version : 6.2.0 CUDA Root : /usr/local/cuda CUDA Build Version : 10010 CUDA Driver Version : 10010 CUDA Runtime Version : 10010 cuDNN Build Version : 7500 cuDNN Version : 7605 NCCL Build Version : 2402 NCCL Runtime Version : 2402 iDeep: Not Available
chainer.print_runtime_info()で使用しているChainer、Numpy、Cupyのバージョンを確認できます。
モデル構築
<class 'numpy.ndarray'> (1937, 200) <class 'numpy.ndarray'> (1937,) <class 'numpy.ndarray'> (102, 200) <class 'numpy.ndarray'> (102,)
molオブジェクトからの記述子作成についてはこちらを参照。
SMILESから分子記述子とフィンガープリントを算出して、データフレームに格納する【Python, RDKit】
Chainerの基本的な使い方は公式チュートリアルが非常に充実しています。
ディープラーニング入門 Chainer チュートリアル

それなりの精度は出ていそうですが、学習が進んでもテストセットに対するaccuracyがあまり改善していっていない…
推論
array([[21, 7], [ 5, 69]])
accuracyは図からもわかる通りの値。混同行列でクラス分類の精度を評価してみると偽陽性、偽陰性もありますが、一方に偏った分類で精度を稼いでるわけでもなさそう。

画像は出力の一部ですが、人目でも判別できそうなのはちゃんと正解できています。間違えたのを精査するのも楽しそうです。
ディスカッション
コメント一覧
まだ、コメントがありません