IMP logo
IMP Reference Guide  2.18.0
The Integrative Modeling Platform
chain.py
1 ## \example kernel/chain.py
2 # This example shows how to set up an optimization involving several
3 # particles constrained to be connected in a loop. It uses non bonded
4 # lists and a variety of restraints.
5 
6 from __future__ import print_function
7 import IMP.atom
8 import IMP.core
9 import RMF
10 import IMP.container
11 import IMP.rmf
12 import sys
13 
14 IMP.setup_from_argv(sys.argv, "Chain example")
15 
16 # A trivial example that constructs a set of particles which are restrained
17 # to form a chain via bonds between successive particles. In addition
18 # the head and the tail of the chain are restrained to be close to one
19 # another.
20 
21 IMP.set_log_level(IMP.TERSE)
22 m = IMP.Model()
23 m.set_log_level(IMP.SILENT)
24 h = IMP.atom.Hierarchy.setup_particle(m, m.add_particle("root"))
25 # The particles in the chain
26 ps = IMP.core.create_xyzr_particles(m, 10, 1.0)
27 for p in ps:
28  # build a hierarchy with all the particles
29  h.add_child(IMP.atom.Hierarchy.setup_particle(p))
30  # things are expected to have mass
32 chain = IMP.container.ListSingletonContainer(m, ps, "chain")
33 
34 restraints = []
35 # create a spring between successive particles
38 chainr = IMP.container.PairsRestraint(hdps, bonds)
39 chainr.set_name("The chain restraint")
40 restraints.append(chainr)
41 
42 # Prevent non-bonded particles from penetrating one another
43 nbl = IMP.container.ClosePairContainer(chain, 0, 2)
44 bpc = IMP.container.ConsecutivePairFilter(bonds) # exclude existing bonds
45 nbl.add_pair_filter(bpc)
47  "excluded volume")
48 restraints.append(lr)
49 
50 # Tie the ends of the chain
52  (ps[0].get_particle_index(),
53  ps[-1].get_particle_index()))
54 tie.set_name("tie ends")
55 restraints.append(tie)
56 
57 s = IMP.core.MCCGSampler(m) # sample using MC and CG
58 for r in restraints:
59  # set a criteria for what makes a good score
60  r.set_maximum_score(.1)
61 s.set_scoring_function(restraints)
62 s.set_number_of_attempts(10)
63 
64 confs = s.create_sample()
65 print("Found", confs.get_number_of_configurations(), "configurations")
66 fh = RMF.create_rmf_file("solutions.rmfz")
68 for i in range(0, confs.get_number_of_configurations()):
69  confs.load_configuration(i)
70  IMP.rmf.save_frame(fh, str(i))
RMF::FrameID save_frame(RMF::FileHandle file, std::string name="")
Save the current state of the linked objects as a new RMF frame.
Strings setup_from_argv(const Strings &argv, std::string description, std::string positional_description, int num_positional)
Various classes to hold sets of particles.
XYZRs create_xyzr_particles(Model *m, unsigned int num, Float radius, Float box_side=10)
Create a set of particles with random coordinates.
A container which contains all consecutive particle pairs from an input list.
Return all close unordered pairs of particles taken from the SingletonContainer.
Class for storing model, its restraints, constraints, and particles.
Definition: Model.h:73
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)
Store a list of ParticleIndexes.
static Mass setup_particle(Model *m, ParticleIndex pi, Float mass)
Definition: Mass.h:48
A simple sampler.
Definition: MCCGSampler.h:40
void set_log_level(LogLevel l)
Set the current global log level.
Basic functionality that is expected to be used by a wide variety of IMP users.
Applies a PairScore to a Pair.
Definition: PairRestraint.h:29
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.