diff --git a/modelling/pymod/export_monte_carlo.cc b/modelling/pymod/export_monte_carlo.cc index 7d296ccf9550ec7db9ebf53c06aa4e4792370e0f..5935c7534efd62b055bf57da7252e4f038685976 100644 --- a/modelling/pymod/export_monte_carlo.cc +++ b/modelling/pymod/export_monte_carlo.cc @@ -236,31 +236,6 @@ LinearScorerPtr LinearScorerInitWrapper(scoring::BackboneOverallScorerPtr scorer return p; } -void MonteCarloWithoutRelaxer(MonteCarloSamplerPtr sampler, - MonteCarloCloserPtr closer, - MonteCarloScorerPtr scorer, - MonteCarloCoolerPtr cooler, - uint steps, loop::BackboneList& backbone_list, - bool initialize, uint seed, - bool lowest_energy_conformation) { - SampleMonteCarlo(sampler, closer, scorer, cooler, steps, backbone_list, - initialize, seed, lowest_energy_conformation); -} - -void MonteCarloWithRelaxer(MonteCarloSamplerPtr sampler, - MonteCarloCloserPtr closer, - MonteCarloScorerPtr scorer, - MonteCarloCoolerPtr cooler, - uint steps, loop::BackboneList& backbone_list, - BackboneRelaxerPtr relaxer, uint relaxer_frequency, - uint relaxer_steps, bool initialize, uint seed, - bool lowest_energy_conformation) { - SampleMonteCarlo(sampler, closer, scorer, cooler, steps, backbone_list, - relaxer, relaxer_frequency, relaxer_steps, initialize, - seed, lowest_energy_conformation); -} - - } void export_monte_carlo() { @@ -359,16 +334,8 @@ void export_monte_carlo() { register_ptr_to_python<MonteCarloCloserPtr>(); // export monte carlo sampler - def("SampleMonteCarlo", &MonteCarloWithoutRelaxer, + def("SampleMonteCarlo", &SampleMonteCarlo, (arg("sampler"), arg("closer"), arg("scorer"), arg("cooler"), arg("steps"), arg("backbone"), arg("initialize")=true, arg("seed")=0, arg("lowest_energy_conformation")=true)); - - def("SampleMonteCarlo", &MonteCarloWithRelaxer, - (arg("sampler"), arg("closer"), arg("scorer"), arg("cooler"), - arg("steps"), arg("backbone"), arg("backbone_relaxer"), - arg("relaxer_frequency"), arg("relaxer_steps"), arg("initialize")=true, - arg("seed")=0, arg("lowest_energy_conformation")=true)); - - } diff --git a/modelling/src/monte_carlo.cc b/modelling/src/monte_carlo.cc index 374fb05206799ba3106d26b95c173f8e018d4039..dab1adef2b9248065f687d1fbe60cff20afac5df 100644 --- a/modelling/src/monte_carlo.cc +++ b/modelling/src/monte_carlo.cc @@ -63,72 +63,5 @@ void SampleMonteCarlo(MonteCarloSamplerPtr sampler, MonteCarloCloserPtr closer, if (lowest_energy_conformation) positions = min_score_bb_list; } -void SampleMonteCarlo(MonteCarloSamplerPtr sampler, MonteCarloCloserPtr closer, - MonteCarloScorerPtr scorer, MonteCarloCoolerPtr cooler, - uint steps, loop::BackboneList& positions, - BackboneRelaxerPtr relaxer, uint relaxer_frequency, - uint relaxer_steps, bool initialize, uint seed, - bool lowest_energy_conformation) { - - loop::BackboneList proposed_positions; - - boost::mt19937 rgen(seed); - boost::uniform_01<boost::mt19937> zeroone(rgen); - - Real score, new_score, temperature; - - if (initialize) { - //try to initialize - bool initialized = false; - for (int i = 0; i < 100; ++i) { - sampler->Initialize(positions); - if (closer->Close(positions, positions)) { - initialized = true; - break; - } - } - if (!initialized) { - throw promod3::Error("Failed to initialize monte carlo sampling protocol!"); - } - } - - score = scorer->GetScore(positions); - bool closed = false; - - uint successful_steps = 0; - Real min_score = score; - loop::BackboneList min_score_bb_list = positions; - - for (uint i = 0; i < steps; ++i) { - //try several proposals! - closed = false; - for (int j = 0; j < 3; ++j) { - sampler->ProposeStep(positions, proposed_positions); - if (closer->Close(proposed_positions, proposed_positions)) { - closed = true; - break; - } - } - if (!closed) continue; - temperature = cooler->GetTemperature(); - new_score = scorer->GetScore(proposed_positions); - if (std::exp(-(new_score-score)/temperature) > zeroone()) { - positions.swap(proposed_positions); - score = new_score; - ++successful_steps; - if (successful_steps % relaxer_frequency == 0) { - relaxer->Run(positions, relaxer_steps); - } - if (lowest_energy_conformation && score < min_score) { - min_score = score; - min_score_bb_list = positions; - } - } - } - - // update return value if needed - if (lowest_energy_conformation) positions = min_score_bb_list; -} - }}//ns diff --git a/modelling/src/monte_carlo.hh b/modelling/src/monte_carlo.hh index 8f6d82c32d13329b191fe0001573dfd4c291a21c..d25464b12dc9fdc0eaf5d78bcfc8256eed627329 100644 --- a/modelling/src/monte_carlo.hh +++ b/modelling/src/monte_carlo.hh @@ -18,14 +18,6 @@ namespace promod3 { namespace modelling { uint steps, loop::BackboneList& backbone_list, bool initialize = true, uint seed = 0, bool lowest_energy_conformation = true); - - void SampleMonteCarlo(MonteCarloSamplerPtr sampler, MonteCarloCloserPtr closer, - MonteCarloScorerPtr scorer, MonteCarloCoolerPtr cooler, - uint steps, loop::BackboneList& backbone_list, - BackboneRelaxerPtr relaxer, uint relaxer_frequency, - uint relaxer_steps, bool initialize = true, uint seed = 0, - bool lowest_energy_conformation = true); - }} #endif