我正在处理.smiles文件。 .smiles文件的文件结构是:http://en.wikipedia.org/wiki/Chemical_file_format#SMILES
我想从微笑文件中获取所有原子。这意味着如果存在单个“C”原子,则意味着将有4个“H”原子连接到它们。
我在搜索时发现python中有一些模块可以解析微笑格式,但它们不能提供支持的氢原子。 (例如:它们只给'C'而不是其他4'H'原子连接到'C'原子)
如何使用python找到所有原子,包括连接的'H'原子 smiles文件的示例,需要转换为包含连接的'H'原子的所有原子:
[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]
提前谢谢。
答案 0 :(得分:6)
请参阅Open Babel。
Open Babel网站上的有用链接
另见,
This blog(由Casper Steinmann撰写)关于化学与Python(使用Open Babel,但不是全部)
<强>更新强> 请参阅此代码(未经测试):
mymol = pybel.readstring("smi",
"[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)" + \
"N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H")
print mymol.addh()
答案 1 :(得分:3)
我想从smiles文件中获取所有原子。这意味着如果存在单个“C”原子,则意味着将有4个“H”原子连接到它们。 这个假设不正确,可能是1,2,3氢。
尝试使用openbabel,CDK或类似的cheminformatics库。
但是,为什么你需要文件中的所有原子?
答案 2 :(得分:3)
对于化合物的分子量,以SMILES给出,Openbabel的Python绑定应该有效:
import pybel
mol = pybel.readfile("smi", "stuff.smi").next()
print mol.molwt
答案 3 :(得分:2)
尝试frowns,这是一个面向化学相关算法快速开发的化学信息学工具包。它几乎用100%的Python编写,其中一小部分用C ++编写。
答案 4 :(得分:0)
RDKIT是python中定义明确的化学信息库。
从微笑中读取分子,
from rdkit import Chem
m = Chem.MolFromSmiles('[H]OC([H])([H])[C@@]1([H])C([H])=C([H])[C@@]([H])(n2c([H])nc3c(nc(nc23)N([H])[H])N([H])C2([H])C([H])([H])C2([H])[H])C1([H])[H]')
在您将微笑读入RDKIT分子后,您几乎可以做任何事情。查看文档以获取更多信息。