ó
Ò™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	 Z
 d  d l Z
 d  d l Z d Z d Z d Z d Z d	 Z d
 Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z e d k re j ƒ  Z e ƒ  d e j ƒ  e GHd GHn  d S(   iÿÿÿÿ(   t   divisionN(   t   flex(   t
   group_argss†
  CRYST1   18.415   14.419   12.493  90.00  90.00  90.00 P 1
ATOM      5  O   HOH S   3       5.648   5.054   4.347  1.00 10.00           O
ATOM      6  O   HOH S   4       2.000   5.459   5.854  1.00 10.00           O
ATOM      7  O   HOH S   5       3.498   4.230   8.986  1.00 10.00           O
TER
ATOM      1  N   THR A   1      11.782  12.419   4.645  1.00 10.00           N
ATOM      2  CA  THR A   1      11.671  11.061   4.125  1.00 10.00           C
ATOM      3  C   THR A   1      11.746  10.033   5.249  1.00 10.00           C
ATOM      4  O   THR A   1      12.561  10.157   6.163  1.00 10.00           O
ATOM      5  CB  THR A   1      12.772  10.760   3.092  1.00 10.00           C
ATOM      6  OG1 THR A   1      12.672  11.682   2.000  1.00 10.00           O
ATOM      7  CG2 THR A   1      12.635   9.340   2.565  1.00 10.00           C
TER
ATOM      1  N   THR D   1      13.010   5.595  10.010  1.00 10.00           N
ATOM      2  CA  THR D   1      14.035   5.945   9.034  1.00 10.00           C
ATOM      3  C   THR D   1      15.310   6.423   9.720  1.00 10.00           C
ATOM      4  O   THR D   1      16.415   6.054   9.323  1.00 10.00           O
ATOM      5  CB  THR D   1      13.543   7.038   8.066  1.00 10.00           C
ATOM      6  OG1 THR D   1      13.237   8.229   8.802  1.00 10.00           O
ATOM      7  CG2 THR D   1      12.300   6.572   7.323  1.00 10.00           C
TER
ATOM      1  N   THR B   1       6.768   9.093   9.237  1.00 10.00           N
ATOM      2  CA  THR B   1       7.284   8.654   7.945  1.00 10.00           C
ATOM      3  C   THR B   1       8.638   7.968   8.097  1.00 10.00           C
ATOM      4  O   THR B   1       9.495   8.426   8.852  1.00 10.00           O
ATOM      5  CB  THR B   1       7.423   9.832   6.963  1.00 10.00           C
ATOM      6  OG1 THR B   1       6.144  10.446   6.765  1.00 10.00           O
ATOM      7  CG2 THR B   1       7.962   9.350   5.625  1.00 10.00           C
TER
ATOM      1  N   THR C   1       9.093   2.000  10.493  1.00 10.00           N
ATOM      2  CA  THR C   1       8.879   2.702   9.233  1.00 10.00           C
ATOM      3  C   THR C   1      10.081   3.570   8.875  1.00 10.00           C
ATOM      4  O   THR C   1      10.652   4.241   9.734  1.00 10.00           O
ATOM      5  CB  THR C   1       7.618   3.584   9.284  1.00 10.00           C
ATOM      6  OG1 THR C   1       6.472   2.770   9.559  1.00 10.00           O
ATOM      7  CG2 THR C   1       7.417   4.305   7.960  1.00 10.00           C
TER
ATOM      3  O   HOH E   1       4.021   6.412   7.953  1.00 10.00           O
ATOM      4  O   HOH E   2       4.186   2.319   6.140  1.00 10.00           O
TER
END
s�
  CRYST1   18.415   14.419   12.493  90.00  90.00  90.00 P 1
ATOM      5  O   HOH S   3       5.648   5.054   4.347  1.00 10.00           O
ATOM      6  O   HOH S   4       2.000   5.459   5.854  1.00 10.00           O
ATOM      7  O   HOH S   5       3.498   4.230   8.986  1.00 10.00           O
TER
ATOM      1  N   THR A   1      11.782  12.419   4.645  1.00 10.00           N
ATOM      2  CA  THR A   1      11.671  11.061   4.125  1.00 10.00           C
ATOM      3  C   THR A   1      11.746  10.033   5.249  1.00 10.00           C
ATOM      4  O   THR A   1      12.561  10.157   6.163  1.00 10.00           O
ATOM      5  CB  THR A   1      12.772  10.760   3.092  1.00 10.00           C
ATOM      6  OG1 THR A   1      12.672  11.682   2.000  1.00 10.00           O
ATOM      7  CG2 THR A   1      12.635   9.340   2.565  1.00 10.00           C
TER
ATOM      1  N   THR D   1      13.010   5.595  10.010  1.00 10.00           N
ATOM      2  CA  THR D   1      14.035   5.945   9.034  1.00 10.00           C
ATOM      3  C   THR D   1      15.310   6.423   9.720  1.00 10.00           C
ATOM      4  O   THR D   1      16.415   6.054   9.323  1.00 10.00           O
ATOM      5  CB  THR D   1      13.543   7.038   8.066  1.00 10.00           C
ATOM      6  OG1 THR D   1      13.237   8.229   8.802  1.00 10.00           O
ATOM      7  CG2 THR D   1      12.300   6.572   7.323  1.00 10.00           C
TER
ATOM      1  N   THR B   1       6.279   9.382   8.893  1.00 10.00           N
ATOM      2  CA  THR B   1       7.095   8.715   7.884  1.00 10.00           C
ATOM      3  C   THR B   1       8.190   7.873   8.531  1.00 10.00           C
ATOM      4  O   THR B   1       8.828   8.299   9.493  1.00 10.00           O
ATOM      5  CB  THR B   1       7.741   9.729   6.922  1.00 10.00           C
ATOM      6  OG1 THR B   1       6.718  10.485   6.262  1.00 10.00           O
ATOM      7  CG2 THR B   1       8.586   9.011   5.880  1.00 10.00           C
TER
ATOM      1  N   THR C   1       8.953   1.712   9.905  1.00 10.00           N
ATOM      2  CA  THR C   1       8.573   2.732   8.935  1.00 10.00           C
ATOM      3  C   THR C   1       9.744   3.658   8.623  1.00 10.00           C
ATOM      4  O   THR C   1      10.481   4.067   9.520  1.00 10.00           O
ATOM      5  CB  THR C   1       7.385   3.573   9.434  1.00 10.00           C
ATOM      6  OG1 THR C   1       6.258   2.721   9.672  1.00 10.00           O
ATOM      7  CG2 THR C   1       7.008   4.629   8.406  1.00 10.00           C
TER
ATOM      3  O   HOH E   1       4.021   6.412   7.953  1.00 10.00           O
ATOM      4  O   HOH E   2       4.186   2.319   6.140  1.00 10.00           O
TER      39      HOH E   2
END
s  CRYST1   18.415   14.419   12.493  90.00  90.00  90.00 P 1
ATOM      5  O   HOH S   3       5.648   5.054   4.347  1.00 10.00           O
ATOM      6  O   HOH S   4       2.000   5.459   5.854  1.00 10.00           O
ATOM      7  O   HOH S   5       3.498   4.230   8.986  1.00 10.00           O
TER       4      HOH S   5
ATOM      1  N   THR A   1      11.797  12.521   4.849  1.00 10.00           N
ATOM      2  CA  THR A   1      11.607  11.311   4.057  1.00 10.00           C
ATOM      3  C   THR A   1      11.119  10.155   4.925  1.00 10.00           C
ATOM      4  O   THR A   1      11.603   9.957   6.039  1.00 10.00           O
ATOM      5  CB  THR A   1      12.906  10.893   3.344  1.00 10.00           C
ATOM      6  OG1 THR A   1      13.340  11.949   2.478  1.00 10.00           O
ATOM      7  CG2 THR A   1      12.683   9.631   2.525  1.00 10.00           C
TER      12      THR A   1
ATOM      1  N   THR D   1      13.010   5.595  10.010  1.00 10.00           N
ATOM      2  CA  THR D   1      14.035   5.945   9.034  1.00 10.00           C
ATOM      3  C   THR D   1      15.310   6.423   9.720  1.00 10.00           C
ATOM      4  O   THR D   1      16.415   6.054   9.323  1.00 10.00           O
ATOM      5  CB  THR D   1      13.543   7.038   8.066  1.00 10.00           C
ATOM      6  OG1 THR D   1      13.237   8.229   8.802  1.00 10.00           O
ATOM      7  CG2 THR D   1      12.300   6.572   7.323  1.00 10.00           C
TER      20      THR D   1
ATOM      1  N   THR B   1       6.768   9.093   9.237  1.00 10.00           N
ATOM      2  CA  THR B   1       7.284   8.654   7.945  1.00 10.00           C
ATOM      3  C   THR B   1       8.638   7.968   8.097  1.00 10.00           C
ATOM      4  O   THR B   1       9.495   8.426   8.852  1.00 10.00           O
ATOM      5  CB  THR B   1       7.423   9.832   6.963  1.00 10.00           C
ATOM      6  OG1 THR B   1       6.144  10.446   6.765  1.00 10.00           O
ATOM      7  CG2 THR B   1       7.962   9.350   5.625  1.00 10.00           C
TER      28      THR B   1
ATOM      1  N   THR C   1       9.175   1.430  10.253  1.00 10.00           N
ATOM      2  CA  THR C   1       9.097   2.543   9.315  1.00 10.00           C
ATOM      3  C   THR C   1      10.328   3.438   9.417  1.00 10.00           C
ATOM      4  O   THR C   1      10.801   3.736  10.513  1.00 10.00           O
ATOM      5  CB  THR C   1       7.835   3.394   9.551  1.00 10.00           C
ATOM      6  OG1 THR C   1       6.668   2.578   9.396  1.00 10.00           O
ATOM      7  CG2 THR C   1       7.777   4.547   8.561  1.00 10.00           C
TER      36      THR C   1
ATOM      3  O   HOH E   1       4.021   6.412   7.953  1.00 10.00           O
ATOM      4  O   HOH E   2       4.186   2.319   6.140  1.00 10.00           O
TER      39      HOH E   2
END
s†
  CRYST1   18.415   14.419   12.493  90.00  90.00  90.00 P 1
ATOM      1  O   HOH S   3       5.648   5.054   4.347  1.00 10.00           O
ATOM      2  O   HOH S   4       2.000   5.459   5.854  1.00 10.00           O
ATOM      3  O   HOH S   5       3.498   4.230   8.986  1.00 10.00           O
TER
ATOM      4  N   THR A   1      11.360  12.428   4.988  1.00 10.00           N
ATOM      5  CA  THR A   1      11.640  10.782   4.445  1.00 10.00           C
ATOM      6  C   THR A   1      11.410  10.474   5.073  1.00 10.00           C
ATOM      7  O   THR A   1      12.394  10.079   6.303  1.00 10.00           O
ATOM      8  CB  THR A   1      13.109  11.143   2.643  1.00 10.00           C
ATOM      9  OG1 THR A   1      12.760  11.290   2.263  1.00 10.00           O
ATOM     10  CG2 THR A   1      12.701   9.443   2.402  1.00 10.00           C
TER
ATOM     11  N   THR D   1      13.010   5.595  10.010  1.00 10.00           N
ATOM     12  CA  THR D   1      14.035   5.945   9.034  1.00 10.00           C
ATOM     13  C   THR D   1      15.310   6.423   9.720  1.00 10.00           C
ATOM     14  O   THR D   1      16.415   6.054   9.323  1.00 10.00           O
ATOM     15  CB  THR D   1      13.543   7.038   8.066  1.00 10.00           C
ATOM     16  OG1 THR D   1      13.237   8.229   8.802  1.00 10.00           O
ATOM     17  CG2 THR D   1      12.300   6.572   7.323  1.00 10.00           C
TER
ATOM     18  N   THR B   1       6.970   8.670   9.020  1.00 10.00           N
ATOM     19  CA  THR B   1       7.512   9.099   7.575  1.00 10.00           C
ATOM     20  C   THR B   1       9.003   7.644   7.782  1.00 10.00           C
ATOM     21  O   THR B   1       9.316   8.109   8.577  1.00 10.00           O
ATOM     22  CB  THR B   1       7.065  10.156   6.729  1.00 10.00           C
ATOM     23  OG1 THR B   1       6.149  10.590   6.419  1.00 10.00           O
ATOM     24  CG2 THR B   1       7.542   9.150   6.053  1.00 10.00           C
TER
ATOM     25  N   THR C   1       9.497   2.326  10.790  1.00 10.00           N
ATOM     26  CA  THR C   1       8.804   2.690   9.478  1.00 10.00           C
ATOM     27  C   THR C   1      10.315   3.465   9.108  1.00 10.00           C
ATOM     28  O   THR C   1      10.242   3.818   9.832  1.00 10.00           O
ATOM     29  CB  THR C   1       7.933   3.341   9.276  1.00 10.00           C
ATOM     30  OG1 THR C   1       6.866   2.882   9.784  1.00 10.00           O
ATOM     31  CG2 THR C   1       7.545   4.707   8.366  1.00 10.00           C
TER
ATOM     32  O   HOH E   1       4.021   6.412   7.953  1.00 10.00           O
ATOM     33  O   HOH E   2       4.186   2.319   6.140  1.00 10.00           O
TER
END
sb   
ncs_group {
  master_selection = chain A
  copy_selection = chain B
  copy_selection = chain C
}
sb   
ncs_group {
  master_selection = chain B
  copy_selection = chain C
  copy_selection = chain A
}
t
   n_gaussianc         C   s#   |  j  d | d | d d g ƒ d  S(   Nt   tablet   d_mint'   types_without_a_scattering_contributiont   ?(   t   scattering_type_registry(   t   xray_structureR   t   scattering_table(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt   set_scattering_dictionaryÉ   s    	c         C   s®  d |  } t  | d ƒ } | | IJ| j ƒ  d |  } t  | d ƒ } | | IJ| j ƒ  t j j d | ƒ }	 |	 j ƒ  }
 |
 j ƒ  j ƒ  |	 j ƒ  } | j	 ƒ  } t j j d | ƒ } | j ƒ  } | j ƒ  j ƒ  | j ƒ  } t
 j j d t ƒ j d | j ƒ  ƒ d } t
 j j d | j d	 t ƒ d
 | ƒ t
 j j d | j d t ƒ d t ƒ } t j j d | d | ƒ } | j ƒ  } t d | d | ƒ t d | d | ƒ d" \ } } | rÿ| j d | d d ƒ j ƒ  } | j d d ƒ } | j ƒ  | j ƒ  } n~ t | j d | d d ƒ j ƒ  ƒ } t
 j  j! j" ƒ  } d | _# t
 j  j d | d | d | d d ƒ } d G| GHd G| j$ ƒ  GHt% d | d | d | d | d | d  | d! | ƒ S(#   Ns   answer_%s.pdbt   ws   poor_%s.pdbt	   file_namet   logt   raw_recordsi    t   x1t   show_summaryt   x2t   geometryt   show_energiest   normalizationt
   pdb_stringt   ncs_selection_paramsR	   R   t	   algorithmt   directt   resolution_factorg      Ð?t   f_obst   sf_and_grads_accuracy_paramst   target_namet   ls_wunit_k1s   d_min:s   r_work(start):t   fmodelt   map_datat   xrs_poort
   ncs_groupst   restraints_managert   ph(   NN(&   t   opent   closet   iotbxt   pdbt   inputt   construct_hierarchyt   atomst   reset_i_seqt   xray_structure_simplet
   sites_cartt   mmtbxt   utilst   process_pdb_file_srvt   Falset   process_pdb_filest
   splitlinest   assert_xray_structures_equalR	   t
   restraintst   managert   geometry_restraints_managert   Truet   ncst   get_ncs_restraints_group_listR   t   Nonet   structure_factorst   f_calct   fft_mapt   apply_sigma_scalingt   real_map_unpaddedt   abst   f_modelt#   sf_and_grads_accuracy_master_paramst   extractR   t   r_workR   (   t   prefixt
   pdb_answert   pdb_poort   ncs_params_strt
   real_spaceR   t   pdb_file_name_answert   oft   pdb_file_name_poort   pdb_inp_answert	   ph_answert
   xrs_answert   sites_cart_answert   pdb_inp_poort   ph_poorR!   t   ppfR#   t   ncs_inpR"   R    R   t   fcR?   R   t   params(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt
   get_inputsÐ   sn    





	
			c         C   s†  | | g j  d  ƒ d k s! t ‚ x5t d ƒ D]'} x| D]}	 |	 \ }
 } d } | d  k	 rž t j j j d | d | d | d |  d | d |
 d	 | ƒ } nL t j j j d
 | d | d | d | d | d d |  d | d |
 d	 | ƒ 	} t j j j	 d | d | d | d | d t
 d d d |
 d	 | ƒ } | d  k	 r; | j d | d t ƒ q; q; Wq. W| d  k	 r~| j ƒ  } d G| GH| Sd  Sd  S(   Ni   id   R   t   ncs_restraints_group_listt   refine_selectionR#   t   data_weightt   refine_sitest   refine_transformationsR    R	   t   real_space_gradients_deltai   t   target_and_grads_objectt   finite_grad_differences_testt   max_iterationst   update_f_calcs	   R(final):(   t   countR<   t   AssertionErrort   xrangeR/   t
   refinementt   minimization_ncs_constraintst*   target_function_and_grads_reciprocal_spacet$   target_function_and_grads_real_spacet   lbfgsR2   t   update_xray_structureR9   RF   (   R#   R   R    R   R!   R"   R[   t   actionst   cyclet   actionR]   R^   R\   t	   tg_objectt	   minimizedt   rf(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt   macro_cycle  sT    	!
				c   
      C   s¦   t  d |  d | d | d | d | d | ƒ } t d | j d | j d	 | j d | j d
 | j d | j d | d | ƒ }	 | j j	 | j ƒ | j j
 d d |  ƒ |	 S(   NRG   RI   RH   RJ   RK   R   R#   R   R    R!   R"   R[   Rm   R   s   %s.pdb(   RY   Rs   R#   R   R    R   R!   R"   R$   t   adopt_xray_structuret   write_pdb_file(
   RG   R[   RI   RH   RJ   Rm   RK   R   t   inpt   result(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt   callJ  s&    								c         C   st   t  j j d |  ƒ j ƒ  j ƒ  } t  j j d d |  ƒ j ƒ  j ƒ  } t j | | j ƒ  ƒ j ƒ  j	 ƒ  } | GH| S(   NR   t   answer_(
   R'   R(   R)   R+   t   extract_xyzR   t   sqrtt   dott   min_max_meant   as_tuple(   t   result_file_namet   s1t   s2t   r(    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt   check_result`  s
    !%%c          C   s  t  j t d d ƒ ƒ }  xót t g D]å} d G| GH| rI d } d } n d } d } d | } t d	 | d
 |  d t d t d t d t t g g d | d | ƒ } t	 d | d ƒ } | rû | d d k  sÐ t
 ‚ | d d k  sæ t
 ‚ | d k s9t
 ‚ n> | d d k  st
 ‚ | d d k  s't
 ‚ | d k  s9t
 ‚ d | } t d	 | d
 |  d t d t d t d t t g g d | d | ƒ } t	 d | d ƒ } | rß| d d k  s´t
 ‚ | d d k  sÊt
 ‚ | d k st
 ‚ n> | d d k  sõt
 ‚ | d d k  st
 ‚ | d k  st
 ‚ d | } t d	 | d
 |  d t d t d t d t t g t t g g d | d | ƒ } t	 d | d ƒ } | rÌ| d d k  s¡t
 ‚ | d d k  s·t
 ‚ | d k s
t
 ‚ q% | d d k  sât
 ‚ | d d k  søt
 ‚ | d k  s% t
 ‚ q% Wd S(   s¼   
  NCS constrained refinement of coordinates. Chains A, B and C are
  NCS related, chain D is refined without NCS constraints, chain E is fixed.
  Real- and reciprocal-space refinement.
  i   i   s   real_space:t   Realg      ð?t
   Reciprocalg      @s   tst_%s_TransformsOnly_1RG   R[   RI   RH   RJ   Rm   RK   R   R   s   .pdbi   gš™™™™™¹?i   gš™™™™™©?g{®Gázt?gü©ñÒMbP?g-Cëâ6?s   tst_%s_TransformsOnly_2s   tst_%s_CoordinatesOnlygü©ñÒMb`?N(   R   t   size_tRf   R9   R2   Rx   t
   pdb_poor_0t   pdb_answer_0t   ncs_params_str_0Rƒ   Re   R<   t
   pdb_poor_1t   ncs_params_str_1t
   pdb_poor_2(   R[   RK   t   suffixR   RG   Rr   R‚   (    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt   rung  s|    		
	
	
	t   __main__s   Time: %6.4ft   OK(   t
   __future__R    t-   mmtbx.refinement.minimization_ncs_constraintsR/   t   scitbx.array_familyR   t   libtbxR   t   mmtbx.utilst	   iotbx.pdbR'   t	   iotbx.ncst   timeRˆ   R‡   RŠ   RŒ   R‰   R‹   R   RY   Rs   Rx   Rƒ   RŽ   t   __name__t   t0(    (    (    s`   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/refinement/tst_minimization_ncs_constraints2.pyt   <module>   s0   ,+,,	B	8			U