ó
Ä™xTc           @   se  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
 Z 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 m Z d  d l Z d  d l Z d  d l Z d
 Z d d „ Z d d d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z  e! d k rae	 ƒ  Z" e ƒ  e ƒ  e  ƒ  d e" j# ƒ  GHn  d S(   iÿÿÿÿ(   t   division(   t   flexN(   t
   group_args(   t   user_plus_sys_time(   t   simulated_annealing(   t   cartesian_dynamics(   t
   real_space(   t   monomer_librarys•  CRYST1   26.960   29.455   29.841  90.00  90.00  90.00 P 21 21 21
ATOM      1  N   ASP A  18      14.467  12.258  12.105  1.00 21.41           N
ATOM      2  CA  ASP A  18      13.225  13.003  12.273  1.00 34.70           C
ATOM      3  C   ASP A  18      12.437  13.061  10.968  1.00 35.50           C
ATOM      4  O   ASP A  18      12.962  13.483   9.937  1.00 38.48           O
ATOM      5  CB  ASP A  18      13.514  14.418  12.777  1.00 38.15           C
ATOM      6  CG  ASP A  18      12.251  15.231  12.986  1.00 27.39           C
ATOM      7  OD1 ASP A  18      11.675  15.164  14.092  1.00 35.78           O
ATOM      8  OD2 ASP A  18      11.836  15.939  12.044  1.00 30.67           O
ATOM      9  N   ASN A  19      11.178  12.632  11.029  1.00 22.94           N
ATOM     10  CA  ASN A  19      10.286  12.621   9.871  1.00 22.82           C
ATOM     11  C   ASN A  19      10.847  11.832   8.689  1.00 20.25           C
ATOM     12  O   ASN A  19      11.419  12.404   7.762  1.00 33.24           O
ATOM     13  CB  ASN A  19       9.930  14.049   9.443  1.00 28.83           C
ATOM     14  CG  ASN A  19       8.884  14.085   8.345  1.00 26.44           C
ATOM     15  OD1 ASN A  19       8.101  13.149   8.185  1.00 22.64           O
ATOM     16  ND2 ASN A  19       8.867  15.171   7.581  1.00 28.91           N
ATOM     17  N   TYR A  20      10.677  10.514   8.730  1.00 23.81           N
ATOM     18  CA  TYR A  20      11.164   9.645   7.666  1.00 35.69           C
ATOM     19  C   TYR A  20      10.078   8.675   7.210  1.00 28.94           C
ATOM     20  O   TYR A  20       9.800   7.684   7.886  1.00 25.26           O
ATOM     21  CB  TYR A  20      12.403   8.874   8.129  1.00 33.37           C
ATOM     22  CG  TYR A  20      13.017   7.996   7.061  1.00 31.48           C
ATOM     23  CD1 TYR A  20      13.880   8.527   6.111  1.00 36.91           C
ATOM     24  CD2 TYR A  20      12.740   6.636   7.007  1.00 21.36           C
ATOM     25  CE1 TYR A  20      14.446   7.729   5.134  1.00 36.56           C
ATOM     26  CE2 TYR A  20      13.301   5.831   6.034  1.00 29.56           C
ATOM     27  CZ  TYR A  20      14.153   6.382   5.100  1.00 35.08           C
ATOM     28  OH  TYR A  20      14.714   5.584   4.130  1.00 38.73           O
ATOM     29  N   ARG A  21       9.475   8.975   6.062  1.00 38.95           N
ATOM     30  CA  ARG A  21       8.416   8.153   5.478  1.00 38.77           C
ATOM     31  C   ARG A  21       7.232   7.966   6.426  1.00 27.69           C
ATOM     32  O   ARG A  21       7.166   6.988   7.171  1.00 22.82           O
ATOM     33  CB  ARG A  21       8.964   6.795   5.023  1.00 20.00           C
ATOM     34  CG  ARG A  21       7.967   5.947   4.248  1.00 20.00           C
ATOM     35  CD  ARG A  21       8.578   4.619   3.832  1.00 20.00           C
ATOM     36  NE  ARG A  21       7.634   3.793   3.085  1.00 20.00           N
ATOM     37  CZ  ARG A  21       7.914   2.585   2.606  1.00 20.00           C
ATOM     38  NH1 ARG A  21       9.116   2.058   2.795  1.00 20.00           N
ATOM     39  NH2 ARG A  21       6.993   1.904   1.938  1.00 20.00           N
ATOM     40  N   GLY A  22       6.299   8.912   6.390  1.00 24.85           N
ATOM     41  CA  GLY A  22       5.121   8.854   7.235  1.00 29.53           C
ATOM     42  C   GLY A  22       5.429   9.164   8.687  1.00 33.22           C
ATOM     43  O   GLY A  22       5.303  10.306   9.128  1.00 30.06           O
ATOM     44  N   TYR A  23       5.835   8.140   9.432  1.00 27.25           N
ATOM     45  CA  TYR A  23       6.161   8.302  10.844  1.00 34.16           C
ATOM     46  C   TYR A  23       7.511   8.988  11.024  1.00 23.48           C
ATOM     47  O   TYR A  23       8.309   9.064  10.089  1.00 39.30           O
ATOM     48  CB  TYR A  23       6.161   6.946  11.553  1.00 29.65           C
ATOM     49  CG  TYR A  23       4.829   6.231  11.512  1.00 34.88           C
ATOM     50  CD1 TYR A  23       3.865   6.460  12.485  1.00 30.77           C
ATOM     51  CD2 TYR A  23       4.536   5.326  10.500  1.00 32.29           C
ATOM     52  CE1 TYR A  23       2.646   5.809  12.452  1.00 39.91           C
ATOM     53  CE2 TYR A  23       3.320   4.670  10.458  1.00 30.45           C
ATOM     54  CZ  TYR A  23       2.379   4.915  11.436  1.00 37.13           C
ATOM     55  OH  TYR A  23       1.167   4.264  11.398  1.00 38.59           O
ATOM     56  N   SER A  24       7.760   9.485  12.231  1.00 36.25           N
ATOM     57  CA  SER A  24       9.014  10.164  12.536  1.00 26.44           C
ATOM     58  C   SER A  24       9.914   9.295  13.408  1.00 20.40           C
ATOM     59  O   SER A  24       9.451   8.660  14.355  1.00 39.27           O
ATOM     60  CB  SER A  24       8.743  11.501  13.229  1.00 21.07           C
ATOM     61  OG  SER A  24       7.969  12.355  12.404  1.00 34.95           O
ATOM     62  N   LEU A  25      11.202   9.273  13.082  1.00 22.77           N
ATOM     63  CA  LEU A  25      12.170   8.483  13.834  1.00 36.60           C
ATOM     64  C   LEU A  25      13.164   9.380  14.565  1.00 28.89           C
ATOM     65  O   LEU A  25      12.775  10.223  15.373  1.00 38.59           O
ATOM     66  CB  LEU A  25      12.917   7.510  12.914  1.00 27.50           C
ATOM     67  CG  LEU A  25      12.178   6.262  12.416  1.00 38.78           C
ATOM     68  CD1 LEU A  25      11.174   6.594  11.319  1.00 22.10           C
ATOM     69  CD2 LEU A  25      13.171   5.212  11.938  1.00 26.92           C
TER
END
c         C   sc   | r |  j  d | ƒ nF t j d | ƒ } t j d |  d | d d d d d	 d
 d t d | ƒ |  S(   Nt   mean_distancet   restraints_managert   xray_structuret   gradients_calculatort   temperatureiè  t   n_stepsi † t	   time_stepgü©ñÒMb@?t   stop_cm_motiont   stop_at_diff(   t   shake_sites_in_placeR   t(   gradients_calculator_geometry_restraintst   runt   True(   t   xrst   randomt   shiftt   grmt	   grad_calc(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt   shake_sites\   s    			c         C   sÓ   | | g j  d  ƒ d k s! t ‚ t j j d t j j j	 d t
 ƒ j ƒ  } |  d  k	 rr t
 | j _ |  | j _ n  t j j j ƒ  } t j j d t j j ƒ  d t j j ƒ  d | d | d | d	 t
 d
 t
 d | ƒ S(   Ni   t   input_stringt   process_includest   mon_lib_srvt   ener_libt   paramst	   file_namet   raw_recordst   strict_conflict_handlingt   force_symmetryt   log(   t   countt   Nonet   AssertionErrort   iotbxt   philt   parset   mmtbxR   t   pdb_interpretationt   master_params_strR   t   extractt   peptide_linkt   ramachandran_restraintst   rama_potentialt   servert   processR   (   R1   R$   R!   t   pdb_file_namet   master_paramsR   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt   get_processed_pdb_objectl   s"    !c         C   s}   | j  ƒ  j ƒ  j ƒ  } d | k p- d | k } |  j d t d d d | ƒ } t j j d | d t ƒ } | j	 ƒ  | _	 | S(	   Nt   Ht   Dt   show_energiest   plain_pairs_radiusi   t   assume_hydrogens_all_missingt   geometryt   normalization(
   t   scattering_type_registryt   type_count_dictt   keyst   geometry_restraints_managert   FalseR+   t
   restraintst   managerR   t   crystal_symmetry(   t   processed_pdb_fileR
   t	   sctr_keyst   has_hdR<   R	   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt   get_geometry_restraints_manager€   s    	
	c         C   s|   t  j |  j ƒ  ƒ } t d | d d  d d  ƒ } | j d t ƒ } t d | d | ƒ } | j j	 } t
 d | d | d	 | ƒ S(
   NR!   R1   R$   t   show_summaryRF   R
   t   phR   R   (   R   t
   std_stringt
   splitlinesR6   R&   R
   RB   RI   t   all_chain_proxiest   pdb_hierarchyR   (   t   pdb_strR!   RF   R   RA   RO   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt   get_pdb_inputsŽ   s    	c          C   s¯  t  j d ƒ t j d ƒ t d t ƒ }  t |  j j d d ƒ j	 ƒ  ƒ } | j
 d t ƒ } t d |  j j ƒ  d t d d	 d
 |  j ƒ } t j j d | d | d | ƒ } d G| j ƒ  GHt j ƒ  j ƒ  } d | _ d | _ d | _ d | _ d | _ t j d | d | d |  j d d d d d t ƒ | j ƒ  } d G| GH| d k  sVt | ƒ ‚ t j t j |  j j  ƒ  | j! j  ƒ  j" ƒ  ƒ ƒ } d | GH| d k  s«t | ƒ ‚ d  S(   Ni    RP   t   d_ming      @t   use_lattice_symmetryR   R   R   g      ø?R   t   f_obst   r_free_flagsR
   s   start r_work:i¸  id   g        R   t   fmodelR	   t   wxi   t   wci   t   verboses   final r_work:gú~j¼t“x?s    Distance(refined, answer): %6.4fg{®GázÄ?(#   R   t   seedR   t   set_random_seedRQ   t	   pdb_str_1t   absR   t   structure_factorst   f_calct   generate_r_free_flagsRB   R   t   deep_copy_scatterersR   R+   t   f_modelRD   t   r_workt   saR5   R.   t   start_temperaturet   final_temperaturet	   cool_ratet   number_of_stepst   update_grads_shiftR   R   R'   t   meant   sqrtt
   sites_cartR
   t   dot(   t   piRT   RU   t   xrs_poorRV   R   t   rt   dist(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt
   exercise_1œ   sB    !										g      ø?c         C   s  t  j d ƒ t j d ƒ xàt t g D]Ò} t d t ƒ } t | j	 j
 d |  ƒ j ƒ  ƒ } | j d t ƒ } | j	 j ƒ  } | r´ t d | j	 j ƒ  d t d d d	 | j ƒ } n  t j j d
 | d | d | ƒ } d G| j ƒ  GH| j	 j
 d |  ƒ j ƒ  } | j d d ƒ } | j ƒ  | j ƒ  }	 t j j j j d |	 d t j | j	 j ƒ  j ƒ  t ƒ d |  d d d d | j j ƒ }
 t j j j j d |
 d | j ƒ  d d d d d d ƒ } | j  G| j! G| j" GHt# j$ ƒ  j% ƒ  } d | _& d | _' d  | _( d  | _) d! | _* t# j+ d" | d# | d$ t d |	 d% | j d& | j  d' d( d) t ƒ | j ƒ  } d* G| GH| r}| d+ k  s�t, ‚ n | d, k  s�t, ‚ t j- t j. | j	 j/ ƒ  | j0 j/ ƒ  j1 ƒ  ƒ ƒ } d- | GH| rç| d. k  sùt, ‚ q' | d/ k  s' t, ‚ q' Wd  S(0   Ni…ä( RP   RR   RS   R   R   R   g       @R   RT   RU   R
   s   start r_work:t   resolution_factorg      Ð?t
   target_mapt	   selectiont   real_space_gradients_deltai   t   max_iterationsi–   RA   t   refinert   start_trial_weight_valuei   t   rms_bonds_limitg{®Gáz”?t   rms_angles_limiti   iˆ  i    id   g        R   RV   R   R	   RW   RX   g      ð?RY   s   final r_work:gìQ¸…ë±?g{®Gáz¤?s    Distance(refined, answer): %6.4fgffffffÖ?gš™™™™™©?(2   R   RZ   R   R[   R   RB   RQ   R\   R]   R   R^   R_   R`   Ra   R   R   R+   Rb   RD   Rc   t   fft_mapt   apply_sigma_scalingt   real_map_unpaddedt
   refinementR   t   individual_sitest   simplet   boolt
   scattererst   sizeR<   t   refineryt   weight_finalt   rms_bonds_finalt   rms_angles_finalRd   R5   R.   Re   Rf   Rg   Rh   Ri   R   R'   Rj   Rk   Rl   R
   Rm   (   RR   t   shakeRn   RT   RU   Ro   RV   R_   R|   Rt   t   rsr_simple_refinert   refinedR   Rp   Rq   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt
   exercise_2Î   sv    !	
!
											c       	   C   sÒ   t  d t ƒ }  |  j j ƒ  } | j ƒ  } t j j d |  j d | ƒ } t	 j
 ƒ  j ƒ  } d | _ d | _ d | _ d | _ d | _ d | _ t | _ t	 j d	 | d | d
 |  j d | ƒ | j d d ƒ d  S(   NRP   RO   R
   iˆ  i    id   g        gü©ñÒMb@?R   R	   t   states_collectorR    s   all.pdb(   RQ   R\   R   Ra   Rl   R+   t   utilst   statesRK   Rd   R5   R.   Re   Rf   Rg   Rh   Ri   R   R   t   interleave_minimizationR   R   t   write(   Rn   R   t   sites_cart_startR�   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt
   exercise_3  s(    											t   __main__s   Time: %6.2f($   t
   __future__R    t   scitbx.array_familyR   t	   iotbx.pdbR(   t   libtbxR   t   libtbx.utilsR   t   mmtbx.f_modelR+   t   mmtbx.dynamicsR   Rd   R   R   t   mmtbx.refinementR   t   mmtbx.utilsR   t   mmtbx.monomer_library.servert(   mmtbx.monomer_library.pdb_interpretationt,   mmtbx.refinement.real_space.individual_sitesR\   R&   R   R6   RI   RQ   Rr   RŒ   R“   t   __name__t   timert   elapsed(    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/dynamics/tst_sa.pyt   <module>   s8   K			2G		