From: Ashar Malik (
Date: Tue Mar 21 2023 - 15:50:07 CDT

It will make the problem way simpler if you keep one protein chain as
reference and just translate the whole system so that the reference
protein’s centre is at the origin.

Then measure the movement of others relative to this.

To get the angle of rotation just use a vector. Take one point (any
non-zero point) connect it to origin. Now you have two points and hence a
vector. After that - apply the transformation matrix to this vector to get
the new vector. Now you have two vectors and now you can just use basic
math to work out the angle between them.

Remember to calculate a new transformation matrix after the translation of
the reference chain’s centre to the origin. This transformation matrix has
to be applied to the vector to get the second vector.

Also note that after you have translated the system - the vector part will
give you one solid 3D angle. Depending on your system - this doesn’t have
to be ‘about an axis’. You can use the 3x3 matrix now to work out using
inverse trigonometry the roll, pitch and yaw angles.

You can also look into the principal axes package in VMD and use those unit
vectors instead of working out your own vectors. But even with that you
will still have to use the vector commands in VMD.

Hope this helps.

On Wed, 22 Mar 2023 at 4:38 AM, Sangita Kachhap <> wrote:

> Hi,
> I have MD trajectories of a protein system having 4 chains, and I have to
> calculate the rotation angle and axis of each chain.
> Through VMD, I have calculated a transformation (4X4) matrix, having 3X3
> rotation matrix and 1 translation matrix. But, I have no idea how to get
> rotation angle and axis from transformation matrix
> It would be great if anyone could help me.
> ---
> Sangita