44 #include <basic/options/option.hh>
45 #include <basic/options/keys/run.OptionKeys.gen.hh>
46 #include <basic/options/keys/antibody.OptionKeys.gen.hh>
47 #include <basic/Tracer.hh>
50 static basic::Tracer
TR(
"protocols.antibody2.SnugDock");
61 SnugDock::SnugDock() :
docking::DockingHighRes()
75 if (
this == &rhs )
return *
this;
76 Mover::operator=( rhs );
124 TR <<
"Beginning apply function of " +
get_name() +
"." << std::endl;
132 TR <<
"Reinitializing the shared MC object before applying the high resolution phase of " +
get_name() +
"."
143 TR <<
"Setting the structure to the state with the best score observed during the simulation" << std::endl;
144 mc_->recover_low( pose );
180 TR <<
"Setting up data for " +
get_name() +
"." << std::endl;
195 tf2()->create_and_attach_task_factory(
this, pose );
196 standard_dock_cycle->set_task_factory(
task_factory() );
200 mc_ = standard_dock_cycle->get_mc();
210 set_foldtree_for_ab_ag_docking,
215 set_foldtree_for_vH_vL_docking,
221 TrialMoverOP minimize_all_cdr_loops =
new TrialMover( minimize_all_cdr_loops_base,
mc_ );
230 TrialMoverOP refine_cdr_h2 =
new TrialMover( refine_cdr_h2_base,
mc_ );
233 TrialMoverOP refine_cdr_h3 =
new TrialMover( refine_cdr_h3_base,
mc_ );
251 using basic::options::option;
252 using namespace basic::options::OptionKeys;
253 if ( option[ basic::options::OptionKeys::antibody::refine ].user() ) {
281 using basic::options::option;
282 using namespace basic::options::OptionKeys;
284 if ( option[ run::test_cycles ].user() )
301 out <<
"//////////////////////////////////////////////////////////////////////////////////////////////" << std::endl;
302 out <<
"/// The following description borrows heavily from Fig. 1 of:" << std::endl;
303 out <<
"/// Sircar A, Gray JJ (2010) SnugDock: Paratope Structural Optimization during" << std::endl;
304 out <<
"/// Antibody-Antigen Docking Compensates for Errors in Antibody Homology Models." << std::endl;
305 out <<
"/// PLoS Comput Biol 6(1): e1000644. doi:10.1371/journal.pcbi.1000644" << std::endl;
306 out <<
"//////////////////////////////////////////////////////////////////////////////////////////////" << std::endl;
307 out <<
"//////////////////////////////////////////////////////////////////////////////////////////////" << std::endl;
308 out <<
"///" << std::endl;
309 out <<
"/// Each iteration of this loop will perform one of five different perturbations followed by" << std::endl;
310 out <<
"/// packing and minimization of the relevant regions of the pose and then with a Monte Carlo" << std::endl;
311 out <<
"/// test of the Boltzmann criterion in the indicated frequencies:" << std::endl;
312 out <<
"/// 1. 40% Perturb rigid body position of antibody relative to antigen" << std::endl;
313 out <<
"/// a. Set the pose's FoldTree for Ab-Ag docking (FoldTree provided by AntibodyInfo)" << std::endl;
314 out <<
"/// b. Run one cycle of standard high resolution docking (DockMCMCycle)" << std::endl;
315 out <<
"/// 2. 40% Perturb rigid body position of vL relative to vH" << std::endl;
316 out <<
"/// a. Set the pose's FoldTree for vL-vHAg (FoldTree provided by AntibodyInfo)" << std::endl;
317 out <<
"/// b. Run one cycle of standard high resolution docking (DockMCMCycle)" << std::endl;
318 out <<
"/// 3. 10% Select all CDRs for minimization" << std::endl;
319 out <<
"/// a. Apply CDRsMinPackMin" << std::endl;
320 out <<
"/// b. Monte Carlo accept or reject" << std::endl;
321 out <<
"/// 4. 5% Perturb CDR H2 loop by small, shear and CCD moves followed by minimization" << std::endl;
322 out <<
"/// a. Apply RefineOneCDRLoop (AntibodyInfo will setup the FoldTree for H2 refinement)" << std::endl;
323 out <<
"/// b. Monte Carlo accept or reject" << std::endl;
324 out <<
"/// 5. 5% Perturb CDR H3 loop by small, shear and CCD moves followed by minimization" << std::endl;
325 out <<
"/// a. Apply RefineOneCDRLoop (AntibodyInfo will setup the FoldTree for H3 refinement)" << std::endl;
326 out <<
"/// b. Monte Carlo accept or reject" << std::endl;
327 out <<
"///" << std::endl;
328 out <<
"//////////////////////////////////////////////////////////////////////////////////////////////" << std::endl;
329 out <<
"//////////////////////////////////////////////////////////////////////////////////////////////" << std::endl;