You are here

rama energy term and explicit zero

3 posts / 0 new
Last post
rama energy term and explicit zero
#1

Hello everyone!

I constructed phi/psi plot using only rama energy term and noticed a strange thing (attached file). In a place where the angle accepts value 0 score function gives minimum value. Example with alanine chain:

pose1.set_phi(4, 10);

core::Real t(0.0);
pose1.set_psi(4, t);
(*scorefx)( pose1 );
std::cout << std::scientific << t << '\t' << pose1.energies().total_energy() << std::endl;
    
t = std::numeric_limits<double>::min();
pose1.set_psi(4, t);
(*scorefx)( pose1 );
std::cout << std::scientific << t << '\t' << pose1.energies().total_energy() << std::endl;

This code gives:
0.000000e+00    5.435180e+00
2.225074e-308    1.424486e+01

Is it actually correct? As I know some others energy terms do not react to explicit zero in such way.

Python code to reproduce picture:

from rosetta import *
import matplotlib.pyplot as plt
import numpy as np

rosetta.init()

scorefxn = ScoreFunction()
scorefxn.set_weight(rama, 1)
 
p=Pose()
make_pose_from_sequence(p, "AAAAAAAAAA","fa_standard")

def evaluate(p, a, b):
    p.set_phi(4, a)
    p.set_psi(4, b)
    scorefxn(p)
    return p.energies().total_energy()

for i in range(1,p.total_residue()):
    p.set_phi(i, -135.0)
    p.set_psi(i, 135.0)
    p.set_omega(i, 180.0)
p.dump_pdb("init.pdb")
x = np.arange(-180.0, 180.0, 2.5)
y = np.arange(-180.0, 180.0, 2.5)
values = np.zeros(shape=(len(x),len(y)))
for i in range(len(x)):
    for j in range(len(y)):
        values[i][j] = evaluate(p, x[i], y[j])
plt.imshow(values);
plt.colorbar();
plt.axis('equal')
plt.show()

Thank you in advance.

AttachmentSize
rama_phi_psi.png136 KB
Category: 
Post Situation: 
Sat, 2015-12-19 05:25
SergeyP

Older versions of the ramachandran term are known to behave poorly in uninhabited regions of the plot and near boundaries - this is certainly true for the rama that's in score12. You're probably hitting one of those boundary issues. Rama is not a function in the traditional sense, it's a table lookup with some sort of smoothing or interpolation between the points actually in the table, so points that are close in "rama space" may be in different bins.

I know that development of replacement terms has been underway for a while; I'm not sure which terms are in Talaris13 and Talaris14. Roland Dunbrack has given several fantastic presentations showing the wacky stuff our rama/dunbrack/p_aa_pp terms do near boundaries (which is what motivated getting them fixed; his lab has been participating). I think you've rediscovered this problem.

Sat, 2015-12-19 09:00
smlewis

As it is presented in weight files both Talaris13 and Talaris14 are calibrated with rama/fa_dun/p_aa_pp terms. As far as I know using such terms is a main feature of the Rosetta force-field. Anyway it is hard to imagine where I can encounter explicit assignment of zero during calculations. Thank you for your explanation.

Sun, 2015-12-20 01:44
SergeyP