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)
73 cterminal = residues[-1]
75 xyr.add_particle(cterminal)
76 self.rs.add_restraint(xyr)
80 """Restrain a protein's distance from the z axis to below an upper bound.
82 _include_in_rmf =
True
84 def __init__(self, hier, protein, upper_bound=0.0,
85 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
89 super().
__init__(hier.get_model(), label=label, weight=weight)
92 self.model, upper_bound, consider_radius, sigma)
94 hier, protein, resolution=1)
95 cterminal = residues[-1]
97 xyr.add_particle(cterminal)
98 self.rs.add_restraint(xyr)
102 """Restrain a protein's z coordinate to within a given range.
104 _include_in_rmf =
True
107 upper_bound=0.0, consider_radius=
False, sigma=1.0, term=
'C',
108 label=
None, weight=1.0):
112 super().
__init__(hier.get_model(), label=label, weight=weight)
115 self.model, lower_bound, upper_bound, consider_radius, sigma)
117 hier, protein, resolution=1)
119 terminal = residues[-1]
121 zax.add_particle(terminal)
123 terminal = residues[0]
125 zax.add_particle(terminal)
127 for residue
in residues:
129 zax.add_particle(residue)
132 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
133 p.add_zaxial_restraint(state, residues, lower_bound,
134 upper_bound, sigma, self)
136 self.rs.add_restraint(zax)
140 """Restrain a protein's z coordinate to above a lower bound.
142 _include_in_rmf =
True
145 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
149 super().
__init__(hier.get_model(), label=label, weight=weight)
152 self.model, lower_bound, consider_radius, sigma)
154 hier, protein, resolution=1)
155 cterminal = residues[-1]
157 zax.add_particle(cterminal)
158 self.rs.add_restraint(zax)
162 """Restrain a protein's z coordinate to below an upper bound.
164 _include_in_rmf =
True
167 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
171 super().
__init__(hier.get_model(), label=label, weight=weight)
174 self.model, upper_bound, consider_radius, sigma)
176 hier, protein, resolution=1)
177 cterminal = residues[-1]
179 zax.add_particle(cterminal)
180 self.rs.add_restraint(zax)
184 """Restrain a protein's y coordinate to within a given range.
186 _include_in_rmf =
True
189 upper_bound=0.0, consider_radius=
False, sigma=1.0, term=
'C',
190 label=
None, weight=1.0):
194 super().
__init__(hier.get_model(), label=label, weight=weight)
197 self.model, lower_bound, upper_bound, consider_radius, sigma)
199 hier, protein, resolution=1)
201 terminal = residues[-1]
203 yax.add_particle(terminal)
205 terminal = residues[0]
207 yax.add_particle(terminal)
209 for residue
in residues:
211 yax.add_particle(residue)
214 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
215 p.add_yaxial_restraint(state, residues, lower_bound,
216 upper_bound, sigma, self)
218 self.rs.add_restraint(yax)
222 """Restrain a protein's y coordinate to above a lower bound.
224 _include_in_rmf =
True
227 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
231 super().
__init__(hier.get_model(), label=label, weight=weight)
234 self.model, lower_bound, consider_radius, sigma)
236 hier, protein, resolution=1)
237 cterminal = residues[-1]
239 yax.add_particle(cterminal)
240 self.rs.add_restraint(yax)
244 """Restrain a protein's y coordinate to below an upper bound.
246 _include_in_rmf =
True
249 consider_radius=
False, sigma=1.0, label=
None, weight=1.0):
253 super().
__init__(hier.get_model(), label=label, weight=weight)
256 self.model, upper_bound, consider_radius, sigma)
258 hier, protein, resolution=1)
259 cterminal = residues[-1]
261 yax.add_particle(cterminal)
262 self.rs.add_restraint(yax)
266 """Localize protein on the surface of a half torus in the xy plane.
268 _include_in_rmf =
True
271 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
272 resolution=1, label=
None, weight=1.0):
276 super().
__init__(hier.get_model(), label=label, weight=weight)
279 self.model, tor_R, tor_r, tor_th, sigma)
281 hier, protein, resolution=resolution)
282 for residue
in residues:
284 msl.add_particle(residue)
287 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
288 p.add_membrane_surface_location_restraint(
289 state, residues, tor_R, tor_r, tor_th, sigma, self)
291 self.rs.add_restraint(msl)
295 IMP.pmi.restraints.RestraintBase):
296 """Localize one protein on the surface of a half torus in the xy plane.
298 Create Membrane Surface Location CONDITIONAL Restraint
299 for Nup120 ALPS Motifs - Mutually Exclusive from (135,152,'Nup120')
300 and (197,216,'Nup120').
301 It returns a minimum penalty score from two potential ALPS motifs.
303 _include_in_rmf =
True
306 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
307 resolution=1, label=
None, weight=1.0):
311 super().
__init__(hier.get_model(), label=label, weight=weight)
314 self.model, tor_R, tor_r, tor_th, sigma)
316 hier, protein1, resolution=resolution)
317 for residue
in residues1:
319 msl.add_particle1(residue)
321 hier, protein2, resolution=resolution)
322 for residue
in residues2:
324 msl.add_particle2(residue)
328 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
329 for residues
in residues1, residues2:
330 p.add_membrane_surface_location_restraint(
331 state, residues, tor_R, tor_r, tor_th, sigma, self)
333 self.rs.add_restraint(msl)
337 """Keep protein away from a half torus in the xy plane.
339 _include_in_rmf =
True
342 tor_R=540.0, tor_r=127.5, tor_th=45.0, sigma=0.2,
343 resolution=1, label=
None, weight=1.0):
347 super().
__init__(hier.get_model(), label=label, weight=weight)
350 self.model, tor_R, tor_r, tor_th, sigma)
352 hier, protein, resolution=resolution)
353 for residue
in residues:
354 mex.add_particle(residue)
357 for p, state
in IMP.pmi.tools._all_protocol_outputs(hier):
358 p.add_membrane_exclusion_restraint(
359 state, residues, tor_R, tor_r, tor_th, sigma, self)
361 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.