pubchem から化合物情報を一気に取得する

目的

化合物の基本的な情報(化合物名や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にデータがないので省かれている)

CIDCASCanonicalSMILESIUPACNameMolecularFormula
7489100-21-0C1=CC(=CC=C1C(=O)O)C(=O)Oterephthalic acidC8H6O4
44579681002-62-6CCCCCCCCCC(=O)[O-].[Na+]sodium;decanoateC10H19NaO2
2482310028-15-6[O-][O+]=OozoneO3
138491002-84-2CCCCCCCCCCCCCCC(=O)Opentadecanoic acidC15H30O2
98611871002-89-7CCCCCCCCCCCCCCCCCC(=O)[O-].[NH4+]azanium;octadecanoateC18H39NO2

付録)検索に使用する情報まとめ

  • 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

関連書籍