def angles(xyz): angleLabel = [] angle = [] atomLabel = op.atom_label(xyz[0]) xCoord = xyz[1] yCoord = xyz[2] zCoord = xyz[3] for i in range(0,len(atomLabel)-1): for j in range(i, len(atomLabel)): for k in range(0, len(atomLabel)): if i is j: continue elif i is k: continue elif j is k: continue else: ex_ki = float(xCoord[k]) - float(xCoord[i]) ex_kj = float(xCoord[k]) - float(xCoord[j]) ey_ki = float(yCoord[k]) - float(yCoord[i]) ey_kj = float(yCoord[k]) - float(yCoord[j]) ez_ki = float(zCoord[k]) - float(zCoord[i]) ez_kj = float(zCoord[k]) - float(zCoord[j]) rki = math.sqrt(ex_ki**2.0 + ey_ki**2.0 + ez_ki **2.0) rkj = math.sqrt(ex_kj**2.0 + ey_kj**2.0 + ez_kj **2.0) ex_ki = ex_ki/rki ey_ki = ey_ki/rki ez_ki = ez_ki/rki ex_kj = ex_kj/rkj ey_kj = ey_kj/rkj ez_kj = ez_kj/rkj angle.append(180.0/math.pi*math.acos(ex_ki*ex_kj + ey_ki*ey_kj + ez_ki*ez_kj)) angleLabel.append(atomLabel[i] + str(i+1) + "-" + atomLabel[k] + str(k+1) + "-" + atomLabel[j] + str(j+1)) return(angleLabel,angle)
def bonddistance(xyz): bondLabel = [] bondDistance = [] atomLabel = op.atom_label(xyz[0]) xCoord = xyz[1] yCoord = xyz[2] zCoord = xyz[3] for i in range(0,len(atomLabel)-1): for j in range(i,len(atomLabel)): if i is not j: bondLabel.append(atomLabel[i] + str(i+1) + "-" + atomLabel[j] + str(j+1)) bondDistance.append(math.sqrt((float(xCoord[i])-float(xCoord[j]))**2 + (float(yCoord[i])-float(yCoord[j]))**2 + (float(zCoord[i])-float(zCoord[j]))**2)) return(bondLabel,bondDistance)