rama energy term and explicit zero

Member Site Forums Rosetta 3 Rosetta 3 – General rama energy term and explicit zero

Viewing 2 reply threads
  • Author
    Posts
    • #2353
      Anonymous

        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[j] = evaluate(p, x, y[j])

        plt.imshow(values);

        plt.colorbar();

        plt.axis(‘equal’)

        plt.show()

        Thank you in advance.

      • #11385
        Anonymous

          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.

        • #11386
          Anonymous

            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.

        Viewing 2 reply threads
        • You must be logged in to reply to this topic.