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.