Overlaps and cumulative overlap between normal modes and a conformational change

Overlaps

The overlap metric is a measure of how well a given normal mode captures a given conformational change. The following code computes the overlaps between the first 10 normal modes computed by ENCoM on the closed state of the citrate synthase enzyme and the conformational change from closed to open:

from nrgten.encom import ENCoM
from nrgten.metrics import get_overlaps

closed_cs = ENCoM("closed_clean.pdb")
open_cs = ENCoM("open_clean.pdb", solve=False) # no need to solve the target
overlaps = get_overlaps(closed_cs, open_cs, 10)
print(overlaps)

When executed this prints:

[0.22349464198742516, 0.3799027474795493, 0.31226376941324435, 0.11926373811636343, 0.07141121329464464, 0.5434832619441955, 0.2850587863860328, 0.16140383753735463, 0.18518389540695462, 0.13542692494361588]

We can see that modes 2 and 6 have the best overlaps.

Cumulative overlap

It is also possible to compute the cumulative overlap from a given number of modes. This gives a number between 0 and 1 describing how well the best combination of the specified modes can describe the conformational change:

from nrgten.encom import ENCoM
from nrgten.metrics import cumulative_overlap

closed_cs = ENCoM("closed_clean.pdb")
open_cs = ENCoM("open_clean.pdb")
print("Cumulative overlap 10 modes, from closed to open: {}".format(cumulative_overlap(closed_cs, open_cs, 10)))
print("Cumulative overlap 10 modes, from open to closed: {}".format(cumulative_overlap(open_cs, closed_cs, 10)))

Which prints:

Cumulative overlap 10 modes, from closed to open: 0.8754571996622168
Cumulative overlap 10 modes, from open to closed: 0.8888323647003489

We can see that the first 10 normal modes computed by ENCoM capture both transitions between the closed and open states of citrate synthase very well.