プログラミングのネタ帳

30代からプログラミングをはじめた。記憶力が悪いのでメモ代わりに。

pubchempy でsmilesとcidを指定してcompoundオブジェクトを取得する

色々あるのだろうけど、簡単な方法として二通りを紹介。

pubchempy.get_compounds(identifiernamespace=u'cid'searchtype=Noneas_dataframe=False**kwargs)

or

compoundオブジェクトの

classmethodfrom_cid(cid**kwargs)

 

試しにデカンを取得してみます。

まずは前者のget_compounds()関数から


import pubchempy as pcp

cmp_list=pcp.get_compounds(identifier="CCCCCCCCCC",namespace="smiles",searchtype=None,as_dataframe=False)
#返されるのはリスト型なので注意
print(cmp_list,type(cmp_list))
#各要素はcompoudオブジェクト
cmp_obj=cmp_list[0]
print(cmp_obj,type(cmp_obj))
#compoundオブジェクトのプロパティの一部
print(cmp_obj.iupac_name,cmp_obj.canonical_smiles,cmp_obj.molecular_formula,cmp_obj.cid)
    

実行結果は以下の通り

[Compound(15600)] <class 'list'>
Compound(15600) <class 'pubchempy.Compound'>
decane CCCCCCCCCC C10H22 15600

 

つづいて後者のCompoud.from_cid()を使う。

上記の結果から、デカンのcidは15600のようなので、芸がないようですが同じ結果を表示させてみる


cmp_ojb=pcp.Compound.from_cid(15600)
print(cmp_obj,type(cmp_obj))
#compoundオブジェクトのプロパティの一部
print(cmp_obj.iupac_name,cmp_obj.canonical_smiles,cmp_obj.molecular_formula,cmp_obj.cid)

結果

Compound(15600) <class 'pubchempy.Compound'>
decane CCCCCCCCCC C10H22 15600

 

 

詳しくは公式のリファレンスを読まないといけない。

compoudオブジェクトのプロパティとか詳細がある。

 

pubchempyの公式ドキュメントはこちら

PubChemPy documentation — PubChemPy 1.0.4 documentation

上記の方法の関数が書いてある箇所はこちら

API documentation — PubChemPy 1.0.4 documentation

 

この記事が初めてのエントリだったりします。

しょっぱななのにマニアックなネタですね・・・。

しかし、やってることは最も簡単なことで、化学屋さんに役に立てればと思います。