济南的网站制作公司免费发seo外链平台
这种方法只能解决非常简单的转换,更难的SMILES之间应该是无法直接转换,我可能很多人都使用神经网络解决 ,暂时还没仔细看,后面再仔细看吧...
简单的转换:
import urllib.error
import urllib.parse
import urllib.requestSMILES_URL_TEMPLATE = 'http://cactus.nci.nih.gov/chemical/structure/{}/smiles'
IUPAC_URL_TEMPLATE = 'http://cactus.nci.nih.gov/chemical/structure/{}/iupac_name'def retrieve(url):with urllib.request.urlopen(url) as f:return f.read()def iupac2smiles(iupac):quoted_iupac = urllib.parse.quote(iupac)smiles_url = SMILES_URL_TEMPLATE.format(quoted_iupac)return retrieve(smiles_url).decode('utf-8')def smiles2iupac(smiles):quoted_smiles = urllib.parse.quote(smiles)iupac_url = IUPAC_URL_TEMPLATE.format(quoted_smiles)return retrieve(iupac_url).decode('utf-8')convert = None
src = None
dst = None
# iupac2smiles/smiles2iupac
change_direction = 'smiles2iupac'
if change_direction == 'iupac2smiles':convert = iupac2smilessrc = 'iupac'dst = 'smiles'
elif change_direction == 'smiles2iupac':convert = smiles2iupacsrc = 'smiles'dst = 'iupac'try:# 输入的化合物名称input_compound_name = "CCCC"output_compound_name = convert(input_compound_name)# 输出转换后的化合物名称print(output_compound_name)except urllib.error.HTTPError as e:print('[{src}] {original}\n: error {error}'.format(src=src, original=input_compound_name, error=e.code))
复杂的转换:
STOUT: SMILES to IUPAC names using neural machine translation:STOUT: SMILES to IUPAC names using neural machine translation | Journal of Cheminformatics | Full Text
Transformer-Based Molecular Generative Model for Antiviral Drug Design....