どこから見てもメンダコ

軟体動物門頭足綱八腕類メンダコ科

DeepChem① (csvデータ読み込み)

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()

f:id:horomary:20181013235942p:plain

以下のような構造になっていることがわかります。

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)

f:id:horomary:20181014002757p:plain

引用・参考

Creating a high fidelity DeepChem dataset from experimental data

Modeling Solubility