从smiles文件中获取所有分子
我正在处理.smiles文件。这种文件的结构可以在这个链接找到:http://en.wikipedia.org/wiki/Chemical_file_format#SMILES
我想从.smiles文件中提取出所有的原子。这意味着如果有一个单独的'C'原子,那么它会有4个'H'原子和它连接在一起。
我在搜索时发现,Python中有一些模块可以解析.smiles格式,但它们并不能提供支持的氢原子。(比如:它们只给出'C',而不包括与这个'C'原子连接的其他4个'H'原子)
我该如何使用Python找到所有的原子,包括连接的'H'原子呢?
这是一个需要转换成所有原子(包括连接的'H'原子)的.smiles文件示例:
[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]
提前谢谢你。
5 个回答
3
要计算一个化合物的分子量,如果你有它的SMILES表示法,可以使用Openbabel的Python接口来实现:
import pybel
mol = pybel.readfile("smi", "stuff.smi").next()
print mol.molwt
3
我想从smiles文件中获取所有的原子。这意味着如果有一个单独的'C'原子,那么就会有4个'H'原子和它连接在一起。这个想法是不对的,实际上可能只有1、2或3个氢原子。
可以试试openbabel、CDK或者类似的化学信息学库。
不过,你为什么需要从文件中获取所有的原子呢?
6
查看 Open Babel。
Open Babel网站上的有用链接:
- "指南"
- 功能
- 在Open Babel中使用Python
- 其他工具,包括一个工具 (obprop)
另见,
这个博客(由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()