#目的
化合物の基本的な情報(化合物名やCASなど)から、その化合物の情報(カノニカルSMILESや、分子量などの基本的な記述子)を取得する。
(SMILES情報があれば記述子を計算→化合物の物性予測の変数として使用できるが、SMILESを収集するのが面倒なので自動で一気に取得したい)
#前準備
pubchemのモジュールをインストールしておく
pip install pubchempy
#単一化合物情報の取得
とりあえず一つの化合物の情報を取得する方法
import pubchempy as pcp
#取得したい情報のリストを定義
properties = ['MolecularFormula', 'MolecularWeight', 'CanonicalSMILES', 'IUPACName']
#CAS番号から情報を取得する
result = pcp.get_properties(properties, '64-17-5', 'name')
#化合物ごとにレコードを記録した辞書のリストが返される。
print(result)
"""
output
[{'CID': 702,
'MolecularFormula': 'C2H6O',
'MolecularWeight': 46.07,
'CanonicalSMILES': 'CCO',
'IUPACName': 'ethanol'}]
"""
#複数化合物情報の取得
リストに格納された複数のCAS番から化合物情報を取得してpandasのデータフレームに格納する。
import pubchempy as pcp
import pandas as pd
#情報を取得したい化合物のCAS番号のリストと取得したい情報のリストを定義
properties = ['MolecularFormula','CanonicalSMILES', 'IUPACName']
cas_list = ['100-21-0','1002-62-6','10028-15-6','1002-84-2','1002-89-7', '999-9-9']
#pubchem に情報のない化合物はエラーとなるので、エラーが発生しても途中で終了させずに処理を継続できるようにtry文を使用
df = pd.DataFrame()
for cas in cas_list:
try:
temp = pcp.get_properties(properties, cas, 'name',as_dataframe=True)
#as_dataframe=True とすることでpandas dataframe として情報を取得可能
temp['CAS'] = cas
df = pd.concat([df,temp],axis=0,join='outer',sort=True)
except:
pass
上記コードから取得できたデータフレーム
(CAS:999-9-9 はpubchemにデータがないので省かれている)
CID | CAS | CanonicalSMILES | IUPACName | MolecularFormula |
---|---|---|---|---|
7489 | 100-21-0 | C1=CC(=CC=C1C(=O)O)C(=O)O | terephthalic acid | C8H6O4 |
4457968 | 1002-62-6 | CCCCCCCCCC(=O)[O-].[Na+] | sodium;decanoate | C10H19NaO2 |
24823 | 10028-15-6 | [O-][O+]=O | ozone | O3 |
13849 | 1002-84-2 | CCCCCCCCCCCCCCC(=O)O | pentadecanoic acid | C15H30O2 |
9861187 | 1002-89-7 | CCCCCCCCCCCCCCCCCC(=O)[O-].[NH4+] | azanium;octadecanoate | C18H39NO2 |
付録)検索に使用する情報まとめ
- name:化合物名, CAS番
- formula:分子式
- smiles:SMILES
- inchi:InChI(世界共通で使える化合物の標準名)
- sdf:sdf(化合物の表記法)
- cid:CID(pubchemのデータベース内で化合物に割り当てられているID)
付録)取得できる情報まとめ
(*随時、情報を追加していく)
RDKitやmordredで分子記述子や構造記述子を計算しなくても、これらの変数である程度の予測はできそう。
- MolecularFormula:分子式
- MolecularWeight:分子量
- CanonicalSMILES:カノニカルSMILES
- IsomericSMILES :同位体や不斉中心についての記述を含むSMILES
- InChI:InChI(世界共通で使える化合物の標準名)
- InChIKey:化合物のデジタル表現
- IUPACName:IUPAC名
- XLogP:水オクタノール分配係数
- ExactMass:分子量
- MonoisotopicMass
- TPSA:Topological Polar Surface Area(トポロジカル極性表面積)
- Complexity
- Charge
- HBondDonorCount
- HBondAcceptorCount
- RotatableBondCount
- HeavyAtomCount
- IsotopeAtomCount
- AtomStereoCount
- DefinedAtomStereoCount
- UndefinedAtomStereoCount
- BondStereoCount
- DefinedBondStereoCount
- UndefinedBondStereoCount
- CovalentUnitCount
- Volume3D
- XStericQuadrupole3D
- YStericQuadrupole3D
- ZStericQuadrupole3D
- FeatureCount3D
- FeatureAcceptorCount3D
- FeatureDonorCount3D
- FeatureAnionCount3D
- FeatureCationCount3D
- FeatureRingCount3D
- FeatureHydrophobeCount3D
- ConformerModelRMSD3D
- EffectiveRotorCount3D
- ConformerCount3D
#参考HP