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().
__init__(hier.get_model(), label=label, weight=weight)
33 self.model, lower_bound, upper_bound, consider_radius, sigma)
35 hier, protein, resolution=1)
37 terminal = residues[-1]
39 xyr.add_particle(terminal)
41 terminal = residues[0]
43 xyr.add_particle(terminal)
45 for residue
in residues:
47 xyr.add_particle(residue)
50 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
51 p.add_xyradial_restraint(state, residues, lower_bound,
52 upper_bound, sigma, self)
54 self.rs.add_restraint(xyr)
58 """Restrain a protein's distance from the z axis to above a lower bound.
60 _include_in_rmf =
True
62 def __init__(self, hier, protein, lower_bound=0.0,
63 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
67 super().
__init__(hier.get_model(), label=label, weight=weight)
70 self.model, lower_bound, consider_radius, sigma)
72 hier, protein, resolution=1)
74 for residue
in residues:
75 xyr.add_particle(residue)
77 self.rs.add_restraint(xyr)
81 """Restrain a protein's distance from the z axis to below an upper bound.
83 _include_in_rmf =
True
85 def __init__(self, hier, protein, upper_bound=0.0,
86 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
90 super().
__init__(hier.get_model(), label=label, weight=weight)
93 self.model, upper_bound, consider_radius, sigma)
95 hier, protein, resolution=1)
97 for residue
in residues:
98 xyr.add_particle(residue)
99 self.rs.add_restraint(xyr)
103 """Restrain a protein's z coordinate to within a given range.
105 _include_in_rmf =
True
108 upper_bound=0.0, consider_radius=
False, sigma=1.0, term=
'C',
109 label=
None, weight=1.0):
113 super().
__init__(hier.get_model(), label=label, weight=weight)
116 self.model, lower_bound, upper_bound, consider_radius, sigma)
118 hier, protein, resolution=1)
120 terminal = residues[-1]
122 zax.add_particle(terminal)
124 terminal = residues[0]
126 zax.add_particle(terminal)
128 for residue
in residues:
130 zax.add_particle(residue)
133 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
134 p.add_zaxial_restraint(state, residues, lower_bound,
135 upper_bound, sigma, self)
137 self.rs.add_restraint(zax)
141 """Restrain a protein's z coordinate to above a lower bound.
143 _include_in_rmf =
True
146 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
150 super().
__init__(hier.get_model(), label=label, weight=weight)
153 self.model, lower_bound, consider_radius, sigma)
155 hier, protein, resolution=1)
157 for residue
in residues:
158 zax.add_particle(residue)
160 self.rs.add_restraint(zax)
164 """Restrain a protein's z coordinate to below an upper bound.
166 _include_in_rmf =
True
169 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
173 super().
__init__(hier.get_model(), label=label, weight=weight)
176 self.model, upper_bound, consider_radius, sigma)
178 hier, protein, resolution=1)
180 for residue
in residues:
181 zax.add_particle(residue)
183 self.rs.add_restraint(zax)
187 """Restrain a protein's y coordinate to within a given range.
189 _include_in_rmf =
True
192 upper_bound=0.0, consider_radius=
False, sigma=1.0, term=
'C',
193 label=
None, weight=1.0):
197 super().
__init__(hier.get_model(), label=label, weight=weight)
200 self.model, lower_bound, upper_bound, consider_radius, sigma)
202 hier, protein, resolution=1)
204 terminal = residues[-1]
206 yax.add_particle(terminal)
208 terminal = residues[0]
210 yax.add_particle(terminal)
212 for residue
in residues:
214 yax.add_particle(residue)
217 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
218 p.add_yaxial_restraint(state, residues, lower_bound,
219 upper_bound, sigma, self)
221 self.rs.add_restraint(yax)
225 """Restrain a protein's y coordinate to above a lower bound.
227 _include_in_rmf =
True
230 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
234 super().
__init__(hier.get_model(), label=label, weight=weight)
237 self.model, lower_bound, consider_radius, sigma)
239 hier, protein, resolution=1)
241 for residue
in residues:
242 yax.add_particle(residue)
244 self.rs.add_restraint(yax)
248 """Restrain a protein's y coordinate to below an upper bound.
250 _include_in_rmf =
True
253 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
257 super().
__init__(hier.get_model(), label=label, weight=weight)
260 self.model, upper_bound, consider_radius, sigma)
262 hier, protein, resolution=1)
264 for residue
in residues:
265 yax.add_particle(residue)
267 self.rs.add_restraint(yax)
271 """Localize protein on the surface of a half torus in the xy plane.
273 _include_in_rmf =
True
276 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
277 resolution=1, label=
None, weight=1.0):
281 super().
__init__(hier.get_model(), label=label, weight=weight)
284 self.model, tor_R, tor_r, tor_th, sigma)
286 hier, protein, resolution=resolution)
287 for residue
in residues:
289 msl.add_particle(residue)
292 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
293 p.add_membrane_surface_location_restraint(
294 state, residues, tor_R, tor_r, tor_th, sigma, self)
296 self.rs.add_restraint(msl)
300 IMP.pmi.restraints.RestraintBase):
301 """Localize one protein on the surface of a half torus in the xy plane.
303 Create Membrane Surface Location CONDITIONAL Restraint
304 for Nup120 ALPS Motifs - Mutually Exclusive from (135,152,'Nup120')
305 and (197,216,'Nup120').
306 It returns a minimum penalty score from two potential ALPS motifs.
308 _include_in_rmf =
True
311 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
312 resolution=1, label=
None, weight=1.0):
316 super().
__init__(hier.get_model(), label=label, weight=weight)
319 self.model, tor_R, tor_r, tor_th, sigma)
321 hier, protein1, resolution=resolution)
322 for residue
in residues1:
324 msl.add_particle1(residue)
326 hier, protein2, resolution=resolution)
327 for residue
in residues2:
329 msl.add_particle2(residue)
333 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
334 for residues
in residues1, residues2:
335 p.add_membrane_surface_location_restraint(
336 state, residues, tor_R, tor_r, tor_th, sigma, self)
338 self.rs.add_restraint(msl)
342 """Keep protein away from a half torus in the xy plane.
344 _include_in_rmf =
True
347 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
348 resolution=1, label=
None, weight=1.0):
352 super().
__init__(hier.get_model(), label=label, weight=weight)
355 self.model, tor_R, tor_r, tor_th, sigma)
357 hier, protein, resolution=resolution)
358 for residue
in residues:
359 mex.add_particle(residue)
362 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
363 p.add_membrane_exclusion_restraint(
364 state, residues, tor_R, tor_r, tor_th, sigma, self)
366 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.