Skip to content

Conversation

@anupam-banerjee
Copy link
Contributor

Constrained Anisotropic Network Model (cANM)
A ProDy-compatible extension of the legacy ANM that incorporates higher-order geometric constraints for more physically realistic protein normal-mode analysis.
This package adds several structural terms to the Hessian beyond pairwise distance springs, enabling more accurate modeling of protein flexibility:

  1. Pairwise ENM/ANM springs
  2. 3-body bond-angle constraints
  3. 4-body torsional/dihedral constraints
  4. Backbone curvature term

The result is an ANM-like model whose dynamics better reflect local geometry and backbone behavior, while remaining easy to use within the existing ProDy workflow.

It provides:
cANM — a drop-in subclass of ProDy’s ANM
calcCANM(...) — convenience function analogous to calcANM, supporting PDB strings, objects, or raw arrays

This implementation uses dense NumPy arrays (no sparse support).

@AnthonyBogetti
Copy link
Member

Hi @anupam-banerjee, can you comment here with a minimal amount of code to run this new addition to ProDy? Just something that if you were to run it, would expect it to work 100% assuming the code is working as intended.

@anupam-banerjee
Copy link
Contributor Author

@AnthonyBogetti can you please try the following-

from prody import *
import matplotlib.pyplot as plt

pr = parsePDB('input.pdb', subset='ca')

canm = cANM('constrained')
canm.buildHessian(pr, cutoff=15.0, gamma=1.0, k_theta=10, k_phi=1.0, kappa=20)

canm.calcModes(n_modes='all')

resnums = pr.getResnums()
y = calcSqFlucts(canm[3:])
x = resnums
plt.plot(x,y)
plt.xlim(x.min(), x.max())
plt.xlabel('Mode Index')
plt.ylabel('Mean Square Fluctuation')

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants