You are here

ddg dG_separate

6 posts / 0 new
Last post
ddg dG_separate

What exactly does the filter ddg compute? Does it compute the difference in binding energy from the sequence of the given pose to a mutant? What mutant (perhaps poly alanine)?

I ask because it is somehow different from a binding score (complex minus separated chians), but I'm not sure how.

I would like to get the binding energy, but there doesn't seem a way to be a score function that I can filter on and keep the same pose and apply movers to it etc. I have found the InterfaceAnalyzer dG_seperated/dSASAx100 metric to be useful, but I can only get at that though the scorefile that is output at the end of a RosettaScripts protocol. I tried using the translate mover, but it randomly samples possible translations vs. separating the chains. The mover RigidBodyMover that FlexPepDock and InterfaceAnalyzer use to separate the chains isn't in the RosettaScripts mover (yet).

I want to do this in RosettaScripts:

protocols.moves.RigidBodyMover: (0) Translate: Jump (before): RT 0.113101 -0.238836 -0.964451 -0.422069 0.867197 -0.264249 0.899481 0.436951 -0.00272414 -0.322002 -5.38537 -4.66188
protocols.moves.RigidBodyMover: (0) Translate: Jump (after): RT 0.113101 -0.238836 -0.964451 -0.422069 0.867197 -0.264249 0.899481 0.436951 -0.00272414 326.188 -424.372 842.593

Post Situation: 
Wed, 2012-08-22 11:25

DdgFilter (protocols/simple_filters/ computes a ddG of binding, not of mutation. It has a lot of options, so I can't tell you precisely what it does without knowing how it's set up in your case (and to be honest, not even then, since it's not my code).

If you are not using the repack option, it performs the same separation operation (add 1000 angstroms to the length of the rigid-body transform jump crossing the interface) and score calculation that InterfaceAnalyzer uses to calculate dG_separated.

If you are comfortable writing Rosetta code, it would be not-too-hard to make a new filter that calculates dG_separated/dSASAx100 directly, and simpler still to write a filter that would just call InterfaceAnalyzerMover and query it directly for dG_separated/dSASAx100. Honestly, the best option would probably be to just gut a Filter you aren't using and replace its apply() function with code like:

protocols::analysis::InterfaceAnalyzerMover(/*be careful to set up with desired settings/*) my_IAM;
core::pose::Pose const copy_pose(pose); //necessary to copy b/c of const restriction in Filter::apply()
if(my_IAM.get_separated_interface_energy_ratio() > my_threshold) {return false;}
return true;

If you can name a Filter class you aren't going to use (assuming 3.4) I may be able to perform this conversion for you if that code snippet isn't enough to get you there. It's a lot more effort to set it up to be its own proper Filter with options and bells and whistles and factory-load-time-registrators so I am willing to guide that effort but not just do it.

It would also be possible to convert RigidBodyTransMover to the factory-load-time-registration system that makes it work with RosettaScripts (probably hard for a novice).

Wed, 2012-08-22 12:23

It looks like someone (Andrew) has already put functionality like this into the trunk version of Rosetta as InterfaceBindingEnergyDensityFilter, which takes a ddG filter and a sasa filter and computes the ratio of them.

Of course, this being in trunk won't help gw until 3.5 is released, although depending on what Andrew thinks we might be able to provide him with a pre-release patch. (Steven, would you be willing to ask Andrew about it?)

Fri, 2012-08-24 09:02

You are right, ddg is the same as IA if the packing options are the same.

With packing:
Ddg name=ddgF confidence=0 repack=0/
InterfaceAnalyzerMover name=ia scorefxn=score12 packstat=0 pack_input=0 pack_separated=0 tracer=0 use_jobname=0 resfile=0/

Or without packing:
Ddg name=ddgF confidence=0 repack=1/
InterfaceAnalyzerMover name=ia scorefxn=score12 packstat=0 pack_input=1 pack_separated=1 tracer=0 use_jobname=0 resfile=0/

Actually in the latter case the scores are a slightly different (5.018 vs 5.180), but that's because the above settings define the interface differently. Ddg built 49 rotamers at 7 positions whereas IA built 140 rotamers at 20 positions.

I think I will be able to get by with using the ddg filter for a while longer, since I can just divide by the sasa and reproduce the dG_separated/dSASAx100 metric. If I output enough structures then I can just analyze the scores with some awk and sort magic. Eventually (in several months) it might be worth it to write something and so I may take you up on your generous offer at a later date :)

Sun, 2012-08-26 15:44

Andrew authorized me to forward-port the existing InterfaceBindingEnergyDensityFilter from trunk for you, I just haven't gotten around to it yet. Cross your fingers for Monday.

Sun, 2012-08-26 17:25

A code patch to create InterfaceBindingEnergyDensityFilter is attached. You ought to be able to apply it with "patch -p0 < patch.txt" from the rosetta_source folder (but make sure it's a "spare copy" of rosetta in case it doesn't apply cleanly).

Mon, 2012-08-27 14:59