Source code for pysisyphus.io.pubchem

import json
import urllib.request
from urllib.error import HTTPError

from pysisyphus.io.sdf import geom_from_sdf


[docs] def cid_from_name(name): url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/{name}/property/IUPACName/JSON" with urllib.request.urlopen(url) as handle: text = handle.read() json_ = json.loads(text) cid = json_["PropertyTable"]["Properties"][0]["CID"] return cid
[docs] def sdf_from_cid(cid): url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/{cid}/SDF?record_type=3d" with urllib.request.urlopen(url) as handle: sdf = handle.read().decode("utf-8") return sdf
[docs] def geom_from_pubchem_name(name, **kwargs): try: cid = cid_from_name(name) sdf = sdf_from_cid(cid) geom = geom_from_sdf(sdf, **kwargs) except HTTPError: geom = None return geom