I have written a script using PyRosetta (pyrosetta-4.0-py2.7 retrieved from github 2017-05-23) which:
- imports a PDB file containing a full antibody structure and antigen dimer separated by around 100A
- defines a custom fold tree with the Fc at the root and a jump edge connecting the Fc to the antigen
- creates ambiguous site constraints consistent with interaction of variable loops of the two Fab domains with the epitope of each antigen in the dimer
- defines a movemap with backbone and side-chain flexibility within the antibody linkers and allowing movement of the jump 'connecting' the Fc to the antigen
I then apply a minmover to the pose. I have confirmed that the ambiguous constraints and fold tree have been correctly applied to the pose and that a full atom scorefunction (talaris2014) and the movemap are being used by the minmover. Minimisation proceeds leading to a decrease in energy, however while there is rotation around the Fc-antigen jump, there is no minimisation of the length of the vector. In order to allow the antibody and antigen to approach each other, I have had to define two alternating fold trees with the jump edge connecting alternately to two sides of the antigen, so it moves gradually downwards by pivoting, a bit like a slinky toy.
In the workshop 7 tutorial (http://graylab.jhu.edu/pyrosetta/downloads/documentation/pyrosetta4_online_format/PyRosetta4_Workshop7_Docking.pdf), it says:
"The MinMover, which we have previously used to change torsion angles to find the nearest minimum in the score function, can also operate on the jump translation and rotation. It suffices to set the jump variable as moveable in the MoveMap"
However, I have never observed the translation of a jump to be altered. I have actually tried a lot of permutations of my problem, changing the fold tree, making all jumps movable, changing constraints, switching off different scoring terms, playing with pyrosetta.init() flags, directly using the AtomTreeMinimizer class, using both lbfgs_armijo_nonmonotone or dfpmin_armijo_nonmonotone, in case there was some obscure bug or unreported difficulty handling my input structure, but without any success, despite having no problems with (by way of rotation) formation of some kind of complex.
Is this expected behaviour that is not accurately described in workshop 7? Or unexpected behaviour that occurs from time to time?
Many thanks in advance for any suggestions.