IMP logo
IMP Reference Guide  2.7.0
The Integrative Modeling Platform
simulation.py
1 ## \example rmf/simulation.py
2 # This example shows writing a brownian dynamics simulation to a rmf file.
3 # It includes a bounding box, restraints and a hierarchy of particles.
4 
5 from __future__ import print_function, division
6 import IMP.atom
7 import IMP.rmf
8 import RMF
9 import IMP.container
10 import IMP.display
11 import sys
12 
13 IMP.setup_from_argv(sys.argv, "simulation")
14 
15 k = 10.0
16 np = 10
17 frames = 10
18 
19 m = IMP.Model()
21  IMP.algebra.Vector3D(10, 10, 10))
22 
24  for i in range(0, np)]
26 for p in ps:
27  p.set_radius(1)
28  p.set_coordinates_are_optimized(True)
31  p.set_coordinates(IMP.algebra.get_random_vector_in(bb))
32 rs = []
34 pl = []
35 for i in range(0, len(ps) // 2):
36  pp = (ps[2 * i], ps[2 * i + 1])
37  pl.append(pp)
38  # create OK staring position
39  pp[1].set_coordinates(IMP.algebra.get_random_vector_on(pp[0].get_sphere()))
43  IMP.Particle(m, "molecule " + str(i)))
44  hr.add_child(IMP.atom.Hierarchy.setup_particle(pp[0]))
45  hr.add_child(IMP.atom.Hierarchy.setup_particle(pp[1]))
46  h.add_child(hr)
47 r = IMP.container.PairsRestraint(link, pl, "Bonds")
48 rs.append(r)
49 
50 ev = IMP.core.ExcludedVolumeRestraint(ps, k, 1, "EV")
51 rs.append(ev)
52 
56 rs.append(bbr)
57 
59 
61 bd.set_log_level(IMP.SILENT)
62 bd.set_scoring_function(sf)
63 
64 bd.set_maximum_time_step(10)
65 
66 rmf = RMF.create_rmf_file("brownian.rmf")
67 rmf.set_description("Brownian dynamics trajectory with 10fs timestep.\n")
71 
72 os = IMP.rmf.SaveOptimizerState(m, rmf)
73 os.update_always("initial conformation")
74 os.set_log_level(IMP.SILENT)
75 os.set_simulator(bd)
76 bd.add_optimizer_state(os)
77 
78 bd.optimize(frames)
79 
80 print("file is", rmf.get_name())
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
Score particles based on how far outside a box they are.
Vector3D get_random_vector_in(const Cylinder3D &c)
Generate a random vector in a cylinder with uniform density.
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:72
static Hierarchy setup_particle(Model *m, ParticleIndex pi, ParticleIndexesAdaptor children=ParticleIndexesAdaptor())
Create a Hierarchy of level t by adding the needed attributes.
void add_hierarchy(RMF::FileHandle fh, atom::Hierarchy hs)
Simple Brownian dynamics simulator.
static Mass setup_particle(Model *m, ParticleIndex pi, Float mass)
Definition: Mass.h:44
Color get_display_color(unsigned int i)
static Colored setup_particle(Model *m, ParticleIndex pi, Color color)
Definition: Colored.h:62
void add_restraints(RMF::NodeHandle fh, const Restraints &hs)
Periodically dump the state of all associated objects into the RMF file.
static Diffusion setup_particle(Model *m, ParticleIndex pi, Float D)
Definition: Diffusion.h:50
VectorD< 3 > Vector3D
Definition: VectorD.h:395
Prevent a set of particles and rigid bodies from inter-penetrating.
Class to handle individual particles of a Model object.
Definition: Particle.h:41
void add_geometry(RMF::FileHandle file, display::Geometry *r)
Add a single geometry to the file.
VectorD< D > get_random_vector_on(const SphereD< D > &s)
Generate a random vector on a sphere with uniform density.
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.