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が合わさったデータにな