我正在尝试创建一个显示碳原子连通性的代码(表示为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我现在想要采取所有这些距离,但只允许每个碳有最多四个债券(四个“单”,或两个“单”和一个“双”,或一个“单”和一个“三”),但不需要四个债券。
虽然我不知道如何去解决这个问题,但我想得到类似于这样的输出结果:
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语句来实现这个输出,但我很不确定如何为这个项目启动我的代码。任何帮助是极大的赞赏!