Hi,
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.
Category:
Post Situation:
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 http://www.ncbi.nlm.nih.gov/pubmed/21187238, 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/ScoreFunction.cc, 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.)
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.)
Hi,
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.
Bo
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.