あるケミストの独り言(winchemwinの日記)

ケミスト(化学者)の視点で、面白そうな情報(シミュレーション関係など)を発信

化学構造データ変換‐Tips その3(組成式、分子量データ)

化学構造データ変換-Tips その3になります。
今回はsmiles形式で読み込んだデータからの化学組成式、分子量データの取り出しです。
利用データですが今回もその1の事例で使用したMolecular_Netでて提供されている水和の自由エネルギーデータ(SAMPL_MOL)のデータを利用させていただきました。
(記事の最後にコードを示しています。)


Rdkitには分子情報から機械学習等に用いる各種記述子を生成するモジュール(rdMolDescriptors)が用意されており、このモジュールを用いることで組成式や分子量の情報を取り出すことができます。
その1での事例と同様にまずは既存のcsvファイル(Mol_Net_SAMPL_Mol.csv:元ファイルからファイル名変更)読み込んだ後にsmilesが表記されている列データをリストデータ(smiles)として取り出しています。
続いて、取り出したsmilesのリストからmol形式のリスト(mols)に変換した後に、それぞれ「rdMolDescriptors.CalcMolFormula」、「rdMolDescriptors._CalcMolWt」のモジュールを用いることで組成式、分子量に変換しています。
以下はデータ追加後のデータフレームの一部ですが、組成式(chemforms)、分子量(mws)が追加されているのがわかるかと思います。

組成式、分子量追加後のデータ


以上、smilesデータからの化学組成式、分子量データの取り出しについて紹介させていただきました。

import pandas as pd
from rdkit import Chem
from rdkit.Chem import AllChem, Draw
from rdkit.Chem import rdMolDescriptors

df=pd.read_csv('Mol_Net_SAMPL_Mol.csv', encoding='shift-jis')
smiles=df['smiles']

mols=[Chem.MolFromSmiles(smi) for smi in smiles]

chemforms=[rdMolDescriptors.CalcMolFormula(mol) for mol in mols]
df['chemforms']=chemforms
mws=[rdMolDescriptors._CalcMolWt(mol) for mol in mols]
df['mws']=mws

df.to_csv('SAMPL_plus_MWetc.csv')