My problems as follows:
1）I repacked protein side-chains by the application of "relax.linuxgccrelease -score:dun08 -database .../... -in:file:s .../.... -nstruct". Does the default action as above call FixbbSimAnnealer FixbbSimAnnealer：：run()？
2)If the first point is right, how can I refine the protein structure had been repacked its side-chains ? The definition of refinement is not to replace existing side-chains, but to optimize the side-chains dihedral angles near the rotamer value. I read some papers achieve this function by using a conjugate gradient's method. How can I get the similar function by using Rosetta3.4?
I do not completely understand your question. It would help if you'd point me to which Rosetta paper you were interested in.
Generally, Relax will at some point call the FixbbSimAnnealer; it is the default Annealer. -dun08 is no longer suggested (ever), it was found to be oversmoothed and introduced problems.
I *think* all you want to do is alter ONLY the sidechains of the protein, and NOT the backbone. The correct way to do this is with the "fixbb" executable (https://www.rosettacommons.org/manuals/archive/rosetta3.4_user_guide/d7/...), not the relax executable. Relax alters the backbone, and Relax also repacks along the way (https://www.rosettacommons.org/manuals/archive/rosetta3.4_user_guide/d6/...). Relax is the correct choice if you want backbone movement as well.
Fixbb offers several methods to get off-rotamer sidechains. The first is the standard use of the -ex flags, which allow "extra" rotamers by adding rotamers related to the "standard" rotamers by some measured standard deviation of the rotamer well. For example, with the -ex1 flag, all chi 1 angles get extra rotamers added at + and - one standard deviation. The -ex flags work with Relax as well.
The second and third involve gradient optimization. These flags work only with fixbb. -min_pack will run the MinPacker, which runs a gradient minimization on each rotamer as it is placed. -minimize_sidechains will pack with normal rotamers but then after the fact run a global minimization on the sidechains at all packable positions. (The -ex flags combine here as well).
For simple repacking, "fixbb -ex1 -ex2 -use_input_sc -packing:repack_only -ndruns 10 -nstruct 1 -s mypdb.pdb -database $DATABASE" is sufficient.
If you want ONLY on-rotamer sidechains, do not use any -ex flags or -use_input_sc or the minimization flags. That will cause Rosetta to throw out all the starting rotamers (-use_input_sc says use the input sidechains) and the lack of ex flags will keep Rosetta on precise rotamers.
Just wanted to add to Steven's comments -
If your interested, 3.4 has the 2010 Rotamer library in it, which was published here: http://www.cell.com/structure/abstract/S0969-2126%2811%2900144-4
To use, pass the -score:dun10 flag.
Dun08 was part of the development of the 2010 library, and with the next release, it will be completely removed from Rosetta.
Thanks a lot for a kind of comment and other help.
I gain insight by reading them carefully, and so far I have found -minimize_sidechains I need. Next, I will study it, and use the -score:dun10 flag.
I have another problem at the code level. For example, MinPacker runs a gradient minimization on each rotamer as it is placed, and I want to add some steps for this code.
I'd like to add a minimized rotamer (*bgres[ jj_resid ]) into its corresponding rotset by the code of "rotsets->rotamer_set_for_moltenresidue(currentNodeId)->add_rotamer(*bgres[ jj_resid ]);". However it can't update ig(InteractionGraph) for the new rotamer, so it is wrong to compile this project. Because the rosetta code is so complex and large, I have too much pressure to written new code by myself. Could you give me some suggestion and help, let me could find a way , which can dynamically update ig as a new minimized rotamer is putted in.
Thank you for all of you.
You want to keep the minimized rotamers so that the minpacker doesn't have to work quite so hard to get back to the minimized rotamers it walked away from.
I see two possibilities.
1) Instead of adding a new rotamer to the rotamer set, replace the existing one. This should be relatively easy.
2) Write a lot of code. Come up with a new data structure to remember minimized rotamers (careful that it doesn't get too large and that you then run out of memory!) and then change the min-packer so that sometimes it pulls rotamers from the original rotamer set, and sometimes it pulls rotamers from the previously minimized ones.
There's no good way, though, to make the existing rotamer set behave differently in the middle of packing.
Thank you very much, you give me a good idea. I plant to combine two points you mentioned. Come up with a new data structure to remember minimized rotamers, and randomly select one minimized rotamers to replace the existing one.