IMP logo
IMP Reference Guide  2.16.0
The Integrative Modeling Platform
write_an_optimizer_state.py
1 ## \example kernel/write_an_optimizer_state.py
2 # While we do not recommend doing serious work using optimizer states
3 # written in Python, it is often useful when prototyping or testing code.
4 # Copy this example and modify as needed.
5 
6 from __future__ import print_function
7 import IMP
8 import sys
9 
10 IMP.setup_from_argv(sys.argv, "Optimizer state")
11 
12 
13 class MyOptimizerState(IMP.OptimizerState):
14  "An optimizer state which prints out the last scores of some restraints"
15 
16  def __init__(self, rs):
17  IMP.OptimizerState.__init__(self, rs[0].get_model(),
18  "MyOptimizerState%1%")
19  self.rs = rs
20 
21  def update(self):
22  for r in self.rs:
23  print(r.get_name(), r.get_last_score())
24 
25 
26 # some code to create and evaluate it
27 k = IMP.FloatKey("a key")
28 m = IMP.Model()
29 # we don't have any real restraints in the kernel
30 r0 = IMP._ConstRestraint(m, [], 1)
31 r0.set_name("restraint 0")
32 
33 r1 = IMP._ConstRestraint(m, [], 2)
34 r1.set_name("restraint 1")
35 
36 rs = IMP.RestraintSet([r0, r1], 1.0)
37 sf = rs.create_scoring_function()
38 
39 os = MyOptimizerState([r0, r1])
40 os.set_name("Python optimizer state")
41 # we don't have any optimizers either
42 co = IMP._ConstOptimizer(m)
43 co.set_scoring_function(sf)
44 co.add_optimizer_state(os)
45 print(co.optimize(100))
46 
47 # this is needed to clean up memory properly for some reason
48 co.remove_optimizer_state(os)
49 del os
50 del m
Strings setup_from_argv(const Strings &argv, std::string description, std::string positional_description, int num_positional)
Object used to hold a set of restraints.
Definition: RestraintSet.h:37
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:73
Shared optimizer state that is invoked upon commitment of new coordinates.