PubChemPy提供了一种在Python中与PubChem进行交互的方法。它允许通过名称、子结构和相似性进行化学搜索、化学标准化、化学文件格式之间的转换、化学特性的描述和检索。
PubChemPy安装
pip install pubchempy
PubChemPy的使用
下面是具体的使用示例:
导入
>>> import pubchempy as pcp
>>> c = pcp.Compound.from_cid(5090)
>>> print c.molecular_formula
C17H14O4S
>>> print c.molecular_weight
314.35566
>>> print c.isomeric_smiles
CS(=O)(=O)C1=CC=C(C=C1)C2=C(C(=O)OC2)C3=CC=CC=C3
>>> print c.xlogp
2.3
>>> print c.iupac_name
3-(4-methylsulfonylphenyl)-4-phenyl-2H-furan-5-one
>>> print c.synonyms
[u'rofecoxib', u'Vioxx', u'Ceoxx', u'162011-90-7', u'MK 966', ... ]
也可以通过名称导入特定的函数和类并直接使用它们:
from pubchempy import Compound, get_compounds
c = Compound.from_cid(1423)
cs = get_compounds('Aspirin', 'name')
get_compounds()
如果不知道化合物的CID,则使用get_compounds()
>>> results = pcp.get_compounds('Glucose', 'name')
>>> print results
[Compound(79025), Compound(5793), Compound(64689), Compound(206)]
第一个参数是标识符,第二个参数是标识符类型,必须是name、smiles、sdf、inchi、inchikey、formula中的一个。在Pub Chem数据库中,有4个化合物的名称为Glucose。
>>> pcp.get_compounds('C1=CC2=C(C3=C(C=CC=N3)C=C2)N=C1', 'smiles')
[Compound(1318)]
2D and 3D
默认情况下,化合物以2D返回。否则要使用record _ type关键字参数指定:
pcp.get_compounds('Aspirin', 'name', record_type='3d')
get_substances()
>>> results = pcp.get_substances('Coumarin 343', 'name')
>>> print results
[Substance(24864499), Substance(85084977), Substance(126686397), Substance(143491255), Substance(152243230), Substance(162092514), Substance(162189467), Substance(186021999), Substance(206257050)]
也可以从SID查询:
>>> substance = pcp.Substance.from_sid(223766453)
>>> print substance.synonyms
['2-(Acetyloxy)-benzoic acid', '2-(acetyloxy)benzoic acid', '2-acetoxy benzoic acid', '2-acetoxy-benzoic acid', '2-acetoxybenzoic acid', '2-acetyloxybenzoic acid', 'BSYNRYMUTXBXSQ-UHFFFAOYSA-N', 'acetoxybenzoic acid', 'acetyl salicylic acid', 'acetyl-salicylic acid', 'acetylsalicylic acid', 'aspirin', 'o-acetoxybenzoic acid']
>>> print substance.source_id
BSYNRYMUTXBXSQ-UHFFFAOYSA-N
>>> print substance.standardized_cid
2244
>>> print substance.standardized_compound
Compound(2244)
get_properties
get _ properties函数允许检索特定的属性,而不必处理整个复合记录。这对于一次性检索大量化合物的性质尤其有用:
p = pcp.get_properties('IsomericSMILES', 'CC', 'smiles', searchtype='superstructure')
多个属性可以在列表中指定,也可以在逗号分隔的字符串中指定。可用的属性有:
MolecularFormula、MolecularWeight、CanonicalSMILES、IsomericSMILES、InChI、InChIKey、IUPACName、XLogP、ExactMass、MonoisotopicMass、TPSA、Complexity、Charge、HBondDonorCount、HBondAcceptorCount、RotatableBondCount、HeavyAtomCount、IsotopeAtomCount、AtomStereoCount、DefinedAtomStereoCount、UnfinedAtomStereoCount、BondStereoCount、DefinedBondStereoCount、UnfinedBondStereoCount、CopriceUnitCount、Volume3D、XStericQuadrupoleCount3Dor、YSterQuadpoleCount3。
get_synonyms
得到synonyms list:
pcp.get_synonyms('Aspirin', 'name')
pcp.get_synonyms('Aspirin', 'name', 'substance')
返回DataFram
df1 = pcp.get_compounds('C20H41Br', 'formula', as_dataframe=True)
df2 = pcp.get_substances([1, 2, 3, 4], as_dataframe=True)
df3 = pcp.get_properties(['isomeric_smiles', 'xlogp', 'rotatable_bond_count'], 'C20H41Br', 'formula', as_dataframe=True)
可选地指定所需的列:
cs = pcp.get_compounds('C20H41Br', 'formula')
df4 = pcp.compounds_to_frame(cs, properties=['isomeric_smiles', 'xlogp', 'rotatable_bond_count'])
Download
下载功能是为了将文件保存到磁盘。可提供以下格式:XML、ASNT / B、JSON、SDF、CSV、PNG、TXT。注意并非所有的格式都适用于所有类型的信息。SDF和PNG仅适用于完整的Compound和Substance记录,而CSV最适用于属性和标识符表。
pcp.download('PNG', 'asp.png', 'Aspirin', 'name')
pcp.download('CSV', 's.csv', [1,2,3], operation='property/CanonicalSMILES,IsomericSMILES')