20 #include <basic/datacache/CacheableStringFloatMap.hh>
39 #include <numeric/random/random.hh>
43 #include <basic/Tracer.hh>
48 #include <utility/vector0.hh>
49 #include <utility/vector1.hh>
50 #include <basic/datacache/BasicDataCache.hh>
58 static numeric::random::RandomGenerator
RG(38627226);
60 static basic::Tracer
TR(
"protocols.docking.ConformerSwitchMover");
68 random_conformer_(false),
89 return "ConformerSwitchMover";
98 random_conformer_( random_conformer ),
113 using namespace core::pose::datacache;
127 conf_num =
RG.random_range( 1,
ensemble_->size() );
130 TR <<
"Switching partner with conformer: " << conf_num << std::endl;
133 ensemble_->set_current_confnum( conf_num );
136 if ( !pose.
data().has( ( CacheableDataType::ARBITRARY_FLOAT_DATA ) ) ){
138 CacheableDataType::ARBITRARY_FLOAT_DATA,
139 new basic::datacache::CacheableStringFloatMap()
143 basic::datacache::CacheableStringFloatMap *data
144 =
dynamic_cast< basic::datacache::CacheableStringFloatMap*
>
145 ( pose.
data().get_raw_ptr(CacheableDataType::ARBITRARY_FLOAT_DATA) );
165 e_table.push_back( complex_score );
170 if (e_table[i] <= min_energy) min_energy = e_table[i];
174 e_table[i] = std::exp((-1*(e_table[i] - min_energy))/
temperature_);
175 partition_sum += e_table[i];
199 if (interface.is_interface(i)) conf_interface.push_back( i );
202 if (conf_interface.size() <= 5){
203 conf_interface.clear();
205 conf_interface.push_back( i );
212 for (
Size i = 1; i <= conf_interface.size(); i++){
213 Size new_conf_resnum = conf_interface[i]-
ensemble_->start_res()+1;
214 Size pose_resnum = conf_interface[i];
217 atom_map[ id1 ] = id2;