はじめに
「Project-LogD (PJ-LogD)」では、ケモインフォマティクス分野の基礎である「公共データの抽出〜予測モデルの構築」までをPythonで実装していこうと思います。
内容としてはケモインフォマティクス初学者〜中級者が対象です。
ただし、同じような記事はネット上にありふれているため、そちらと差別化を図るために多少マニアックな内容を取り入れたいと考えています。そちらと相補的に活用していただければ幸いです。
また、記事の内容はGithubにも追加していく予定です。そちらもご参考ください。分かりにくい部分や間違っている部分、関連した情報の追記など、コメントいただけると励みになります。
PC環境
- OS: Ubuntu 22.04.3 LTS
- CPU: AMD Ryzen 7 5700X 8-Core Processor
- GPU: NVIDIA GeForce RTX 3060 Ti 8GB
- メモリ: 32GB
LogD予測モデル構築までの流れ
PJ-LogDでは名前の通り「LogD」というパラメーターの予測モデル構築を目指します。
LogDは創薬研究で重要となる脂溶性に関するパラメーターです。正直パラメーターは何でも良かったのですが、予測が簡単かつデータが豊富にあるので予測モデル構築の勉強には向いていると思います。
ケモインフォマティクス分野の予測モデル構築は概ね以下の流れです。
- データ収集
- データクレンジング
- 特徴量の算出
- 予測モデルの構築
他の分野の予測モデル構築と比べて特殊な部分といえば、データ収集の段階で特徴量を準備しなくてもよいところでしょうか?
もちろん予測対象とは別、かつ関連する実験値があれば貴重な特徴量になります。ただし、ケモインフォマティクス分野ではRDkitをはじめとして性能が良い計算記述子を比較的簡単に入手することができるため、化合物の構造情報(xyz座標やSMILES表現)があれば特徴量のことは後回しでも大丈夫です。
第1回目ではこれらのうち「データ収集」を行います。
ChEMBLからのデータ抽出
さて、予測モデル構築のためにはなんといってもデータが必要です。
最近はAI・データサイエンスが流行しているため調べれば各分野きれいなデータセットが手に入ります。
予測モデルを構築するだけであればそちらのデータセットを使った方が楽で精度も期待できますが、幅広くできた方がカッコいいので今回は公開データベースから情報を抽出するところから始めたいと思います。
ケモインフォマティクスでは利用可能な公開データベースが様々ありますが、今回はChEMBLという公開データベースを利用したいと思います。
ChEMBLのデータベースはWebサイトで利用する方法やローカル環境にダウンロードして利用する方法、Web APIで利用する方法があります。
ローカル環境にダウンロードしてSQLでデータベースを操作するのが一番インフォマティクスっぽいですが、ChEMBLのdbファイルは容量が大きいためLogDしか必要ない今回はWeb APIで利用したいと思います。
APIになれている人はPythonのrequestパッケージを用いてデータを取得することが可能だと思いますが、いささか難易度が高いため今回は”ChEMBL webresource client“というChEMBLが提供しているAPI用のパッケージを利用したいと思います。
以下のコードでは、ChEMBLのactivitiesエンティティの中で、standard_typeが”LogD”、standard_relationが”=”のデータを抽出し、csvとして保存しています。
使用するライブラリはcondaの仮想環境等を作成し適宜インストールしてください。以下のページはcondaによる仮想環境構築の参考です。
# 使用するライブラリ
import os
from chembl_webresource_client.new_client import new_client
import pandas as pd
# ChEMBLからデータを取得する
activity = new_client.activity
act = activity.filter(standard_type='LogD', standard_relation='=', )
print('化合物数: ', len(act)) #27337前後
# データをpandasのDataFrameに格納する
df = pd.DataFrame.from_records(act)
# データをcsvとして保存する
# Ubuntu 22.04のHome下に保存用のディレクトリを作成(保存場所はどこでもOK)
os.makedirs('~/shaeo-blog/pj-logd/dataset', exist_ok=True)
df.to_csv('~/shaeo-blog/pj-logd/dataset/chembl_logd.csv')
以上でChEMBLに含まれているLogDのデータをローカルの環境に保存することができました。
ちなみにデータの保存まで結構時間がかかります。管理人の環境ではコードの実行完了まで1時間半でした。
最後に
PJ-LogDの第1回目は「データ収集」として、ChEMBLからWeb API経由でLogDのデータを抽出しました。
抽出したデータはそのままの状態だと”粗すぎる”ため予測モデル構築に向けてきれいにする必要がありますが、その操作は第2回目の「データクレンジング」で行いたいと思います。
コメント