PRS matrix values more than 1
Vini161 opened this issue · 5 comments
As far as I can recall and cross reference in other papers, the maximum value of PRS matrix got from-
prs_mat, effectiveness, sensitivity = calcPerturbResponse(anm_I)
is set to be 1 also noticeable by its diagonal values.
However in one particular pdb file(among many) my values are more than 1, or is my understanding wrong regarding the normalisation ?
Hello, there’s an option about whether to apply this normalisation. Could it be that you have it set to false?
How are you making the pdb files?
Hi, I am taking the pdb from my trajectory, basically processing multiple pdb in the same trajectory using
import os
import numpy as np
from prody import parsePDB, ANM, calcPerturbResponse
pdb_directory = os.path.expanduser('~/directory/')
pdb_file = f'frame_1279.pdb'
pdb_path = os.path.join(pdb_directory, pdb_file)
I_ca = parsePDB(pdb_path, subset='ca')
anm_I = ANM('I d14')
anm_I.buildHessian(I_ca)
anm_I.calcModes('all')
print("frame","done")
prs_mat, effectiveness, sensitivity = calcPerturbResponse(anm_I)
this is a snapshot of prs_mat
[[1.00000000e+00 5.86600589e-01 9.56456953e-01 ... 4.25046038e+00
4.52116892e+00 6.61654694e+02]
[7.55844309e-01 1.00000000e+00 1.30669462e+00 ... 5.66741413e+00
5.91088229e+00 8.84143153e+02]
[4.83135937e-01 5.12257309e-01 1.00000000e+00 ... 3.59925931e+00
3.68084010e+00 5.64456665e+02]
...
[9.41511512e-02 9.74282178e-02 1.57833390e-01 ... 1.00000000e+00
8.10210638e-01 1.20628004e+02]
[3.84494298e-02 3.90123066e-02 6.19701015e-02 ... 3.11062350e-01
1.00000000e+00 5.12202134e+01]
[7.91813305e-04 8.21153092e-04 1.33726688e-03 ... 6.51703233e-03
7.20764870e-03 1.00000000e+00]]
Ok, you have a value of 1 at the diagonals, so the normalisation is working. It’s just that the normalisation doesn’t set the maximum value to 1, but rather just divides the rows by the diagonal. It could be that some values are higher than the diagonal so then they end up higher than 1.
You’re welcome