我正在尝试创建一个显示碳原子连通性的代码(表示为3D坐标)
我的代码输入一个excel文件,其组织为:
carbon x_coord y_coord z_coord
1 1.08 0.49 0.523
2 0.18 1.3 0.5
3 0.83 0.72 0.44
使用
subset = cmd[['carbon','x_coord', 'y_coord','z_coord']]
coordinate_values = [tuple(x) for x in subset.values]
atoms = coordinate_values
atomPairs = itertools.combinations(atoms, 2)
我计算了每个组合对之间的距离,并按如下方式排序:
if d >= 1.4 and d < 1.6:
print("The bond is a single bond")
elif d >= 1.2 and d < 1.4:
print("The bond is a double bond")
elif d >= 1 and d < 1.2:
print("The bond is a triple bond")
else:
print("No bond exists")
获取输出(对于每对,只显示下面一个)
Computing distance between carbon_1 and carbon_1
The bond is a single bond
我现在想要采取所有这些距离,但只允许每个碳_具有最多四个键(四个&#34;单个&#34;,或两个&#34;单个&#34;和一个& #34; double&#34;,或者一个&#34; single&#34;和一个&#34; triple&#34;),但不需要四个债券。
虽然我不知道如何解决这个问题,但我希望得到类似于此的输出:
carbon_1 is bonded to
single bond to carbon_2
single bond to carbon_3
single bond to carbon_4
carbon_1 is bonded to
single bond to carbon_2
triple bond to carbon_5
carbon_2 is bonded to
single bond to carbon_1
triple bond to carbon_6
因为我所拥有的距离数量,我预计每个碳都有多种债券组合_
我的想法是做另一个if / elif语句来实现这个输出,但我不确定如何为这个项目启动我的代码。任何帮助是极大的赞赏!