IMP logo
IMP Reference Guide  develop.63b38c487d,2024/12/22
The Integrative Modeling Platform
doc/examples/misc/decay.py
1 ## \example misc/decay.py
2 # Use the IMP::misc::DecayPairContainerOptimizerState to gradually break
3 # the bonds in a bd simulation.
4 
5 import IMP.atom
6 import IMP.container
7 import IMP.misc
8 import IMP.display
9 import IMP.example
10 import sys
11 import IMP.rmf
12 import RMF
13 import random
14 
16  sys.argv,
17  "Use the IMP::misc::DecayPairContainerOptimizerState to gradually "
18  "break the bonds in a bd simulation")
19 
20 if IMP.get_bool_flag("run_quick_test"):
21  np = 8
22  nb = 8
23  prob = .5
24  period = 2
25  steps = 10
26 else:
27  np = 20
28  nb = 40
29  prob = .9
30  period = 10
31  steps = 10000
32 
33 m = IMP.Model()
34 
36  IMP.algebra.Vector3D(100, 100, 100))
37 ps = []
38 for i in range(0, np):
39  p = m.add_particle("p")
41  d.set_coordinates(
42  IMP.algebra.Vector3D(10. * (i / 10), 10. * (i % 10), 10.))
43  d.set_radius(10)
44  d.set_coordinates_are_optimized(True)
48  ps.append(p)
50 
51 bds = []
52 for i in range(0, nb):
53  pp = random.sample(ps, 2)
54  if pp not in bds and [pp[1], pp[0]] not in bds:
55  bds.append(pp)
56 
58 dos = IMP.misc.DecayPairContainerOptimizerState(m, cf, bds, "decay")
59 dos.set_period(period)
60 dos.set_log_level(IMP.SILENT) # VERBOSE
61 
62 # create restraints
63 rs = []
65  IMP.core.HarmonicUpperBound(0, 10), bb)
66 ps_container = IMP.container.ListSingletonContainer(m, ps)
67 rs.append(IMP.container.SingletonsRestraint(box_score, ps_container, "box"))
69 rs.append(IMP.container.PairsRestraint(bond_score,
70  dos.get_output_container(),
71  "bonds"))
72 ev = IMP.core.ExcludedVolumeRestraint(ps_container, 10, 10)
73 IMP.set_log_level(IMP.SILENT)
74 
75 # set up simulator
77 bd.set_maximum_time_step(1000)
78 bd.set_scoring_function(rs + [ev])
79 bd.add_optimizer_state(dos)
80 
81 # set up display
82 fn = IMP.create_temporary_file_name("decay", ".rmf")
83 rmf = RMF.create_rmf_file(fn)
84 print("setting up file")
86 IMP.rmf.add_restraints(rmf, rs + [ev])
88 IMP.rmf.add_geometries(rmf, [g])
89 os = IMP.rmf.SaveOptimizerState(m, rmf)
90 os.set_period(max(steps / 100, 1))
91 bd.add_optimizer_state(os)
92 
93 # actually optimize things
94 print("running")
95 bd.optimize(steps)
96 
97 print("see", fn)
Applies a SingletonScore to each Singleton in a list.
A harmonic upper bound on the distance between two spheres.
Strings setup_from_argv(const Strings &argv, std::string description, std::string positional_description, int num_positional)
Various classes to hold sets of particles.
Upper bound harmonic function (non-zero when feature > mean)
static XYZR setup_particle(Model *m, ParticleIndex pi)
Definition: XYZR.h:48
Miscellaneous functionality that is not expected to be used by many IMP users.
bool get_bool_flag(std::string name)
Maintain a pair container with a decaying list of pairs.
ParticlesTemp get_particles(Model *m, const ParticleIndexes &ps)
Get the particles from a list of indexes.
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:86
static Hierarchy setup_particle(Model *m, ParticleIndex pi, ParticleIndexesAdaptor children=ParticleIndexesAdaptor())
Create a Hierarchy of level t by adding the needed attributes.
Simple Brownian dynamics simulator.
Store a list of ParticleIndexes.
static Mass setup_particle(Model *m, ParticleIndex pi, Float mass)
Definition: Mass.h:48
Return true (1) with a fixed probability.
Color get_display_color(unsigned int i)
void add_hierarchies(RMF::NodeHandle fh, const atom::Hierarchies &hs)
static Colored setup_particle(Model *m, ParticleIndex pi, Color color)
Definition: Colored.h:62
void add_geometries(RMF::NodeHandle parent, const display::GeometriesTemp &r)
Add geometries to a given parent node.
void add_restraints(RMF::NodeHandle fh, const Restraints &hs)
void set_log_level(LogLevel l)
Set the current global log level.
Periodically dump the state of all associated objects into the RMF file.
Example module.
static Diffusion setup_particle(Model *m, ParticleIndex pi, Float D)
Setup the particle with the specified diffusion coefficient.
Definition: Diffusion.h:76
VectorD< 3 > Vector3D
Definition: VectorD.h:408
Prevent a set of particles and rigid bodies from inter-penetrating.
Output IMP model data in various file formats.
Functionality for loading, creating, manipulating and scoring atomic structures.
Support for the RMF file format for storing hierarchical molecular data and markup.
Applies a PairScore to each Pair in a list.
std::string create_temporary_file_name(std::string prefix="imp_temp", std::string suffix="")
Create a temporary file.