IMP logo
IMP Reference Guide  develop.031dafb4d2,2024/05/16
The Integrative Modeling Platform
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 from __future__ import print_function
6 import IMP.atom
7 import IMP.container
8 import IMP.misc
9 import IMP.display
10 import IMP.example
11 import sys
12 import IMP.rmf
13 import RMF
14 import random
15 
17  sys.argv,
18  "Use the IMP::misc::DecayPairContainerOptimizerState to gradually "
19  "break the bonds in a bd simulation")
20 
21 if IMP.get_bool_flag("run_quick_test"):
22  np = 8
23  nb = 8
24  prob = .5
25  period = 2
26  steps = 10
27 else:
28  np = 20
29  nb = 40
30  prob = .9
31  period = 10
32  steps = 10000
33 
34 m = IMP.Model()
35 
37  IMP.algebra.Vector3D(100, 100, 100))
38 ps = []
39 for i in range(0, np):
40  p = m.add_particle("p")
42  d.set_coordinates(
43  IMP.algebra.Vector3D(10. * (i / 10), 10. * (i % 10), 10.))
44  d.set_radius(10)
45  d.set_coordinates_are_optimized(True)
49  ps.append(p)
51 
52 bds = []
53 for i in range(0, nb):
54  pp = random.sample(ps, 2)
55  if pp not in bds and [pp[1], pp[0]] not in bds:
56  bds.append(pp)
57 
59 dos = IMP.misc.DecayPairContainerOptimizerState(m, cf, bds, "decay")
60 dos.set_period(period)
61 dos.set_log_level(IMP.SILENT) # VERBOSE
62 
63 # create restraints
64 rs = []
66  IMP.core.HarmonicUpperBound(0, 10), bb)
67 ps_container = IMP.container.ListSingletonContainer(m, ps)
68 rs.append(IMP.container.SingletonsRestraint(box_score, ps_container, "box"))
70 rs.append(IMP.container.PairsRestraint(bond_score,
71  dos.get_output_container(),
72  "bonds"))
73 ev = IMP.core.ExcludedVolumeRestraint(ps_container, 10, 10)
74 IMP.set_log_level(IMP.SILENT)
75 
76 # set up simulator
78 bd.set_maximum_time_step(1000)
79 bd.set_scoring_function(rs + [ev])
80 bd.add_optimizer_state(dos)
81 
82 # set up display
83 fn = IMP.create_temporary_file_name("decay", ".rmf")
84 rmf = RMF.create_rmf_file(fn)
85 print("setting up file")
87 IMP.rmf.add_restraints(rmf, rs + [ev])
89 IMP.rmf.add_geometries(rmf, [g])
90 os = IMP.rmf.SaveOptimizerState(m, rmf)
91 os.set_period(max(steps / 100, 1))
92 bd.add_optimizer_state(os)
93 
94 # actually optimize things
95 print("running")
96 bd.optimize(steps)
97 
98 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.