Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python计算分子中原子的化合价_Python_Modeling - Fatal编程技术网

用python计算分子中原子的化合价

用python计算分子中原子的化合价,python,modeling,Python,Modeling,indigo模块的文档可以在这里找到 因此,例如,如果我有一个用于某些微笑字符串的分子对象,例如,“[C](=[O])”,我希望计算每个原子的价,例如这里所需的输出将是[atom=C,unbound_electrons=2],[atom=O,valency=0] 如果我考虑原子 [c] 有人能解释一下为什么这个代码是打印的[atom=C,unbound\u electronics=0]而不是[atom=C,unbound\u electronics=4] from indigo import

indigo模块的文档可以在这里找到

因此,例如,如果我有一个用于某些微笑字符串的分子对象,例如,
“[C](=[O])”
,我希望计算每个原子的价,例如这里所需的输出将是
[atom=C,unbound_electrons=2],[atom=O,valency=0]

如果我考虑原子<代码> [c] 有人能解释一下为什么这个代码是打印的

[atom=C,unbound\u electronics=0]
而不是
[atom=C,unbound\u electronics=4]

from indigo import *
indigo = Indigo()

mol=indigo.loadMolecule("[C]")

print(mol.grossFormula(),"\n")

for atom in mol.iterateAtoms():
        print([atom.symbol(),atom.radicalElectrons()])
编辑:如果我能生成原子上的键类型列表,并与
atom.atomicNumber()
结合起来,我就可以计算出来。例如,如果我可以说,
[C]
有一个双键,我可以认为它的原子序数是-2(第二个壳层)-2(双键)

编辑#2:这可能有助于形象化我所说的内容

from indigo_renderer import *
renderer = IndigoRenderer(indigo)
renderer.renderToFile(mol,"mol.png")

编辑#3:我不是化学家,所以可能有些概念弄错了

打印出来的是什么?@Jim:我已经更新了,包括我认为这不是python问题。你试过其他分子吗?也许你的格式是错误的,或者不是你真正想要的。它在某些时候起作用,例如“[O](=[C]([C]([H])([H])([H])([O])”起作用,但是“[C]([H])”不起作用。碳有4个价电子,所以我认为它给了你未束缚的价电子。因此,
[C]([H])
应该给出碳有3个未结合的价电子,而氢没有。