I am trying to repack two residues in a protein using the following command line:
/Users/aroop/rosetta31/bin/fixbbSym.macosgccrelease -database /Users/aroop/rosetta31/rosetta_database/ -in:file:s 213N_215S.pdb -symmetry:symmetry_definition s769.sdef -symmetry:initialize_rigid_body_dofs -resfile s769_213N_215S.resfile -nstruct 100 -out:file:scorefile s769.score12 -packing:ex1 -packing:ex2 -packing:ex3 -packing:ex4 -packing:ex1aro -packing:ex2aro -packing:ex1aro_exposed -packing:ex2aro_exposed -packing:ex1:level 4 -packing:ex2:level 4 -packing:ex3:level 4 -packing:ex4:level 4
However, all of my 100 decoys have identical scores down to the the first two decimal places. Is there an obvious solution to ensure that the decoys are arrived at my different trajectories?
Is it just converging? If they're not totally identical then they're on different trajectories. I assume from your rotamer settings you aren't doing much design, so convergence is not terribly unlikely. (I also notice you aren't using ex_cutoff, which is often useful with lots of ex flags to get the extra rotamers for nonburied residues).
The only experience I've ever had with Rosetta duplicating trajectories is independent instances of Rosetta running off identical RNG seeds, and that produces bit-for-bit identical structures, not almost-the-same-score that you describe.
If you're using a fixed backbone, not doing any minimization, and packing only, I'm not surprised that you get identical structures - even coordinate-by-coordinate identical structures. The packer is remarkably convergent for a stochastic process, and with fixed backbone and no off-rotamer optimization, they're a much smaller (though frequently still quite large) space of possible structures you could generate (though your ex?_level 4's should increase that quite a bit), so it's possible you can converge to a single global minimum for your particular structure.
That's *especially* true if you're only trying to pack two buried residues in the context of a number of fixed surrounding residues. Steric clashes can mean only 1-2 rotamer bins per amino acid are actually feasible, and even at level 4, you're probably only searching several hundred total combinations. My guess is that the packer has no problem doing a thorough search on your very limited set of possible structures.
That said, it's a bit strange that all 100 are ending up the same - even for convergent runs you typically get a few outliers (though my experience is for much larger search spaces). What does your resfile look like? It's possible that a mistake there means you're not really packing any positions. (How do your output structures compare to your input structure? Do you see any movement in the sidechains to be repacked?) What happens if you repeat the run with more residues allowed to repack?
In this particular case, I am just repacking two residues and the resfile is as follows:
NATRO # need natro because repack occurs in absence of heavy chain and antigen
EX 1 LEVEL 7
EX 2 LEVEL 7
EX 3 LEVEL 7
EX 4 LEVEL 7
#repack edge residues from graft
213 A NATAA
215 A NATAA
Background: I have a symmetric interface (homodimer) and one of the key interactions is between N/S. I want to swap the N/S pair with S/N to check if it retains binding. However, when I mutate using Rosetta instead of the amide group of N interacting with the hydroxyl group of S (which occurs in the native protein), the swapped version does not form any N/S interaction and the amides of the N's bump into each other. Using PyMol I can move the rotamers to form the desired bond even in the swapped conformation and scoring with Rosetta gives me lower scores.
Given that "the packer is remarkably convergent for stochastic process" combined with the fact that neighboring residues are not allowed to move, I guess it is not surprising that I am getting identical scores. However, I was hoping that random optimization by optH would show up as differing scores. Plus one of my repacked residue is asparagine, whose amide groups are flipped randomly by optH - and hence was hoping to see some variability. I tried a simulation where I allowed the neighboring residues to repack using NATAA and there is slight variation with five unique decoys in 100 nstruct.
I am sure the resfile is fine because I have used PIKAA using variants of this resfile and have successfully mutated the input residues. Your tips suggest that if I want to optimize the positions of only these two residues in question, its best that I minimize only these two positions.
However, the reason why I think that there is something funky is because when I looked at the decoy I felt that the rotamers could be better oriented. Thus I used PyMol to manually move the rotamer around to form a nice hydrogen bond and then rescored the decoy. Now the manually tweaked model scores lower. Unless there is a bug, the only logical reason I can think of is that rosetta does not have the rotamer that I used in PyMol (but I find it hard to believe).
Is there a command line/resfile syntax that will allow me to minimize only two specific residues?
Thank you for the helpful suggestions :)
A) this is definitely convergence
B) This resfile does not do what you think it does. The top, pre-start portion only applies to residues NOT otherwise specified. Since you specified NATRO for those residues, all the ex flags there (and, critically, ex_cutoff 1) only applies to the residues that are also NATRO and not packing. Residues 213 and 215 do not get extra rotamers from this resfile. (They do get the extra rotamers from your command line, but that has no -ex_cutoff, so they might be missing the extra rotamers due to lack of burial). Rosetta should report a rotamers count when packing; you can calculate for yourself if that is right or not (or at least, if it changes as you add ex flags). This may explain why Rosetta doesn't have the rotamer you want (unlikely, though, since it's only extra deviation rotamers, not entirely new rotamers)
C) ex3 and ex4 won't have any effect on S and N packing in this fixed context, as they have one and two chi angles, respectively.
D) Yes, fixbb supports both post-packing minimization (minimize_sidechains option) and the MinPacker, which preminimizes sidechains (-min_pack). -stochastic_pack also exists but I don't know what it does (It says "Pack using a continuous sidechains rotamer library").