[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IMP-dev] Cleanup of monte carlo

The core::MonteCarlo code is rather a mess, has bugs and has subject to a lot of churn. This is primarily because it is trying to do too many different things, resulting is very complicated code. I'd like to break it up into several classes each with a single mode of operation. In particular, there would be

- core.MonteCarlo, which does simple Monte Carlo (apply some movers and accept or reject) as well as provide some finer grained functionality for implementing less trivial monte carlo protocols.

- core.MonteCarloWithLocalOptimization which applies some local optimization scheme after the moves and accepts or rejects the relaxed conformation

- core.MonteCarloWithBasinHopping which supports basin hopping (apply a monte carlo move and then accept or reject based on the score after 

The main noticeably change would be that code that looks like
mc= IMP.core.MonteCarlo()
cg= IMP.core.ConjugateGradients()

would need to be replaced by
cg= IMP.core.ConjugateGradients(m)
IMP.core.MonteCarloWithLocalOptimization(cg, 10)