Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CanonicalSamplingApplication.cc
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file
11 /// @brief
12 /// @author
13 /// @author
14 
15 //graphix
17 
18 //
20 //#include <devel/Gaussian/BBGaussianMover.hh>
25 
28 // AUTO-REMOVED #include <protocols/jd2/MPIFileBufJobDistributor.hh>
34 
35 // AUTO-REMOVED #include <protocols/canonical_sampling/mc_convergence_checks/MPIHPool_ConvergenceCheck.hh>
36 
37 // AUTO-REMOVED #include <core/pack/task/ResfileReader.hh>
40 
42 // AUTO-REMOVED #include <core/pack/task/PackerTask_.hh>
44 
45 #include <basic/options/option.hh>
46 // AUTO-REMOVED #include <basic/options/after_opts.hh>
47 // AUTO-REMOVED #include <basic/options/option_macros.hh>
48 #include <basic/options/keys/mc.OptionKeys.gen.hh>
49 // AUTO-REMOVED #include <basic/options/keys/bbg.OptionKeys.gen.hh>
50 // AUTO-REMOVED #include <basic/options/keys/backrub.OptionKeys.gen.hh>
51 #include <basic/options/keys/in.OptionKeys.gen.hh>
52 // AUTO-REMOVED #include <basic/options/keys/cluster.OptionKeys.gen.hh>
53 #include <basic/options/keys/canonical_sampling.OptionKeys.gen.hh>
54 // AUTO-REMOVED #include <basic/prof.hh>
55 #include <basic/Tracer.hh>
57 
59 #include <utility/vector0.hh>
60 #include <utility/vector1.hh>
61 
62 
63 
64 
65 #ifdef USEMPI
66 #include <mpi.h>
67 #endif
68 
69 
70 
71 using namespace basic::options;
72 
73 
74 
75 namespace protocols {
76 namespace canonical_sampling {
77 
78 int
80 
81  basic::Tracer tr("src.apps.pilot.liz.test_canonical_mover");
82 
83  using namespace protocols::moves;
84  using namespace basic;
85  using namespace basic::options;
86  using namespace basic::options::OptionKeys;
87  using namespace core::pack::task;
88 
89  if( tr.visible() ){
90  tr << "resetting clock" << std::endl;
91  }
92  //basic::prof_reset();
93 
94 
95  //bool MPI_synchronize_pools = options::option[options::OptionKeys::canonical_sampling::probabilities::MPI_sync_pools];
96  bool MPI_bcast = options::option[ options::OptionKeys::canonical_sampling::probabilities::MPI_bcast ];
97  bool use_fast_sc_moves = options::option[ options::OptionKeys::canonical_sampling::probabilities::fast_sc_moves ];
98  bool no_jd2_output = options::option[options::OptionKeys::canonical_sampling::probabilities::no_jd2_output];
99  bool use_hierarchy = options::option[options::OptionKeys::canonical_sampling::probabilities::use_hierarchical_clustering];
100 
101  //get rid of unused variable warning
102  if( MPI_bcast ) {}
103  if( use_hierarchy ) {}
104 
106  //protocols::canonical_sampling::CanonicalSamplingMoverOP csm(new protocols::canonical_sampling::CanonicalSamplingMover(sfxn,pool_ptr,1000));
108  csm->set_scorefunction(sfxn);
109 
110  if( !use_fast_sc_moves ){
111  //setup sidechain mover
113  TaskFactoryOP main_task_factory = new TaskFactory;
115  main_task_factory->push_back( rtrop );
116  main_task_factory->push_back( new operation::ReadResfile );
117  scm->set_task_factory(main_task_factory);
118 
119  if( options::option[ OptionKeys::canonical_sampling::probabilities::sc_prob_uniform ].user() ) {
120  scm->set_prob_uniform(options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_uniform ]);
121  }
122  if( options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_withinrot ].user() ){
123  scm->set_prob_withinrot(options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_withinrot ]);
124  }
125  if( options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_perturbcurrent ].user() ){
126  scm->set_prob_random_pert_current(options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_perturbcurrent ]);
127  }
128  scm->set_preserve_detailed_balance( csm->detailed_balance() );
129 
130  csm->add_mover(scm,options::option[options::OptionKeys::canonical_sampling::probabilities::sc]);
131  }else{
132  //setup sidechain mover
134  TaskFactoryOP main_task_factory = new TaskFactory;
136  main_task_factory->push_back( rtrop );
137  scm->set_temperature( csm->get_temp() );
138  scm->set_scorefunction( *sfxn );
139  scm->setup( sfxn );
140  scm->set_task_factory(main_task_factory);
141  scm->set_prob_uniform(options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_uniform ]);
142  scm->set_prob_withinrot(options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_withinrot ]);
143  scm->set_prob_random_pert_current(options::option[ options::OptionKeys::canonical_sampling::probabilities::sc_prob_perturbcurrent ]);
144  scm->set_preserve_detailed_balance( csm->detailed_balance() );
145  scm->set_ntrials( options::option[ options::OptionKeys::canonical_sampling::probabilities::fast_sc_moves_ntrials ] );
146 
147  csm->add_mover(scm,options::option[options::OptionKeys::canonical_sampling::probabilities::sc]);
148 
149  }
150  //add move-map to bbg-mover
152  if( options::option[in::file::movemap].user() ){
153  movemap->init_from_file(options::option[in::file::movemap]);
154  }else{
155  movemap->set_bb( true );
156  movemap->set_chi( true );
157  }
159  bbg8t3mover->movemap(movemap);
160  tr << "probability of executing bbg move: " << (options::option[options::OptionKeys::canonical_sampling::probabilities::localbb]*
161  (1-options::option[options::OptionKeys::canonical_sampling::probabilities::backrub]-options::option[options::OptionKeys::canonical_sampling::probabilities::conrot]())) << std::endl;
162  runtime_assert(1-options::option[options::OptionKeys::canonical_sampling::probabilities::backrub]-options::option[options::OptionKeys::canonical_sampling::probabilities::conrot] >= 0);
163  csm->add_mover( bbg8t3mover, options::option[options::OptionKeys::canonical_sampling::probabilities::localbb]*(1-options::option[options::OptionKeys::canonical_sampling::probabilities::backrub]-options::option[options::OptionKeys::canonical_sampling::probabilities::conrot]()) );
164 
165  //setup conrot mover
166  if( options::option[options::OptionKeys::canonical_sampling::probabilities::conrot]() > 0 ) {
168  conrotmover->movemap( movemap );
169  csm->add_mover( conrotmover, options::option[options::OptionKeys::canonical_sampling::probabilities::localbb]*options::option[options::OptionKeys::canonical_sampling::probabilities::conrot]());
170  }
171 
172 
173  //setup backrub mover
174  if( options::option[options::OptionKeys::canonical_sampling::probabilities::backrub]() > 0 ) {
176  core::scoring::methods::EnergyMethodOptions energymethodoptions(sfxn->energy_method_options());
177  if (energymethodoptions.bond_angle_residue_type_param_set()) {
178  backrubmover->branchopt().bond_angle_residue_type_param_set(energymethodoptions.bond_angle_residue_type_param_set());
179  }
180  backrubmover->set_preserve_detailed_balance( csm->detailed_balance() );
181  backrubmover->init_with_options();
182  //backrubmover->add_mainchain_segments_from_options();
183  //if( !option[in::file::fullatom] ) {
184  // backrubmover->optimize_branch_angles(pose);
185  //}
186  tr << "probability of executing backrub move: " << (options::option[options::OptionKeys::canonical_sampling::probabilities::localbb]*(options::option[options::OptionKeys::canonical_sampling::probabilities::backrub])) << std::endl;
187  csm->add_mover((MoverOP)(backrubmover),(core::Real)(options::option[options::OptionKeys::canonical_sampling::probabilities::localbb]*options::option[options::OptionKeys::canonical_sampling::probabilities::backrub]));
188  }
189 
190 
191  tr.Info << "using regular pool-rmsd" << std::endl;
192  //protocols::jd2::JobDistributor* jd2 = protocols::jd2::JobDistributor::get_instance();
194  new mc_convergence_checks::Pool_RMSD(options::option[mc::known_structures]);
195  csm->set_poolrmsd(pool_ptr);
196  if( no_jd2_output ) {
198  } else {
200  }
201  return 0;
202 }
203 
204 }
205 }