
目的
化合物の基本的な情報(化合物名や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