ó
®™xTc           @   sõ   d  d l  m Z d  d l m Z d  d l Z d  d l m Z d  d l m	 Z	 d  d l
 m Z m Z d  d l m Z d  d l Z e j d ƒ e j d ƒ d	 „  Z d
 Z d Z d „  Z d „  Z d „  Z e d k rñ e ƒ  e ƒ  e ƒ  d GHn  d S(   iÿÿÿÿ(   t   division(   t   approx_equalN(   t   flex(   t   adp_restraints(   t   servert   pdb_interpretation(   t   StringIOi    c          C   s+   d d  l  }  |  j j d d  d d ƒ } | S(   Niÿÿÿÿt   source_infot   liness:	  CRYST1   36.670   40.710   66.290  90.00  90.00  90.00 P 21 21 21    4
ATOM      1  N   THR A   2      -3.791  -8.769  29.092  1.00 24.15           N
ATOM      2  CA  THR A   2      -3.627  -7.675  28.090  1.00 25.97           C
ATOM      3  C   THR A   2      -2.202  -7.127  28.152  1.00 24.18           C
ATOM      4  O   THR A   2      -1.633  -6.984  29.233  1.00 24.71           O
ATOM      5  CB  THR A   2      -4.627  -6.527  28.357  1.00 26.50           C
ATOM      6  OG1 THR A   2      -5.961  -7.056  28.404  1.00 28.79           O
ATOM      7  CG2 THR A   2      -4.548  -5.486  27.255  1.00 27.05           C
ATOM      8  N   LYS A   3      -1.629  -6.832  26.988  1.00 24.44           N
ATOM      9  CA  LYS A   3      -0.266  -6.307  26.901  1.00 25.16           C
ATOM     10  C   LYS A   3      -0.196  -4.896  27.485  1.00 23.66           C
ATOM     11  O   LYS A   3      -1.094  -4.084  27.265  1.00 23.75           O
ATOM     12  CB  LYS A   3       0.199  -6.262  25.438  1.00 26.61           C
ATOM     13  CG ALYS A   3       0.312  -7.619  24.754  0.50 27.88           C
ATOM     14  CG BLYS A   3       0.201  -7.603  24.718  0.50 27.66           C
ATOM     15  CD ALYS A   3       1.436  -8.454  25.347  0.50 27.58           C
ATOM     16  CD BLYS A   3       1.205  -8.570  25.325  0.50 27.30           C
ATOM     17  CE ALYS A   3       1.585  -9.783  24.621  0.50 28.69           C
ATOM     18  CE BLYS A   3       1.213  -9.893  24.575  0.50 28.17           C
ATOM     19  NZ ALYS A   3       0.362 -10.624  24.732  0.50 28.63           N
ATOM     20  NZ BLYS A   3       2.149 -10.873  25.188  0.50 27.40           N
ATOM     21  N   LYS A   4       0.873  -4.612  28.225  1.00 22.24           N
ATOM     22  CA  LYS A   4       1.068  -3.295  28.826  1.00 21.81           C
ATOM     23  C   LYS A   4       2.337  -2.642  28.295  1.00 19.26           C
ATOM     24  O   LYS A   4       3.417  -3.243  28.310  1.00 18.66           O
ATOM     25  CB  LYS A   4       1.156  -3.398  30.354  1.00 23.29           C
ATOM     26  CG  LYS A   4      -0.170  -3.685  31.031  1.00 27.60           C
ATOM     27  CD  LYS A   4      -0.049  -3.681  32.551  1.00 32.16           C
ATOM     28  CE  LYS A   4       0.797  -4.842  33.052  1.00 33.04           C
ATOM     29  NZ  LYS A   4       0.827  -4.892  34.541  1.00 36.05           N
(   t	   iotbx.pdbt   pdbt   inputt   None(   t   iotbxt   pdb_in(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate.pyt
   simple_pdb   s    	s—  CRYST1   26.960   29.455   29.841  90.00  90.00  90.00 P 21 21 21
ATOM      1  N   TYR A  20      10.702  10.331   8.954  1.00 23.81           N
ATOM      2  CA  TYR A  20      11.170   9.547   7.817  1.00 35.69           C
ATOM      3  C   TYR A  20      10.082   8.601   7.319  1.00 28.94           C
ATOM      4  O   TYR A  20       9.756   7.616   7.982  1.00 25.26           O
ATOM      5  CB  TYR A  20      12.426   8.758   8.192  1.00 33.37           C
ATOM      6  CG  TYR A  20      13.016   7.958   7.052  1.00 31.48           C
ATOM      7  CD1 TYR A  20      13.847   8.558   6.115  1.00 36.91           C
ATOM      8  CD2 TYR A  20      12.747   6.602   6.916  1.00 21.36           C
ATOM      9  CE1 TYR A  20      14.389   7.832   5.071  1.00 36.56           C
ATOM     10  CE2 TYR A  20      13.285   5.868   5.875  1.00 29.56           C
ATOM     11  CZ  TYR A  20      14.105   6.487   4.957  1.00 35.08           C
ATOM     12  OH  TYR A  20      14.644   5.760   3.920  1.00 38.73           O
ATOM     13  N   ARG A  21       9.530   8.915   6.149  1.00 38.95           N
ATOM     14  CA  ARG A  21       8.473   8.118   5.525  1.00 38.77           C
ATOM     15  C   ARG A  21       7.250   7.963   6.428  1.00 27.69           C
ATOM     16  O   ARG A  21       7.134   6.992   7.176  1.00 22.82           O
ATOM     17  CB  ARG A  21       9.004   6.747   5.093  1.00 20.00           C
ATOM     18  CG  ARG A  21       8.015   5.920   4.285  1.00 20.00           C
ATOM     19  CD  ARG A  21       8.608   4.577   3.893  1.00 20.00           C
ATOM     20  NE  ARG A  21       7.671   3.771   3.116  1.00 20.00           N
ATOM     21  CZ  ARG A  21       7.939   2.556   2.649  1.00 20.00           C
ATOM     22  NH1 ARG A  21       9.121   2.001   2.879  1.00 20.00           N
ATOM     23  NH2 ARG A  21       7.025   1.895   1.951  1.00 20.00           N
ATOM     24  N   GLY A  22       6.340   8.929   6.351  1.00 24.85           N
ATOM     25  CA  GLY A  22       5.132   8.903   7.154  1.00 29.53           C
ATOM     26  C   GLY A  22       5.373   9.358   8.580  1.00 33.22           C
ATOM     27  O   GLY A  22       5.196  10.531   8.906  1.00 30.06           O
s—  CRYST1   26.960   29.455   29.841  90.00  90.00  90.00 P 21 21 21
ATOM      1  N   TYR A  20      10.702  10.331   8.954  1.00 23.81           N
ATOM      2  CA  TYR A  20      11.170   9.547   7.817  1.00 35.69           C
ATOM      3  C   TYR A  20      10.082   8.601   7.319  1.00 28.94           C
ATOM      4  O   TYR A  20       9.756   7.616   7.982  1.00 25.26           O
ATOM      5  CB  TYR A  20      12.426   8.758   8.192  1.00 33.37           C
ATOM      6  CG  TYR A  20      13.016   7.958   7.052  1.00 31.48           C
ATOM      7  CD1 TYR A  20      13.847   8.558   6.115  1.00 36.91           C
ATOM      8  CD2 TYR A  20      12.747   6.602   6.916  1.00 21.36           C
ATOM      9  CE1 TYR A  20      14.389   7.832   5.071  1.00 36.56           C
ATOM     10  CE2 TYR A  20      13.285   5.868   5.875  1.00 29.56           C
ATOM     11  CZ  TYR A  20      14.105   6.487   4.957  1.00 35.08           C
ATOM     12  OH  TYR A  20      14.644   5.760   3.920  1.00 38.73           O
ATOM     13  N   ARG A  21       9.530   8.915   6.149  1.00 38.95           N
ATOM     14  CA  ARG A  21       8.473   8.118   5.525  1.00 38.77           C
ATOM     15  C   ARG A  21       7.250   7.963   6.428  1.00 27.69           C
ATOM     16  O   ARG A  21       7.134   6.992   7.176  1.00 22.82           O
ATOM     17  CB  ARG A  21       9.004   6.747   5.093  1.00 20.00           C
ATOM     18  CG  ARG A  21       9.445   5.856   6.245  1.00 20.00           C
ATOM     19  CD  ARG A  21      10.004   4.536   5.740  1.00 20.00           C
ATOM     20  NE  ARG A  21      10.410   3.660   6.835  1.00 20.00           N
ATOM     21  CZ  ARG A  21       9.599   2.802   7.446  1.00 20.00           C
ATOM     22  NH1 ARG A  21       8.331   2.702   7.070  1.00 20.00           N
ATOM     23  NH2 ARG A  21      10.055   2.043   8.433  1.00 20.00           N
ATOM     24  N   GLY A  22       6.340   8.929   6.351  1.00 24.85           N
ATOM     25  CA  GLY A  22       5.132   8.903   7.154  1.00 29.53           C
ATOM     26  C   GLY A  22       5.373   9.358   8.580  1.00 33.22           C
ATOM     27  O   GLY A  22       5.196  10.531   8.906  1.00 30.06           O
c          C   s]  t  ƒ  }  t j ƒ  } t j ƒ  } t j j ƒ  } t j d | d | d | d |  d t ƒ  ƒ } | j ƒ  } | j	 j
 } | j ƒ  j ƒ  } | j j d  k	 sŸ t ‚ | j j j d  k sº t ‚ | j j j d  k sÕ t ‚ | j j j d | ƒ | j j j d  k	 st ‚ t | j j j ƒ d k s't ‚ t j | j ƒ  d ƒ } | j j j d | d	 | ƒ }	 t |	 d ƒ srt ‚ d  | j j _ | j ƒ  }
 | j |
 ƒ } | j j j d | d
 |
 ƒ t | j j j ƒ d k sÙt ‚ t j ƒ  } xE | j ƒ  D]7 } | j d k s| j d k rò| j | j  ƒ qòqòW| j | ƒ } d  | j j _ | j j j d | d
 | ƒ t | j j j ƒ d k sˆt ‚ t j! t" g d ƒ } | j j j# d
 | ƒ t | j j j ƒ d k sÕt ‚ | j j j# d
 |
 ƒ t | j j j ƒ d k st ‚ t j! t$ g d ƒ } | j j j# d
 | ƒ t | j j j ƒ d k sYt ‚ d  S(   Nt   mon_lib_srvt   ener_libt   paramst   pdb_inpt   logt
   sites_carti   g        t   gradient_arrayt	   selectioni   s    CA s    N  i   i    (   g        g        g        (%   R   R   R   R   t   master_paramst   extractt   processR   t   geometry_restraints_managert   all_chain_proxiest   pdb_hierarchyt   atomst   extract_xyzt   generic_restraints_managert   reference_managerR   t   AssertionErrort   reference_coordinate_proxiest   reference_torsion_proxiest    add_reference_coordinate_proxiest   lenR   t   vec3_doublet   sizet   target_and_gradientsR   t   get_peptide_c_alpha_selectiont   selectt   add_coordinate_restraintst   size_tt   namet   appendt   i_seqt   boolt   Falset   remove_coordinate_restraintst   True(   R   R   R   R   t   processed_pdb_filet   grmR   R   t   gradst   residualt   ca_selectiont   ca_sites_cartt   tst_iselectiont   atomt   tst_sites_cartR   (    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate.pyt
   exercise_1q   s|    			c          C   s¼  xµt  t d  g D]¤}  t j d t j ƒ  d t j ƒ  d t j t	 j
 ƒ  ƒ d t  d t  d d  ƒ } | j ƒ  } | j d t ƒ } | j j j ƒ  } t j j d d  d	 t ƒ } | j ƒ  } | j ƒ  } | j ƒ  j ƒ  | j ƒ  } t j ƒ  }	 t j ƒ  }
 d
 d d d d d g } x¸ t t | ƒ t | ƒ ƒ D]› \ } } | j | j k sPt ‚ | j | j k sht ‚ | j | j k s€t ‚ | j d k r,| j j  ƒ  | k r,|
 j! | j ƒ |	 j! | j" ƒ q,q,W|
 j# ƒ  t$ | ƒ k sét ‚ t j% | j& ƒ  j# ƒ  |
 ƒ } |  r2| j' j( j) d |	 d |
 d d ƒ nG |  d  k ry| j' j( j) d |	 d |
 d d ƒ | j' j( j* d |
 ƒ n  t j+ t j, | j- ƒ  j. |
 ƒ | j- ƒ  j. |
 ƒ j/ ƒ  ƒ ƒ } d t0 |  ƒ | f GH| d k sàt ‚ t1 t j2 t j, | j- ƒ  j. | ƒ | j- ƒ  j. | ƒ j/ ƒ  ƒ ƒ d ƒ s1t ‚ d d l3 m4 } d d  l5 } d d  l6 } | j7 j7 d t  ƒ } | j- ƒ  } | j8 j9 j: d | d | d t j% | j# ƒ  |
 ƒ d | d | j: j; d d  ƒ ƒ } | j< d | ƒ t j+ t j, | j- ƒ  j. |
 ƒ | j- ƒ  j. |
 ƒ j/ ƒ  ƒ ƒ } d! t0 |  ƒ | f GH|  rK| d" k  sct ‚ n | d k sct | ƒ ‚ t1 t j2 t j, | j- ƒ  j. | ƒ | j- ƒ  j. | ƒ j/ ƒ  ƒ ƒ d ƒ s t ‚ q Wd  S(#   NR   R   t   raw_recordst   strict_conflict_handlingt   force_symmetryR   t   show_summaryR   R   t   CGt   CDt   NEt   CZt   NH1t   NH2t   ARGR   R   t   sigmag{®Gáz„?s)   distance start (use_reference: %s): %6.4fg      @i    iÿÿÿÿ(   t   geometry_restraintst   defaultR   t   sites_cart_selectiont   geometry_restraints_flagst   lbfgs_termination_paramst   max_iterationsiˆ  s)   distance final (use_reference: %s): %6.4fg{®Gázt?(=   R4   R2   R   R   R   R   R   R   t
   std_stringt	   pdb_str_2t
   splitlinesR   t   xray_structureR   R   t   atoms_with_labelsR   R
   R   t	   pdb_str_3t   xray_structure_simplet   construct_hierarchyR   t   reset_i_seqR'   R-   t   zipt   tuplet   resnameR"   R.   R0   t   stripR/   t   xyzR(   R&   R1   t
   scatterersR    R!   R,   R3   t   meant   sqrtR   R+   t   dott   strR   t   maxt   cctbxRK   t&   mmtbx.refinement.geometry_minimizationt   scitbx.lbfgst   flagst
   refinementt   geometry_minimizationt   lbfgst   termination_parameterst   set_sites_cart(   t   use_referenceR5   R6   t   xrs2t   awl2t   pdb_inp3t   xrs3t   ph3t   awl3t   sites_cart_referenceR   t   reference_namest   a2t   a3t   selection_boolt   d1RK   t   mmtbxt   scitbxt   grfR   t	   minimizedt   d2(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate.pyt
   exercise_2À   sŠ    		($

"/" c          C   s5  x}d d d d g D]i}  t  j d t j ƒ  d t j ƒ  d t j t j ƒ  ƒ d t d	 t d
 d  ƒ } | j
 ƒ  } | j d t ƒ } | j j j ƒ  } | j j } t j j d d  d t ƒ } | j ƒ  } | j ƒ  } | j ƒ  j ƒ  | j ƒ  }	 t j ƒ  }
 t j ƒ  } t j ƒ  } d d d d d d d d d g	 } d d d d d d g } xà t t | ƒ t |	 ƒ ƒ D]Ã \ } } | j | j k sŒt ‚ | j | j k s¤t ‚ | j | j k s¼t ‚ | j d k rh| j j  ƒ  | k rh| j! | j ƒ |
 j! | j" ƒ | j j  ƒ  | k r+| j! | j ƒ q+qhqhW| j# ƒ  t$ | ƒ k sMt ‚ t j% | j& ƒ  j# ƒ  | ƒ } |  d k r¢| j' j( j) d | d |
 d | d d ƒ n� |  d k rå| j' j( j) d | d |
 d | d d d d d t ƒ nM |  d k r2| j' j( j) d | d |
 d | d d ƒ | j' j( j* d | ƒ n  t j+ t j, | j- ƒ  j. | ƒ | j- ƒ  j. | ƒ j/ ƒ  ƒ ƒ } d  t0 |  ƒ | f GH| d! k s™t ‚ t1 t j2 t j, | j- ƒ  j. | ƒ | j- ƒ  j. | ƒ j/ ƒ  ƒ ƒ d" ƒ sêt ‚ d# d$ l3 m4 } d# d  l5 } d# d  l6 } | j7 j7 d% t ƒ } t | _8 | j- ƒ  } | j9 j: j; d | d& | d' t j% | j# ƒ  | ƒ d( | d) | j; j< d* d+ ƒ ƒ } | j= d | ƒ t j+ t j, | j- ƒ  j. | ƒ | j- ƒ  j. | ƒ j/ ƒ  ƒ ƒ } d, t0 |  ƒ | f GH|  d1 k r| d- k  s+t ‚ n | d! k s+t | ƒ ‚ t1 t j2 t j, | j- ƒ  j. | ƒ | j- ƒ  j. | ƒ j/ ƒ  ƒ ƒ d" ƒ s t ‚ q Wd  | j' j( _> d  | j' j( _? g  }
 g  } xt | j@ ƒ  D]f } x] | jA ƒ  D]O } xF | jB ƒ  D]8 } |
 j! | j ƒ  jC ƒ  ƒ | j! | j ƒ  jD ƒ  ƒ qÝWqÊWq·Wx? t |
 | ƒ D]. \ } } | j' j( j) d | d | d | ƒ q1Wt$ | j' j( j? ƒ d. k s„t ‚ d  | j' j( _? | j- ƒ  } | j' j( j) d | d | d d  d/ t ƒ t$ | j' j( j? ƒ d. k sèt ‚ | j' j( j) d | d | d d  d/ t ƒ t$ | j' j( j? ƒ d0 k s1t ‚ d  S(2   NR4   R2   t   top_outR   R   R   R?   R@   RA   R   RB   R   R   t   Nt   CAt   CBRC   RD   RE   RF   RG   RH   RI   R   R   R   RJ   g      @t   limitg     €f@t   top_out_potentials)   distance start (use_reference: %s): %6.4fg      @i    iÿÿÿÿ(   RK   RL   R   RM   RN   RO   RP   iˆ  s)   distance final (use_reference: %s): %6.4fg{®Gáz”?i   t   chi_angles_onlyi   (   s   TrueR�   (E   R   R   R   R   R   RQ   RR   RS   R4   R   R   RT   R2   R   R   RU   R   R
   R   RV   RW   RX   R   RY   R'   R-   RZ   R[   R\   R"   R.   R0   R]   R/   R^   R(   R&   R1   R_   R    R!   t   add_torsion_restraintst   remove_torsion_restraintsR`   Ra   R   R+   Rb   Rc   R   Rd   Re   RK   Rf   Rg   Rh   t	   nonbondedRi   Rj   Rk   Rl   Rm   R#   R$   t   modelst   chainst   residuesR   t   extract_i_seq(   Rn   R5   R6   Ro   Rp   t   pdb2Rq   Rr   Rs   Rt   Ru   R   t   min_selectionRv   t   minimize_namesRw   Rx   Ry   Rz   RK   R{   R|   R}   R   R~   R   t   selections_referencet   modelt   chaint   residue(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate.pyt
   exercise_3	  sê    		!($


"/	" 3%t   __main__t   OK(   t
   __future__R    t   libtbx.test_utilsR   R	   R   t   cctbx.array_familyR   Re   R   t   mmtbx.monomer_libraryR   R   t	   cStringIOR   t   randomt   seedt   set_random_seedR   RR   RV   R>   R€   R–   t   __name__(    (    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate.pyt   <module>   s(   	A	O	I	‰