Skip to content
Snippets Groups Projects
Commit 5892098c authored by Studer Gabriel's avatar Studer Gabriel
Browse files

Remove experimental SampleMonteCarlo functionality that employed BackboneRelaxer

It was neither documented nor used anywhere...
parent a175a102
No related branches found
No related tags found
No related merge requests found
......@@ -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));
}
......@@ -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
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment