使用 rdkit 或其他 python 模块将 SMILES 转换为化学名称或 IUPAC 名称
Converting SMILES to chemical name or IUPAC name using rdkit or other python module
有没有办法使用 RDKit 或其他 python 模块将 SMILES 转换为化学名称或 IUPAC 名称?
我在其他帖子中找不到非常有用的东西。
非常感谢!
据我所知,使用 rdkit 是不可能的,而且我不知道有任何 python 模块具有这种能力。如果您可以使用 Web 服务,则可以使用 NCI resolver.
这是从 SMILES 字符串中检索 IUPAC 标识符的函数的简单实现:
import requests
CACTUS = "https://cactus.nci.nih.gov/chemical/structure/{0}/{1}"
def smiles_to_iupac(smiles):
rep = "iupac_name"
url = CACTUS.format(smiles, rep)
response = requests.get(url)
response.raise_for_status()
return response.text
print(smiles_to_iupac('c1ccccc1'))
print(smiles_to_iupac('CC(=O)OC1=CC=CC=C1C(=O)O'))
[Out]:
BENZENE
2-acetyloxybenzoic acid
你可以很容易地扩展它来转换多种不同的格式,虽然这个功能不是很快...
另一个解决方案是使用 PubChem。您可以将 API 与 python 包 pubchempy 一起使用。请记住,这可能 return 多种化合物。
import pubchempy
# Use the SMILES you provided
smiles = 'O=C(NCc1ccc(C(F)(F)F)cc1)[C@@H]1Cc2[nH]cnc2CN1Cc1ccc([N+](=O)[O-])cc1'
compounds = pubchempy.get_compounds(smiles, namespace='smiles')
match = compounds[0]
print(match.iupac_name)
[Out]:
(6S)-5-[(4-nitrophenyl)methyl]-N-[[4-(trifluoromethyl)phenyl]methyl]-3,4,6,7-tetrahydroimidazo[4,5-c]pyridine-6-carboxamide
最近我使用 pubchempy 管理了这个转换。这是尝试的代码。
filename = open("inif.txt", "r")
for line in filename :
event = line
compounds = pcp.get_compounds(event, namespace='smiles')
match = compounds[0]
print(i,'$$$','the CID is',compounds,'$$$','The IUPAC name is',match.iupac_name,'$$$','for the SMILE',event)
i+=1```
有没有办法使用 RDKit 或其他 python 模块将 SMILES 转换为化学名称或 IUPAC 名称?
我在其他帖子中找不到非常有用的东西。
非常感谢!
据我所知,使用 rdkit 是不可能的,而且我不知道有任何 python 模块具有这种能力。如果您可以使用 Web 服务,则可以使用 NCI resolver.
这是从 SMILES 字符串中检索 IUPAC 标识符的函数的简单实现:
import requests
CACTUS = "https://cactus.nci.nih.gov/chemical/structure/{0}/{1}"
def smiles_to_iupac(smiles):
rep = "iupac_name"
url = CACTUS.format(smiles, rep)
response = requests.get(url)
response.raise_for_status()
return response.text
print(smiles_to_iupac('c1ccccc1'))
print(smiles_to_iupac('CC(=O)OC1=CC=CC=C1C(=O)O'))
[Out]:
BENZENE
2-acetyloxybenzoic acid
你可以很容易地扩展它来转换多种不同的格式,虽然这个功能不是很快...
另一个解决方案是使用 PubChem。您可以将 API 与 python 包 pubchempy 一起使用。请记住,这可能 return 多种化合物。
import pubchempy
# Use the SMILES you provided
smiles = 'O=C(NCc1ccc(C(F)(F)F)cc1)[C@@H]1Cc2[nH]cnc2CN1Cc1ccc([N+](=O)[O-])cc1'
compounds = pubchempy.get_compounds(smiles, namespace='smiles')
match = compounds[0]
print(match.iupac_name)
[Out]:
(6S)-5-[(4-nitrophenyl)methyl]-N-[[4-(trifluoromethyl)phenyl]methyl]-3,4,6,7-tetrahydroimidazo[4,5-c]pyridine-6-carboxamide
最近我使用 pubchempy 管理了这个转换。这是尝试的代码。
filename = open("inif.txt", "r")
for line in filename :
event = line
compounds = pcp.get_compounds(event, namespace='smiles')
match = compounds[0]
print(i,'$$$','the CID is',compounds,'$$$','The IUPAC name is',match.iupac_name,'$$$','for the SMILE',event)
i+=1```