Exemplo n.º 1
0
    def calc_pucker(self):
        atom_pos = self.coords[self.pucker_idx]
        angles = tools.dihedral(atom_pos)
        angles = angles.reshape(-1,5)
        
        # calculate pseudorotation parameters
        x1 = angles[:,4]+angles[:,1]-angles[:,3]-angles[:,0]

        #Pconst = 2.0*(np.sin(np.pi/5.) + np.sin(np.pi/2.5))
        x2 = 3.0776835*angles[:,2]
        
        # phase
        p0 = np.arctan2(x1,x2)
        
        p0[np.where( p0 < 0.0 )] += 2.0*np.pi
        
        # amplitude
        tm = angles[:,2]/np.cos(p0)

        #print angles.shape,p0.shape,tm.shape
        angles = np.concatenate((angles,tm[:,np.newaxis]),axis=1)
        angles = np.concatenate((angles,p0[:,np.newaxis]),axis=1)

        return np.degrees(angles)
Exemplo n.º 2
0
# supone que las moléculas de H2O no están disociadas
#rmaxo = float(input("Distancia máxima O a Hg : "))
rmaxo = 2.53
out = tl.SM(NALA,MXYZ,rmaxo)
NAW = out[0]

if NAW < 1 :
    print(f"No se calcula dihedro, ya que se necesita almenos una molécula de H2O")
else :
    VR1 = out[1]
    VR = np.zeros((NAW,4))
    for i in range(NAW) :
        for j in range(4) :
            VR[i,j] = VR1[i,j]
    
    RHg1 = out[2]
    RHg = np.zeros((3))
    for i in range(3) :
        RHg[i] = RHg1[i]

# Función externa que calcula el angulo de torsión entre 2 planos,
# que son definidos por 2 puntos (Praxeolitic formule).
    out = tl.dihedral(NAW,VR,RHg)

NO = int(NAW/3)
d1 = out
dihedros = np.zeros((NO))
print (f"Cantidad de dihedros : ",NO)
for i in range(NO):
    dihedros[i] = d1[i]
    print(f"dihedro : ",dihedros[i])
Exemplo n.º 3
0
 def calc_j3(self):
     atom_pos = self.coords[self.j3_idx]
     angles = tools.dihedral(atom_pos)
     return np.degrees(angles)
Exemplo n.º 4
0
 def calc_bb_torsion(self):
     atom_pos_bb = self.coords[self.bb_idx]
     atom_pos_chi = self.coords[self.chi_idx]
     bb_angles = np.degrees(tools.dihedral(atom_pos_bb))
     chi_angles = np.degrees(tools.dihedral(atom_pos_chi))
     return bb_angles,chi_angles