You are here

How does Rosetta select atom pairs for Lennard Jones Potential calculations?

5 posts / 0 new
Last post
How does Rosetta select atom pairs for Lennard Jones Potential calculations?


I am a new user for Rosetta and I am now trying to figure out how exactly PyRosetta is making the atom pair selection for scoring function calculations in general. For example, when we calculate pair-potential we will not include those bonded atom pairs and we also do not consider those who are two chemical bonds away. I wonder what is the selection rule for Rosetta? And where I could find the source code in the Rosetta folder?


Many thanks.


Post Situation: 
Thu, 2015-10-29 08:04

This is all going to live somewhere under Rosetta/src/core/scoring.  This is some of the most optimized, and therefore most complex to read, code.  The Rosetta3 Methods in Enzymology review paper, section 4.6.2, describes how different EnergyMethod types determine what atom pairs get scored (not sorted by concrete type, but by the parent classes - LJ is in the etable so it's ContextIndependentTwoBody).  The right place to start tracing code is probably src/core/scoring/, function operator().  You're probably better off looking through Andrew Leaver-Fay's papers than reading the code itself (certainly do at least read the papers first.)

Fri, 2015-10-30 10:42

Specifically, it's the CountPair functions (in Rosetta/src/core/scoring/etable/count_pair/) which determine which atoms are included/excluded in LJ calculations. The determination of which CountPair function is used is encoded in Rosetta/src/core/scoring/etable/BaseEtableEnergy.*  There's a bit of complicated logic in the determine_crossover_behavior() function, which more-or-less boils down to 1-3 exclusion for most things (e.g. disulfides), but 1-4 across the peptide bond. 

Much of the details of exclusion behavior in LJ is esoteric, though, as stadard Rosetta does not really use intra-residue LJ. The internal energy of residues is based off of statistical potentials, and LJ is used just for residue-residue interactions, most of which are non-covalent. (That's not entirely true, as fa_intra_rep is sometimes turned on at *small* levels, but the small weight means it's normally negligible, anyway.)

Sat, 2015-10-31 09:16



Thanks so much for your response, yet I am still confused about the terminology between Rosetta and PyRosetta. are all scoring function names conserved from Rosetta to PyRosetta? For example, I was trying to search for "fa_intra_rep" in Rosetta source folder but I did not find any function is calling this name. Do you have any idea where I can find the precise definition of fa_intra_rep or its corresponded equivalence in Rosetta source files?

Many thanks again.



Mon, 2015-11-02 19:46

fa_intra_rep is the label for a weight for a term in the scorefunction.  It's a function in the math sense but not the programming sense.  fa_intra_rep is managed by a collection of code referred to as the "Etable" (because histortically it was calculated by table lookups instead of directly, for speed reasons) - this is the location Rocco referred to you above.

Tue, 2015-11-03 09:17