1 """@namespace IMP.pmi.restraints.npc
2 Specialized restraints for modeling the Nuclear Pore Complex.
4 These restraints have been used to model the Nuclear Pore Complex (NPC)
5 but may be useful for other applications too. They model the NPC as lying
6 in the xy plane, centered at the origin. (Transport through the pore
7 corresponds to movement along the z axis.) The surface of the nuclear
8 membrane is represented as the surface of a half torus, also lying in
9 the xy plane and centered at the origin. Individual proteins
10 (or parts of proteins, such as the N- or C- termini) are then localized to
11 different regions of the complex (e.g. near the membrane or pore, or on
12 the nuclear or cytoplasmic side) by simple restraints on their Cartesian
20 """Restrain a protein's distance from the z axis to within a given range.
22 _include_in_rmf =
True
24 def __init__(self, hier, protein, lower_bound=0.0, upper_bound=0.0,
25 consider_radius=
False, sigma=1.0, term=
'C', label=
None,
30 super(XYRadialPositionRestraint, self).
__init__(
31 hier.get_model(), label=label, weight=weight)
34 self.model, lower_bound, upper_bound, consider_radius, sigma)
36 hier, protein, resolution=1)
38 terminal = residues[-1]
40 xyr.add_particle(terminal)
42 terminal = residues[0]
44 xyr.add_particle(terminal)
46 for residue
in residues:
48 xyr.add_particle(residue)
51 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
52 p.add_xyradial_restraint(state, residues, lower_bound,
53 upper_bound, sigma, self)
55 self.rs.add_restraint(xyr)
59 """Restrain a protein's distance from the z axis to above a lower bound.
61 _include_in_rmf =
True
63 def __init__(self, hier, protein, lower_bound=0.0,
64 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
68 super(XYRadialPositionLowerRestraint, self).
__init__(
69 hier.get_model(), label=label, weight=weight)
72 self.model, lower_bound, consider_radius, sigma)
74 hier, protein, resolution=1)
75 cterminal = residues[-1]
77 xyr.add_particle(cterminal)
78 self.rs.add_restraint(xyr)
82 """Restrain a protein's distance from the z axis to below an upper bound.
84 _include_in_rmf =
True
86 def __init__(self, hier, protein, upper_bound=0.0,
87 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
91 super(XYRadialPositionUpperRestraint, self).
__init__(
92 hier.get_model(), label=label, weight=weight)
95 self.model, upper_bound, consider_radius, sigma)
97 hier, protein, resolution=1)
98 cterminal = residues[-1]
100 xyr.add_particle(cterminal)
101 self.rs.add_restraint(xyr)
105 """Restrain a protein's z coordinate to within a given range.
107 _include_in_rmf =
True
110 upper_bound=0.0, consider_radius=
False, sigma=1.0, term=
'C',
111 label=
None, weight=1.0):
115 super(ZAxialPositionRestraint, self).
__init__(
116 hier.get_model(), label=label, weight=weight)
119 self.model, lower_bound, upper_bound, consider_radius, sigma)
121 hier, protein, resolution=1)
123 terminal = residues[-1]
125 zax.add_particle(terminal)
127 terminal = residues[0]
129 zax.add_particle(terminal)
131 for residue
in residues:
133 zax.add_particle(residue)
136 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
137 p.add_zaxial_restraint(state, residues, lower_bound,
138 upper_bound, sigma, self)
140 self.rs.add_restraint(zax)
144 """Restrain a protein's z coordinate to above a lower bound.
146 _include_in_rmf =
True
149 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
153 super(ZAxialPositionLowerRestraint, self).
__init__(
154 hier.get_model(), label=label, weight=weight)
157 self.model, lower_bound, consider_radius, sigma)
159 hier, protein, resolution=1)
160 cterminal = residues[-1]
162 zax.add_particle(cterminal)
163 self.rs.add_restraint(zax)
167 """Restrain a protein's z coordinate to below an upper bound.
169 _include_in_rmf =
True
172 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
176 super(ZAxialPositionUpperRestraint, self).
__init__(
177 hier.get_model(), label=label, weight=weight)
180 self.model, upper_bound, consider_radius, sigma)
182 hier, protein, resolution=1)
183 cterminal = residues[-1]
185 zax.add_particle(cterminal)
186 self.rs.add_restraint(zax)
190 """Restrain a protein's y coordinate to within a given range.
192 _include_in_rmf =
True
195 upper_bound=0.0, consider_radius=
False, sigma=1.0, term=
'C',
196 label=
None, weight=1.0):
200 super(YAxialPositionRestraint, self).
__init__(
201 hier.get_model(), label=label, weight=weight)
204 self.model, lower_bound, upper_bound, consider_radius, sigma)
206 hier, protein, resolution=1)
208 terminal = residues[-1]
210 yax.add_particle(terminal)
212 terminal = residues[0]
214 yax.add_particle(terminal)
216 for residue
in residues:
218 yax.add_particle(residue)
221 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
222 p.add_yaxial_restraint(state, residues, lower_bound,
223 upper_bound, sigma, self)
225 self.rs.add_restraint(yax)
229 """Restrain a protein's y coordinate to above a lower bound.
231 _include_in_rmf =
True
234 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
238 super(YAxialPositionLowerRestraint, self).
__init__(
239 hier.get_model(), label=label, weight=weight)
242 self.model, lower_bound, consider_radius, sigma)
244 hier, protein, resolution=1)
245 cterminal = residues[-1]
247 yax.add_particle(cterminal)
248 self.rs.add_restraint(yax)
252 """Restrain a protein's y coordinate to below an upper bound.
254 _include_in_rmf =
True
257 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
261 super(YAxialPositionUpperRestraint, self).
__init__(
262 hier.get_model(), label=label, weight=weight)
265 self.model, upper_bound, consider_radius, sigma)
267 hier, protein, resolution=1)
268 cterminal = residues[-1]
270 yax.add_particle(cterminal)
271 self.rs.add_restraint(yax)
275 """Localize protein on the surface of a half torus in the xy plane.
277 _include_in_rmf =
True
280 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
281 resolution=1, label=
None, weight=1.0):
285 super(MembraneSurfaceLocationRestraint, self).
__init__(
286 hier.get_model(), label=label, weight=weight)
289 self.model, tor_R, tor_r, tor_th, sigma)
291 hier, protein, resolution=resolution)
292 for residue
in residues:
294 msl.add_particle(residue)
297 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
298 p.add_membrane_surface_location_restraint(
299 state, residues, tor_R, tor_r, tor_th, sigma, self)
301 self.rs.add_restraint(msl)
305 IMP.pmi.restraints.RestraintBase):
306 """Localize one protein on the surface of a half torus in the xy plane.
308 Create Membrane Surface Location CONDITIONAL Restraint
309 for Nup120 ALPS Motifs - Mutually Exclusive from (135,152,'Nup120')
310 and (197,216,'Nup120').
311 It returns a minimum penalty score from two potential ALPS motifs.
313 _include_in_rmf =
True
316 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
317 resolution=1, label=
None, weight=1.0):
321 super(MembraneSurfaceLocationConditionalRestraint, self).
__init__(
322 hier.get_model(), label=label, weight=weight)
325 self.model, tor_R, tor_r, tor_th, sigma)
327 hier, protein1, resolution=resolution)
328 for residue
in residues1:
330 msl.add_particle1(residue)
332 hier, protein2, resolution=resolution)
333 for residue
in residues2:
335 msl.add_particle2(residue)
339 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
340 for residues
in residues1, residues2:
341 p.add_membrane_surface_location_restraint(
342 state, residues, tor_R, tor_r, tor_th, sigma, self)
344 self.rs.add_restraint(msl)
348 """Keep protein away from a half torus in the xy plane.
350 _include_in_rmf =
True
353 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
354 resolution=1, label=
None, weight=1.0):
358 super(MembraneExclusionRestraint, self).
__init__(
359 hier.get_model(), label=label, weight=weight)
362 self.model, tor_R, tor_r, tor_th, sigma)
364 hier, protein, resolution=resolution)
365 for residue
in residues:
366 mex.add_particle(residue)
369 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
370 p.add_membrane_exclusion_restraint(
371 state, residues, tor_R, tor_r, tor_th, sigma, self)
373 self.rs.add_restraint(mex)
Restrain a protein's y coordinate to above a lower bound.
Restrain a protein's z coordinate to within a given range.
Keep protein away from a half torus in the xy plane.
Restrain a protein's distance from the z axis to within a given range.
Restrain particles by their z coordinate.
Restrain particles by their y coordinate.
Restrain particles by their distance from the z axis in the xy plane.
Try to keep one set of particles localized on a membrane surface.
Restrain particles by their z coordinate.
Restrain a protein's distance from the z axis to above a lower bound.
Try to keep particles away from a membrane.
Restrain a protein's y coordinate to within a given range.
Restrain particles by their distance from the z axis in the xy plane.
Localize one protein on the surface of a half torus in the xy plane.
Try to keep particles localized on a membrane surface.
Restrain a protein's distance from the z axis to below an upper bound.
Restrain a protein's z coordinate to below an upper bound.
Localize protein on the surface of a half torus in the xy plane.
Restrain a protein's y coordinate to below an upper bound.
Restraints designed for modeling the Nuclear Pore Complex (NPC)
Restrain particles by their z coordinate.
Restrain particles by their distance from the z axis in the xy plane.
Restrain a protein's z coordinate to above a lower bound.
Restrain particles by their y coordinate.
Restrain particles by their y coordinate.