Approximating CHARMM energy by the rosetta scoring function

Member Site Forums PyRosetta PyRosetta – General Approximating CHARMM energy by the rosetta scoring function

Viewing 2 reply threads
  • Author
    • #1927

        Is it possible to approxmate the CHARMM energy (function) by the rosetta scoring function?

        As a starting point I could work with fixed angles and bond lengths, so I guess setting the weghts for fa_atr, fa_rep and fa_elec to 1 and all the rest to zero is a good start. But is it possible to somehow load the CHARMM diheral parameters?

        Thank you for your help,

        Ajasja Ljubetič

      • #10116

          There are a number of “MM” energy terms which are based in large part on the CHARMM parameters (mm_lj_intra_rep, mm_lj_intra_atr, mm_lj_inter_rep, mm_lj_inter_atr, mm_twist, mm_bend, mm_stretch). These were added for non-canonical amino acids where there isn’t the statistical potential information that Rosetta typically uses in place of CHARMM’s internal geometric parameters. mm_twist would be the term for dihedral angles.

          Keep in mind, though, that all these terms (and things like fa_atr etc.), while often based off of CHARMM parameters, aren’t necessarily identical to CHARMM’s versions. There’s likely to be slight differences which will change the values. Particularly, I wouldn’t count on a weight of 1 for all terms to necessarily give you a balanced scorefunction. You may want to take a look at the mm_std.wts for an example of usage of a MM-heavy scoreterm. The only statistical potentials there are the hydrogen bonding terms, and weights are quite variable.

          At the very least you’ll want to consider adding the fa_sol term in your putative scoring function, as Rosetta typically uses an implicit solvation model, as opposed to the explicit solvation that’s usually used with CHARMM. (Though fa_sol is based off of the EEF1 implicit solvation model of Lazaridus and Karplus that was first implemented in CHARMM.)

        • #10149

            “Take a look at various papers…”

            Thanks,  some great summer reading for me:)

          • #10119

              Thank you! I was looking only at fa_* in the tab completition. 

              Could you please explain what the role of database/chemical/mm_atom_type_sets/fa_standard/mm_torsion_params.txt vs database/scoring/score_functions/bondlength_bondangle/default-torsions.txtis? I guess the parameters under score_functions are used for the actual score function (mm_twist). But why are torsion parameters needed under mm_atom_type_sets? As far as I understand, the positions of missing atoms are inferred from the internal coordinates in the params file.

              (Please mentioon if I should start a new thread for the question below)

              (Py)Rosetta is really great (and at the same time a very large package). Perhaps there is a better way to do what I’m trying to achieve. In our lab we have developed a method for protein structure characterisation based on electron paramagnetic resonance (EPR) measurements. In essence the computation part of the method involves generating rotamers of the spin label and neighbouring side chains and checking if there is a steric clash. If there is a steric clash the probability of the spin-lable rotamer is reduced. (We assume that at high temperatures the entropy part is larger than the energy part of the Gibbs free energy).  From a set of spin label rotamers the orientations of the N-O paramagnetic centre can be determined and compared to experimental values.

              I’m hoping to use PyRosseta to:

              (1) determine if the method can be improved by introducing an energy scoring function to determine the probability of the spin label rotamers.

              (2) transition to a cleaner and more maintainable/extensible/faster code base than our in-house solution (we for example did not use AtomTrees etc..)

              So my main question would be: What is the best way to score a set of  Noncanonical Amino Acid side chain rotamers at a specific site in the protein using PyRosseta? Note that as the experiments are done in solution at room temperature, I need to score more than just the rotamers at the minima.

              I realize this is a broad and difficult question, but any suggestions are welcome.

              (Right now I’m thinking to just generate the rotamers randomly and keep scoring until I accumulate enough low energy rotamers of the spin label. But this brute force approach is probably not the most efficient.)

              Thank you for your help,




            • #10135

                Rosetta’s really built by combining a lot of smaller pieces, as opposed to trying to be a unified whole. The differences in the various ways of specifying bond torsions is part of that – different methods use different sources for the origin of the “ideal” torsions they use.

                You’re correct that when Rosetta rebuilds missing atoms, it uses the ICOOR records in the respective params files. But when the mm_* scoreterms are being used, it’s not those coordinates that are used, but the CHARMM-derived ones which are based off of the MM atom types which are specified in the ATOM records of the params files, and which are listed in the database/chemical/mm_atom_type_sets/fa_standard/mm_torsion_params.txt file. The torsions specified in database/scoring/score_functions/bondlength_bondangle/default-torsions.txt are used by the cart_bonded family of scoreterms, which is a different way of constraining bond lengths and angles. If you take a look at that file, you’ll see it’s based on a specific list of residues and atoms, as opposed to a more general parameterization based on MM atom types, as the mm_* scoreterms are. It’s different scoreterms for different intended usage.

                Typically the way we do what you’re describing is to pre-generate a library of residue conformers which are a reasonable low-energy sample in the absence of external context. We then place the given non-cannonical residues in the protein, and score the interactions with the protein. You can then calculate the energy (or probability) of the interaction based on the (pre-calculated) internal energy plus the interaction energy of the rotamer with the protein context. Take a look at various papers coming out of the Bonneau lab ( particularly ones with Renfrew and/or Drew, like and or even ) You may also want to take a look at the RosettaEPR papers coming out of the Meiler lab (, for an example of how people have handled a similar situation.

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