ó
®™xTc           @   s(  d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l Z d  d l	 j
 j Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z e j d
 ƒ e j d
 ƒ d Z d „  Z d „  Z d d „ Z d „  Z d „  Z d d d „ Z e d k r$e ƒ  d GHn  d S(   iÿÿÿÿ(   t   divisionN(   t   flex(   t   adp_restraints(   t
   group_args(   t
   real_space(   t   RotamerEval(   t   miller(   t   maptbxi    s6  CRYST1   16.960   19.455   19.841  90.00  90.00  90.00 P 1
SCALE1      0.058962  0.000000  0.000000        0.00000
SCALE2      0.000000  0.051401  0.000000        0.00000
SCALE3      0.000000  0.000000  0.050401        0.00000
ATOM      1  N   ASP A  18      14.998  12.244  11.645  1.00 10.00           N
ATOM      2  CA  ASP A  18      13.705  12.852  11.934  1.00 10.00           C
ATOM      3  C   ASP A  18      12.883  13.036  10.662  1.00 10.00           C
ATOM      4  O   ASP A  18      13.419  13.406   9.616  1.00 10.00           O
ATOM      5  CB  ASP A  18      13.893  14.198  12.639  1.00 10.00           C
ATOM      6  CG  ASP A  18      12.576  14.863  12.988  1.00 10.00           C
ATOM      7  OD1 ASP A  18      12.042  14.589  14.083  1.00 10.00           O
ATOM      8  OD2 ASP A  18      12.076  15.662  12.168  1.00 10.00           O
ATOM      9  N   ASN A  19      11.583  12.770  10.766  1.00 10.00           N
ATOM     10  CA  ASN A  19      10.649  12.917   9.651  1.00 10.00           C
ATOM     11  C   ASN A  19      11.021  12.082   8.426  1.00 10.00           C
ATOM     12  O   ASN A  19      11.667  12.571   7.500  1.00 10.00           O
ATOM     13  CB  ASN A  19      10.489  14.392   9.265  1.00 10.00           C
ATOM     14  CG  ASN A  19       9.422  14.608   8.210  1.00 10.00           C
ATOM     15  OD1 ASN A  19       8.499  13.805   8.068  1.00 10.00           O
ATOM     16  ND2 ASN A  19       9.542  15.699   7.461  1.00 10.00           N
ATOM     17  N   TYR A  20      10.605  10.819   8.431  1.00 10.00           N
ATOM     18  CA  TYR A  20      10.853   9.923   7.306  1.00 10.00           C
ATOM     19  C   TYR A  20       9.622   9.083   6.984  1.00 10.00           C
ATOM     20  O   TYR A  20       9.039   8.461   7.872  1.00 10.00           O
ATOM     21  CB  TYR A  20      12.051   9.014   7.591  1.00 10.00           C
ATOM     22  CG  TYR A  20      13.384   9.727   7.571  1.00 10.00           C
ATOM     23  CD1 TYR A  20      14.071   9.919   6.379  1.00 10.00           C
ATOM     24  CD2 TYR A  20      13.957  10.205   8.742  1.00 10.00           C
ATOM     25  CE1 TYR A  20      15.291  10.569   6.354  1.00 10.00           C
ATOM     26  CE2 TYR A  20      15.176  10.856   8.726  1.00 10.00           C
ATOM     27  CZ  TYR A  20      15.838  11.036   7.530  1.00 10.00           C
ATOM     28  OH  TYR A  20      17.052  11.683   7.510  1.00 10.00           O
ATOM     29  N   ARG A  21       9.247   9.073   5.704  1.00 10.00           N
ATOM     30  CA  ARG A  21       8.081   8.343   5.187  1.00 10.00           C
ATOM     31  C   ARG A  21       6.836   8.363   6.082  1.00 10.00           C
ATOM     32  O   ARG A  21       6.119   7.368   6.189  1.00 10.00           O
ATOM     33  CB  ARG A  21       8.450   6.904   4.781  1.00 10.00           C
ATOM     34  CG  ARG A  21       8.957   6.011   5.906  1.00 10.00           C
ATOM     35  CD  ARG A  21       9.297   4.620   5.397  1.00 10.00           C
ATOM     36  NE  ARG A  21       9.792   3.753   6.462  1.00 10.00           N
ATOM     37  CZ  ARG A  21       9.018   2.985   7.221  1.00 10.00           C
ATOM     38  NH1 ARG A  21       7.705   2.974   7.034  1.00 10.00           N
ATOM     39  NH2 ARG A  21       9.555   2.228   8.168  1.00 10.00           N
ATOM     40  N   GLY A  22       6.583   9.505   6.713  1.00 10.00           N
ATOM     41  CA  GLY A  22       5.417   9.664   7.563  1.00 10.00           C
ATOM     42  C   GLY A  22       5.733   9.547   9.041  1.00 10.00           C
ATOM     43  O   GLY A  22       5.411  10.440   9.825  1.00 10.00           O
ATOM     44  N   TYR A  23       6.364   8.441   9.423  1.00 10.00           N
ATOM     45  CA  TYR A  23       6.697   8.193  10.821  1.00 10.00           C
ATOM     46  C   TYR A  23       7.809   9.120  11.303  1.00 10.00           C
ATOM     47  O   TYR A  23       8.750   9.413  10.567  1.00 10.00           O
ATOM     48  CB  TYR A  23       7.103   6.730  11.024  1.00 10.00           C
ATOM     49  CG  TYR A  23       7.345   6.352  12.468  1.00 10.00           C
ATOM     50  CD1 TYR A  23       6.289   6.007  13.302  1.00 10.00           C
ATOM     51  CD2 TYR A  23       8.629   6.335  12.997  1.00 10.00           C
ATOM     52  CE1 TYR A  23       6.504   5.660  14.623  1.00 10.00           C
ATOM     53  CE2 TYR A  23       8.854   5.989  14.317  1.00 10.00           C
ATOM     54  CZ  TYR A  23       7.789   5.652  15.124  1.00 10.00           C
ATOM     55  OH  TYR A  23       8.008   5.307  16.438  1.00 10.00           O
ATOM     56  N   SER A  24       7.692   9.578  12.545  1.00 10.00           N
ATOM     57  CA  SER A  24       8.685  10.471  13.130  1.00 10.00           C
ATOM     58  C   SER A  24       9.375   9.821  14.325  1.00 10.00           C
ATOM     59  O   SER A  24       8.725   9.448  15.302  1.00 10.00           O
ATOM     60  CB  SER A  24       8.037  11.791  13.551  1.00 10.00           C
ATOM     61  OG  SER A  24       7.455  12.450  12.440  1.00 10.00           O
ATOM     62  N   LEU A  25      10.694   9.688  14.240  1.00 10.00           N
ATOM     63  CA  LEU A  25      11.474   9.083  15.315  1.00 10.00           C
ATOM     64  C   LEU A  25      11.794  10.103  16.403  1.00 10.00           C
ATOM     65  O   LEU A  25      10.928  10.472  17.196  1.00 10.00           O
ATOM     66  CB  LEU A  25      12.769   8.468  14.772  1.00 10.00           C
ATOM     67  CG  LEU A  25      12.681   7.150  13.995  1.00 10.00           C
ATOM     68  CD1 LEU A  25      12.147   7.356  12.583  1.00 10.00           C
ATOM     69  CD2 LEU A  25      14.037   6.460  13.961  1.00 10.00           C
TER
END
c         C   s‚   t  j |  j ƒ  ƒ } t j d | d d  d d  ƒ } | j d t ƒ } t j d | d | ƒ } | j	 j
 } t d | d | d	 | ƒ S(
   Nt   raw_recordst   rama_potentialt   logt   show_summaryt   processed_pdb_filet   xray_structuret   pht   grmt   xrs(   R   t
   std_stringt
   splitlinest   rst   get_processed_pdb_objectt   NoneR   t   Falset   get_geometry_restraints_managert   all_chain_proxiest   pdb_hierarchyR   (   t   pdb_strR   R   R   t   geometry_restraints_managerR   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   get_pdb_inputs`   s    		c         C   sƒ   |  j  j ƒ  j d d ƒ } |  j j d | ƒ j d | ƒ j ƒ  } | j d d ƒ } | j ƒ  | j	 ƒ  } t
 d | d | d	 | ƒ S(
   Nt   strings0   name CA or name CB or name N or name O or name Ct	   selectiont   d_mint   resolution_factorg      Ð?t   datat   miller_arrayt   crystal_gridding(   R   t   atom_selection_cacheR   R   t   selectt   structure_factorst   f_calct   fft_mapt   apply_sigma_scalingt   real_map_unpaddedR   (   t   inpR   t   selR'   R(   t
   target_map(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   get_tmon   s    	
c         C   ss   d d l  m } | r) |  j d | ƒ nF | j d | ƒ } | j d |  d | d d d	 d
 d d d t d | ƒ |  S(   Niÿÿÿÿ(   t   cartesian_dynamicst   mean_distancet   restraints_managerR   t   gradients_calculatort   temperatureiè  t   n_stepsi † t	   time_stepgü©ñÒMb@?t   stop_cm_motiont   stop_at_diff(   t   mmtbx.dynamicsR/   t   shake_sites_in_placet(   gradients_calculator_geometry_restraintst   runt   True(   R   t   randomt   shiftR   R/   t	   grad_calc(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   shake_sites{   s    			c         C   sJ   |  j  j d | ƒ j ƒ  } t j d |  j d | ƒ } | j ƒ  | j ƒ  S(   NR   R#   t   fourier_coefficients(   R"   t!   structure_factors_from_scatterersR'   R   R(   R#   R)   R*   (   R-   R   t   mcR(   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   compute_mapŒ   s    			
c         C   s´  t  d | d | ƒ } t j d | j ƒ  d | j j ƒ  ƒ j ƒ  } | j d | j ƒ  ƒ } | j ƒ  d } | j	 ƒ  d }	 d | | |	 | f GH|  j
 | ƒ t ƒ  }
 x|  j ƒ  D]ú } xñ | j ƒ  D]ã } xÚ | j ƒ  D]Ì } | j ƒ  j ƒ  } t j d | j ƒ  d	 | j ƒ  d
 | j ƒ  d | d t j | j ƒ  d ƒ ƒ } t j d | j | ƒ j ƒ  d | j j | ƒ j ƒ  ƒ j ƒ  } d } | | | j |
 j | ƒ | f GHqØ WqÅ Wq² Wd  S(   NR-   R   t   xt   yt
   sites_carti   s8   %s: overall CC: %6.4f rmsd_bonds=%6.3f rmsd_angles=%6.3ft	   unit_cellt
   fft_n_realt
   fft_m_realt
   site_radiis   %s: %4s %10s CC: %6.4f(   RD   R   t   linear_correlationt   as_1dR!   t   coefficientt   energies_sitesRG   t   angle_deviationst   bond_deviationst   adopt_xray_structureR   t   modelst   chainst   residuest   atomst   extract_xyzR   t   grid_indices_around_sitesRH   t   focust   allt   doublet   sizeR%   t   resnamet   evaluate_residue(   R   t   tmR   R   t   prefixt   mapt   cct   est   rmsd_at   rmsd_bt   rotamer_managert   modelt   chaint   residueRG   R,   t   ccrt   fmt(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   show•   s4    				!i   iGô c         C   sT  t  d t ƒ } | j j ƒ  } t d | d |  ƒ } | j j d d ƒ t d d d | j d	 | d
 | d | j j	 ƒ g  } g  } | j j
 ƒ  } | j ƒ  xw | j j ƒ  D]f } x] | j ƒ  D]O }	 xF |	 j ƒ  D]8 }
 | j |
 j ƒ  j ƒ  ƒ | j |
 j ƒ  j ƒ  ƒ qÏ Wq¼ Wq© Wg  } g  } xÌ | j j ƒ  D]» } x² | j ƒ  D]¤ }	 x› |	 j ƒ  D]� }
 t j ƒ  } t j ƒ  } xR |
 j ƒ  D]D } | j j ƒ  j ƒ  d. k r€| j | j ƒ | j | j ƒ q€q€W| j | ƒ | j | ƒ qUWqBWq/Wt d
 | j ƒ  d t d d d | j ƒ } | j j | ƒ | j j d d ƒ xd d d d g D]þ} | j j d | j ƒ  ƒ } | j j | ƒ t  j! | ƒ t j" | ƒ d d GHd G| GHd d GHt d d d | j d	 | d
 | d | j j	 ƒ | d k ra| j j	 j# j$ j% d | ƒ xT t& | | ƒ D]@ \ } } | j j	 j# j$ j' d | d | d | d t( d d ƒ qWn  | d k rÀ| j j	 j# j$ j% d | ƒ | j j	 j# j$ j' d | d | j ƒ  d t( d d ƒ n  | d k r?| j j	 j# j$ j% d | ƒ xT t& | | ƒ D]@ \ } } | j j	 j# j$ j' d | d | d | d t( d d ƒ qøWn  | j ƒ  } t) j* d | j+ d t j, | j- ƒ  j. ƒ  t( ƒ d |  d  d! d" d# | j j	 ƒ } t) j/ d$ | d% t( d& | d' d( d) d* d+ d ƒ } | j0 d  k	 sßt2 ‚ | j3 | j0 ƒ } | j j | ƒ t d d, d | j d	 | d
 | d | j j	 ƒ | j j d d- t4 | ƒ ƒ qNWd  S(/   NR   R+   R   t	   file_names	   start.pdbR`   t   GOODR   R_   R   R   t   OR=   R>   g       @s   poor.pdbt   not   yes_add_oncet   yes_add_per_residuet
   yes_manualRG   t   *iO   s   use_reference_torsion:t   STARTR   t   chi_angles_onlyt   sigmai   R-   t   real_space_gradients_deltai   t   max_iterationsiô  R   t   refinert   optimize_weightR   t   start_trial_weight_valuei2   t   rms_bonds_limitg{®Gáz”?t   rms_angles_limitt   FINALs   final_%s.pdb(   Ro   (5   R   R   R   t   deep_copy_scatterersR.   R   t   write_pdb_fileRl   R   t   geometryt	   deep_copyt   reset_i_seq_if_necessaryRS   RT   RU   t   appendRV   RW   t   extract_i_seqR   t   vec3_doublet   size_tt   namet   stript   uppert   xyzt   i_seqR@   R   RR   RO   RG   R=   t   seedt   set_random_seedt   generic_restraints_managert   reference_managert   remove_chi_angle_restraintst   zipt   add_torsion_restraintsR<   R   t   simpleR!   t   boolt
   scatterersR\   t   refineryt   sites_cart_resultR   t   AssertionErrort   replace_sites_cartt   str(   R   t   random_seedR+   t   xrs_goodR-   t   sites_cart_referencet   selections_referencet   pdb_hierarchy_referenceRg   Rh   Ri   t!   sites_cart_reference_for_chi_onlyt!   selections_reference_for_chi_onlyt   s1t   s2t   atomt   xrs_poort   use_reference_torsionRc   RG   R   t   tmpt   rsr_simple_refinert   refined(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   exercise±   s²    .
%			.
			
		.t   __main__t   OK(    t
   __future__R    t	   iotbx.pdbt   iotbxt   cctbx.array_familyR   t   cctbxR   R=   t$   mmtbx.command_line.real_space_refinet   command_linet   real_space_refineR   t   libtbxR   t   mmtbx.refinementR   t   mmtbx.rotamer.rotamer_evalR   R   R   RŽ   R�   R   R   R.   R   R@   RD   Rl   R¬   t   __name__(    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/geometry_restraints/tst_reference_coordinate2.pyt   <module>   s,   N					a