Method: Bio::PDB::Utils.dihedral_angle

Defined in:
lib/bio/db/pdb/utils.rb

.dihedral_angle(coord1, coord2, coord3, coord4) ⇒ Object

Calculates dihedral angle.



124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/bio/db/pdb/utils.rb', line 124

def dihedral_angle(coord1, coord2, coord3, coord4)
  (a1,b1,c1,d) = calculatePlane(coord1,coord2,coord3)
  (a2,b2,c2)   = calculatePlane(coord2,coord3,coord4)
  
  torsion = acos((a1*a2 + b1*b2 + c1*c2)/(Math.sqrt(a1**2 + b1**2 + c1**2) * Math.sqrt(a2**2 + b2**2 + c2**2)))
  
  if ((a1*coord4.x + b1*coord4.y + c1*coord4.z + d) < 0)
    -torsion
  else
    torsion
  end
end