The scripts and input files that accompany this demo can be found in the
demos/public
directory of the Rosetta weekly releases.
KEYWORDS: DOCKING STRUCTURE_PREDICTION
Author: Zhe Zhang (zhezhang1986 at gmail dot com)
Corresponding PI: Martin Zacharias (martin.zacharias at ph dot tum dot de)
Last Updated: 06/01/2015
Reference: Zhang Z, Schindler C, Lange OF, Zacharias M (2015): Comparison of Replica-Exchange Approaches for Protein-Protein Docking Refinement in Rosetta
The different protocols described in this paper are tested on unbound docking targets selected from docking benchmark4.0. In docking refinement practice, approximate interaction site is known. Thus the initial start conformation is generated thus from the superimposed unbound structure, by first translating the second binding partner 15Å, then rotating 60°. This gives the initial Ligand RMSD approximately sqrt( 1515 + (2pir60/2/360)(2pir60/2/360) ), which r denoting the radii of the second binding partner. The translation direction and rotation axis are both drawn from uniformly distributed vectors on unit sphere.
Rosetta/main/source/bin/rosetta_scripts.linuxgccrelease
Before run the test, please export your rosetta bin and database directory, as well as executable of mpirun
$ export MPI_RUN=$YOUR_MPIRUN_EXECUTABLE
$ export ROSETTA_BIN=$YOUR_ROSETTA_BIN_DIRECTORY
$ export ROSETTA_DATABASE=$YOUR_ROSETTA_DATABASE_DIRECTORY
Run the command.sh script provided in folder generate_initial_conformation
$ ./command.sh
Example outputs are found in the folder generate_initial_conformation.
For rigid-body docking refinement, we have applied rigid-body mover UnbiasedRigidBodyPerturbNoCenterMover and sidechain movers including PerturbChiSidechainMover, PerturbRotamerSidechainMover and JumpRotamerSidechainMover with the general Metropolis-Hastings framework. The acceptance of a move is decided by the Metropolis Criterion. In order to avoid the two binding partners diffuse away from each other in Monte-Carlo move, a very loose encounter constraint is applied and acts on the distance of the mass center of the two binding partners. To achieve local search for docking refinement, the rigid-body space is restricted with respect to the initial conformation by translation of 20Å and rotation of 90° in UnbiasedRigidBodyPerturbNoCenterMover.
For productive simulation, 2,000,000 Monte-Carlo steps need to be run, and snapshots are stored every 1,000 steps. At the end of the simulation, only decoys generated with the reference setting ( hardrep, temperature=0.15) are collected and analyzed as final results. To save space and computer time, the example output in this folder are from much shorter simulation. For productive simulations, please also change the related parameter "trial" in dock.xml file.
Details of each protocol please also refer to the rosetta scripts file dock.xml in each folder.
All the four protocols need to be run with MPI.
Take the example outputs in wte_remc_docking for example:
REMARK
BIASENERGY
$ ref=5 # the number of reference replica
$ scripts/silent_data.py decoys_P_0001_rt.out Lrmsd Irms score I_sc temp_level Fnat_n bias | awk -v ref_rep=“$ref” ’$5==ref_rep’ > collected_data
$ scripts/collect_tempering_stats.py tempering.stats # collect the average exchange rate over the whole simulation
$ scripts/collect_trial_stats.py trial.stats # collect average acceptance for each mover at each replica over the whole simulation
This protocol using standard monte-carlo sampling protein-protein docking refinement. FixedTemperatureController with temperature 0.15 in Rosetta is used with the MetropolisHastings framework. The magnitude of the step size and sampling weight of the rigid-body and sidechain movers are fixed along the entire simulation. Rigid-body mover has a much lower sampling weight than the sidechain movers to serve the purpose of refinement.
Rosetta/main/source/bin/rosetta_scripts.mpi.linuxgccrelease
Run the command.sh script provided in folder mc_docking:
$ ./command.sh -n $N_PROC # N_PROC should be (2 + nstruct)
This protocol using parallel tempering sampling protein-protein docking refinement. Temperatures are drawn from geometric progression withe the lowest temperature same as used in mc-docking. HamiltonianExchange is used to control the temperatures of each replica with the Metropolis-Hastings framework. Exchange is attempted between neighbor temperatures every 1,000 steps. The magnitude of the step size and the sampling weight all the movers are modulated according to the temperature in the initialization such that in the lower levels more frequent sidechain moves and few small rigid-body moves are applied and in higher levels less frequent sidechain moves and more bigger rigid-body moves are applied.
Rosetta/main/source/bin/rosetta_scripts.mpi.linuxgccrelease
Run the command.sh script provided in folder remc_docking:
$ ./command.sh -n $N_PROC # N_PROC should be (2 + nstruct * n_replica)
This protocol applied well-tempered ensemble technique with parallel tempering to sampling protein-protein docking refinement. By increasing the tunable factor gamma of BiasedEnergy, we can reduce the number of replicas, but maintain an approximately same exchange rate between replicas.
Rosetta/main/source/bin/rosetta_scripts.mpi.linuxgccrelease
Run the command.sh script provided in folder wte_remc_docking:
$ ./command.sh -n $N_PROC # N_PROC should be (2 + nstruct * n_replica)
In this protocol, two dimensional replica exchange, with variable of the first dimension as temperature, and of the second dimension as the scaling of softness of repulsive Lennard-Jones potential. In this second scaling dimension, we have tested with five levels: standard (hard rep), soft50%, soft55%, soft60% and soft65%. In the dimension with variable of temperature, we have five temperatures with lowest equal 0.15. In total 25 levels are run in parallel and exchange between neighbor levels is attempted every 1,000 steps periodically along the two dimensions.
Rosetta/main/source/bin/rosetta_scripts.mpi.linuxgccrelease
Run the command.sh script provided in folder wte_remc_docking:
$ ./command.sh -n $N_PROC # N_PROC should be (2 + nstruct * n_replica)