同じ化学構造かどうかを調べるツール
データベースの中に、同じ化学構造が入っていて、あーーってことあります。自分が作っていないと、余計に気になります。なので、確かめるプログラムを作っています。
import pandas as pd from rdkit import Chem, DataStructs from rdkit.Chem import AllChem csv="iQSPR_sample_data.csv" data=pd.read_csv(csv) data=data[ data["SMILES"] != "FBr(F)(F)(F)F" ] smi=data["SMILES"] mols=[Chem.MolFromSmiles(m) for m in smi] morgan_fps = [AllChem.GetMorganFingerprintAsBitVect(mol, 2, 2048) for mol in mols] sameOne=0 for i in range(len(smi)): morgan = DataStructs.BulkTanimotoSimilarity(morgan_fps[i], morgan_fps) for j in range(len(smi)): if i != j : if morgan[j] > 0.9: a=Chem.MolToSmiles(mols[i]) b=Chem.MolToSmiles(mols[j]) if a==b: print("Tanimo coefficient and SMILES test",i,j,a,list(data["E"])[i],list(data["E"])[j]) sameOne+=1 print(len(smi),sameOne)
実行してみると、
16673 814
という答えがあるので、814/2個分だけ余計なデータが入っていたようです。
そこまで多くはないので、学習モデルには影響していないのかもしれない。おなじ化学構造でエネルギー計算の値が0.8kJ/molほど違っていたので、その差はそんなにないのか。
計算化学のデータだからと言って、鵜呑みにせず、調べてみることが必要かもしれないですね。
(自分でデータ作るか、検算はしておこうということですね)