You are here

What is the meaning of "JUMP" in rigid.RigidBodyTransMover(pose,JUMP)?

2 posts / 0 new
Last post
What is the meaning of "JUMP" in rigid.RigidBodyTransMover(pose,JUMP)?


There is a unbind function:

def unbind(pose, partners):
    STEP_SIZE = 100
    JUMP = 2
    docking.setup_foldtree(pose, partners, Vector1([-1,-1,-1]))
    trans_mover = rigid.RigidBodyTransMover(pose,JUMP)

The system is a three-chain complex, and partners is "HL_A", meaning separating chain H&L from chain A.

If I have a two-chain complex, e.g. partners is "L_R", what should be the value of JUMP?

Post Situation: 
Sat, 2023-10-28 09:49

To really understand jumps, you have to understand the FoldTree. Basically, the FoldTree is how Rosetta figures out how to translate between internal coordinates (bond lengths, angles and dihedrals) and Cartesian coordinates (xyz positions). That is, if you alter one, how does the other change. For example, if you rotate a backbone dihedral, all the residues "downstream" of the dihedral should rotate - the FoldTree is what controls what is considered "downstream".

A "jump" is the bit of the FoldTree which controls through-space (non-bonded) connections. The obvious use cases are multiple chains, but there's other places where it can be used. With jumps there's the concept of an upstream and downstream connection: everything "downstream" of the jump moves when the jump is changed, whereas everything upstream stays fixed.

So the JUMP here is the number of the FoldTree jump which controls what is moving for the RigidBodyTransMover. The setup_foldtree() function sets up the FoldTree based on the "partners" designation, such that everything to the left of the underscore is "upstream" of a single jump, and everything to the right of the underscore is "downstream".

But which jump that is depends on your Pose. Typically, there's one jump for each chain (except the first). So if you use partners="HL_A", jump #1 will be between the H and L chains, and jump #2 will connect the A chain to the HL complex. So if you want to move just the A chain, you'll use jump #2. For partners="L_R", jump #1 will be connecting the downstream chain R to the upstream chain L, and so you probably want to use JUMP=1.

I say "probably", because there's a chance there might be an internal jump within chains (e.g. if you have a disconnected loop), or you may have a "virtual root" which puts an extra jump to the first chain in the Pose. I think docking.setup_foldtree() should avoid that in most cases, but once you get to more complicated situations you may need to be careful. It's not necessarily the most intuitive layout, but you may be able to use the apply() function of protocols.simple_filters.PoseInfoFilter to help you figure out which jump is connected to which residues.



Mon, 2023-10-30 08:43