IMP  2.1.0
The Integrative Modeling Platform
core/incremental_mc.py

This example shows how to do incremental scoring with Monte Carlo. Incremental scoring can be significantly faster than non-incremental scoring when using moves that only move a few particles at a time.

1 ## \example core/incremental_mc.py
2 # This example shows how to do incremental scoring with Monte Carlo.
3 # Incremental scoring can be significantly faster than non-incremental
4 # scoring when using moves that only move a few particles at a time.
5 
6 import IMP.core
7 import IMP.container
8 import IMP.algebra
9 import IMP.display
10 m = IMP.kernel.Model()
12  IMP.algebra.Vector3D(30, 30, 30))
13 ps = []
14 for i in range(0, 20):
15  ps.append(IMP.kernel.Particle(m))
17  d.set_radius(10)
18  d.set_coordinates(IMP.algebra.get_random_vector_in(bb))
19  d.set_coordinates_are_optimized(True)
20 
25  IMP.core.HarmonicUpperBound(0, 1), bb),
26  psl)
27 mc = IMP.core.MonteCarlo(m)
28 isf = IMP.core.IncrementalScoringFunction(ps, [r, rb])
29 mc.set_incremental_scoring_function(isf)
30 
31 mvs = [IMP.core.BallMover([p], 5) for p in ps]
32 sm = IMP.core.SerialMover(mvs)
33 mc.add_mover(sm)
34 IMP.base.set_log_level(IMP.base.SILENT)
35 print "initial", isf.evaluate(False)
36 after = mc.optimize(10000)
37 print "final", after
38 name = IMP.base.create_temporary_file_name("incremental_mc", ".pym")
40 for p in ps:
42  w.add_geometry(g)
43 print "pymol", name