Pythonの化合物グラフ畳み込みのライブラリであるDeepChemを試します。
インストール
GPU版をインストール
~$ conda create -n deepchem-gpu ~$ conda install jupyter ~$ conda install -c deepchem -c rdkit -c conda-forge -c omnia deepchem-gpu=2.1.0
データセット
サンプルとしてdelaneyデータセット)を使用します。
(deephem/datasets/delaney-processed.csv)
このデータセットはESOLという手法で推定された化合物のaqueous solubilityのデータセットで、 ”delaney”は元ネタ論文の著者名のようです。
ESOL: Estimating Aqueous Solubility Directly from Molecular Structure
まずはデータの中身を見てみましょう。
import os import pandas as pd df = pd.read_csv("delaney-processed.csv") df.head()
以下のような構造になっていることがわかります。
1 | ... | 8 | 9 | 10 |
---|---|---|---|---|
化合物名 | ... | 極性表面積 | 溶解度(実測) | smile形式の化合物構造 |
CSVLoaderによるデータ読み込み
では実際にdeepchem.data.CSVlLoaderを用いてcsvファイルを読み込みます。
・ tasks
目的変数となるカラム名で、リストとして複数渡すことが可能
・ smiles_field
smile形式の構造データのカラム
・id_filed
化合物名のカラム
・featurizer
特徴抽出手法の指定
グラフ畳み込みをしたい場合、featurizer
は'GraphConv'などを指定する必要がありますが今回はテストなので'CircularFingerprint'にしておきます。
import deepchem as dc dataset_file = 'delaney-processed.csv' task = ['Polar Surface Area','measured log solubility in mols per litre'] featurizer_func = dc.feat.fingerprints.CircularFingerprint() loader = dc.data.CSVLoader(tasks=task, id_field='Compound ID',smiles_field='smiles', featurizer=featurizer_func) dataset = loader.featurize(dataset_file)
#out Loading raw samples now. shard_size: 8192 About to start loading CSV from delaney-processed.csv Loading shard 1 of size 8192. Featurizing sample 0 Featurizing sample 1000 TIMING: featurizing shard 0 took 4.645 s TIMING: dataset construction took 4.723 s Loading dataset from disk.
正常に読み込めているか見てみましょう。
pd.DataFrame(dataset.X,index=dataset.ids)
引用・参考
Creating a high fidelity DeepChem dataset from experimental data