Chapter 49

データの準備

poclabweb
poclabweb
2022.10.26に更新

0. データの準備

ライブラリーのインストール

使用するライブラリーをインストールする

#rdkitのインストール
!pip install rdkit==2022.3.5

ライブラリーを呼び出す。使用したrdkitのversionも表示させておきます。

import pandas as pd
from rdkit import rdBase, Chem
from rdkit.Chem import AllChem, PandasTools
print(rdBase.rdkitVersion)

データのダウンロードとデータの確認

化合物の溶解度のデータを使用する。

!wget 'http://modem.ucsd.edu/adme/data/databases/logS/data_set.dat'

読み込んだデータをpandasのデータフレームに入れる。

df = pd.read_csv('data_set.dat', sep='\t', header=None, names = ["smiles", "CAS", "logS"]) 
df

読み込んだファイルを表示させると以下のようになる

化学情報へと変換するために、PandasToolsを使ってmolファイルにする。

PandasTools.AddMoleculeColumnToFrame(df, "smiles")
df.head(3)

先頭の分子を表示させると以下のようになる。

データの加工

データが全て揃っているかを確かめるために

# 欠損状態があるかを確認
df.isnull().sum()

# 欠損状態になっているデータの行を削除する。
df = df.dropna(subset=['ROMol'], axis=0)
# 欠損がなくなっているかを確認
df.isnull().sum()

削除したデータもあるので、データのインデックスを振り直した。

df = df.reset_index()

FingerPrintの作成

import numpy as np

fingerprints = []
safe = []
for mol_idx, mol in enumerate(df["ROMol"]):
    try:
        fingerprint = [x for x in AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048)]
        fingerprints.append(fingerprint)
        safe.append(mol_idx)
        
    except:
        print("Error", mol_idx)
        continue
fingerprints = np.array(fingerprints)
print(fingerprints.shape)
df_fp = pd.DataFrame(fingerprints)

FingerPrintとデータを結合させる。

df_comb = pd.merge(df, df_fp, left_index=True, right_index=True)
df_comb.head(3)

FingerPrintとdataが合わさったデータにな