ó
Û™xTc           @   sš   d  d l  m Z d  d l m Z d  d l m Z d  d l m 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   building(   t   null_out(   t   StringIOc          C   s%  t  ƒ  }  |  j j ƒ  j ƒ  d j ƒ  d j ƒ  } |  j j ƒ  j d ƒ } t j	 d |  j d |  j
 j ƒ  d | ƒ } t | j ƒ  ƒ d d d d	 d
 g k s¡ t ‚ d d l m } d d l m } | j ƒ  } | j ƒ  } xt | j ƒ  D]f \ } }	 |	 j ƒ  j ƒ  j ƒ  j ƒ  } t j | | ƒ }
 t |
 ƒ d k ræ | j d! k sLt ‚ qæ qæ Wd" d# d$ d% d& d' d( g } d d  l } | j j j d d ƒ } xC | D]; \ } } | j j j d d | d | ƒ } | j | ƒ q–Wt ƒ  } t j | j ƒ  d | d d ƒ| j  ƒ  d  k s!t | j  ƒ  ƒ ‚ d  S()   Ni    s   resname TYRt   pdb_hierarchyt   xray_structuret	   selectioni;   i<   i=   i>   i?   iÿÿÿÿ(   t   idealized_aa(   t   servert   ALAt   GLYi   t    i   t   Ai   i   i   i
   t   Bt   idt   resseqs   %4dt   icodet   outt   prefixs     s     chain 'A': 1-2A,4-6,10B
(   R	   R
   (   i   R   (   i   R   (   i   R   (   i   R   (   i   R   (   i   R   (   i
   R   (!   t   get_1yjp_pdbt	   hierarchyt
   only_modelt   chainst   residue_groupst   only_atom_groupt   atom_selection_cacheR   R   t   get_nearby_water_selectiont   inputt   xray_structure_simplet   listt
   iselectiont   AssertionErrort   mmtbx.monomer_libraryR   R   t   residue_dictt	   iteritemst
   only_chaint   only_residue_groupt   generate_sidechain_clusterst   lent   resnamet   iotbx.pdb.hierarchyt   pdbt   chaint   residue_groupt   append_residue_groupR   t   show_chain_resseq_rangest   getvalue(   t   pdb_int   residuet   selet	   water_selR   R   t   mon_lib_srvt
   ideal_dictR'   R   t   resultt   residst   iotbxR*   R   R   t   rgR   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/building/tst.pyt   exercise_model_utils   s6    	)			-"	c          C   s‚  t  ƒ  }  |  j j ƒ  } | j d d ƒ j ƒ  } | j d d ƒ } | j ƒ  j ƒ  } |  j j	 ƒ  } | j
 d ƒ } | j ƒ  j ƒ  } | j d d | ƒ|  j j ƒ  j | j ƒ  ƒ | j ƒ  j ƒ  } t j d | d	 |  j d | d
 | d t d d d t ƒ  ƒ }	 |  j j ƒ  j |	 ƒ | j | ƒ }
 |
 d k s8t ‚ | j |	 ƒ |
 k  sSt ‚ | j | ƒ j |	 j | ƒ ƒ d k s€t ‚ |	 j | ƒ j | j | ƒ ƒ d k s­t ‚ | j | ƒ j |	 j | ƒ ƒ d k sÜt ‚ t j d	 |  j d | d d  d
 | d | d d d t ƒ  ƒ } | j | j d ƒ | j ƒ  | j ƒ  | j ƒ  }	 | j |	 ƒ d k  sft ‚ | j ƒ  d k s~t ‚ d  S(   Nt   d_ming      ø?t   resolution_factorg      Ð?s
   resseq 4:5g333333Ó?R   R   R   t
   target_mapt   rsr_after_annealR   gš™™™™™¹?i    t   processed_pdb_fileg{®Gáz”?i   (   R   R   R   t   structure_factorst   f_calct   fft_mapt   apply_sigma_scalingt   real_map_unpaddedR   R   R   t
   sites_cartt	   deep_copyt   shake_sites_in_placet   atomst   set_xyzR   t   run_real_space_annealingt   FalseR   t   rms_differenceR   t   selectt   box_build_refine_baset   Nonet   restrain_atomst   others_in_boxt   geometry_minimizationt   real_space_refinet   update_original_coordinatest   mean_density_at_sites(   R/   t   xrst   fct   fc_fftt   fc_mapt	   sel_cachet   selt
   sites_origt   sites_shakent	   sites_newt
   rmsd_startt   box_builder(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/building/tst.pyt   exercise_box_rebuild%   sP    			--/		

c          C   s­  t  ƒ  \ }  } |  j ƒ  } | j d ƒ } | j d ƒ } | j j d d d | ƒ | j d t ƒ t j | ƒ \ } } t j	 d | d | d	 | d
 | j ƒ } t
 ƒ  } | j d | d d ƒ g  | j ƒ  j ƒ  D] }	 |	 j d ƒ d ^ qÐ }
 t |
 ƒ d k st ‚ | j d d ƒ j d d ƒ j ƒ  j ƒ  } | j ƒ  d k sIt ‚ | j ƒ  d k sat ‚ t j d | d | d | d | j j ƒ  d | j j ƒ  d |  j ƒ  ƒ } d  S(   Ns.   resseq 5 and (name CD or name OE1 or name NE2)s   resseq 5t   factorg      à?R   t   update_f_calct   fofc_mapt   two_fofc_mapt   atom_selectionR   R   t   two_fofc_cutoffg      @t   :i    t   map_typet   FcR;   g      Ð?i   g        R<   t	   model_mapt	   unit_cellRD   t	   pdb_atoms(   t   get_1yjp_pdb_and_fmodelR   R   R   t	   scale_adpt   update_xray_structuret   TrueR   t   get_difference_mapst   local_density_qualityR   t   show_atoms_outside_densityR.   t
   splitlinest   splitR&   R   t   map_coefficientsRA   RB   RC   t$   number_of_atoms_below_fofc_map_levelt+   fraction_of_nearby_grid_points_above_cutofft   get_model_map_statsRk   RD   RG   (   R   t   fmodelRY   R1   t   sele_allRd   Rc   t	   map_statsR   t   lt   pdb_strsRX   t   stats(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/building/tst.pyt   exercise_map_utilsO   s6    		2	c          C   s›   d d  l  }  t ƒ  } | j j ƒ  } t | j d d ƒ j ƒ  ƒ } | j ƒ  | j ƒ  } |  j	 j
 d | g d | d | d d d	 t d
 t ƒ } | j | f S(   NiÿÿÿÿR:   g      ø?t   xray_structurest   f_obst   r_free_flagst   scattering_tablet
   n_gaussiant   bulk_solvent_and_scalingt   skip_twin_detection(   t   mmtbx.utilsR   R   R   t   absR?   R@   t#   set_observation_type_xray_amplitudet   generate_r_free_flagst   utilst   fmodel_simpleRJ   Rp   R   (   t   mmtbxR/   RU   R@   t   flagsRz   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/building/tst.pyRm   s   s    	
		c          C   s"   d d  l  }  |  j j j d d ƒ S(   Niÿÿÿÿt
   pdb_strings­  CRYST1   21.937    4.866   23.477  90.00 107.08  90.00 P 1 21 1      2
ATOM      1  N   GLY A   1      -9.009   4.612   6.102  1.00 16.77           N
ATOM      2  CA  GLY A   1      -9.052   4.207   4.651  1.00 16.57           C
ATOM      3  C   GLY A   1      -8.015   3.140   4.419  1.00 16.16           C
ATOM      4  O   GLY A   1      -7.523   2.521   5.381  1.00 16.78           O
ATOM      5  N   ASN A   2      -7.656   2.923   3.155  1.00 15.02           N
ATOM      6  CA  ASN A   2      -6.522   2.038   2.831  1.00 14.10           C
ATOM      7  C   ASN A   2      -5.241   2.537   3.427  1.00 13.13           C
ATOM      8  O   ASN A   2      -4.978   3.742   3.426  1.00 11.91           O
ATOM      9  CB  ASN A   2      -6.346   1.881   1.341  1.00 15.38           C
ATOM     10  CG  ASN A   2      -7.584   1.342   0.692  1.00 14.08           C
ATOM     11  OD1 ASN A   2      -8.025   0.227   1.016  1.00 17.46           O
ATOM     12  ND2 ASN A   2      -8.204   2.155  -0.169  1.00 11.72           N
ATOM     13  N   ASN A   3      -4.438   1.590   3.905  1.00 12.26           N
ATOM     14  CA  ASN A   3      -3.193   1.904   4.589  1.00 11.74           C
ATOM     15  C   ASN A   3      -1.955   1.332   3.895  1.00 11.10           C
ATOM     16  O   ASN A   3      -1.872   0.119   3.648  1.00 10.42           O
ATOM     17  CB  ASN A   3      -3.259   1.378   6.042  1.00 12.15           C
ATOM     18  CG  ASN A   3      -2.006   1.739   6.861  1.00 12.82           C
ATOM     19  OD1 ASN A   3      -1.702   2.925   7.072  1.00 15.05           O
ATOM     20  ND2 ASN A   3      -1.271   0.715   7.306  1.00 13.48           N
ATOM     21  N   GLN A   4      -1.005   2.228   3.598  1.00 10.29           N
ATOM     22  CA  GLN A   4       0.384   1.888   3.199  1.00 10.53           C
ATOM     23  C   GLN A   4       1.435   2.606   4.088  1.00 10.24           C
ATOM     24  O   GLN A   4       1.547   3.843   4.115  1.00  8.86           O
ATOM     25  CB  GLN A   4       0.656   2.148   1.711  1.00  9.80           C
ATOM     26  CG  GLN A   4       1.944   1.458   1.213  1.00 10.25           C
ATOM     27  CD  GLN A   4       2.504   2.044  -0.089  0.80 12.43           C
ATOM     28  OE1 GLN A   4       2.744   3.268  -0.190  0.80 14.62           O
ATOM     29  NE2 GLN A   4       2.750   1.161  -1.091  0.80  9.05           N
ATOM     30  N   GLN A   5       2.154   1.821   4.871  1.00 10.38           N
ATOM     31  CA  GLN A   5       3.270   2.361   5.640  1.00 11.39           C
ATOM     32  C   GLN A   5       4.594   1.768   5.172  1.00 11.52           C
ATOM     33  O   GLN A   5       4.768   0.546   5.054  1.00 12.05           O
ATOM     34  CB  GLN A   5       3.056   2.183   7.147  1.00 11.96           C
ATOM     35  CG  GLN A   5       1.829   2.950   7.647  1.00 10.81           C
ATOM     36  CD  GLN A   5       1.344   2.414   8.954  0.80 13.10           C
ATOM     37  OE1 GLN A   5       0.774   1.325   9.002  0.80 10.65           O
ATOM     38  NE2 GLN A   5       1.549   3.187  10.039  0.80 12.30           N
ATOM     39  N   ASN A   6       5.514   2.664   4.856  1.00 11.99           N
ATOM     40  CA  ASN A   6       6.831   2.310   4.318  1.00 12.30           C
ATOM     41  C   ASN A   6       7.854   2.761   5.324  1.00 13.40           C
ATOM     42  O   ASN A   6       8.219   3.943   5.374  1.00 13.92           O
ATOM     43  CB  ASN A   6       7.065   3.016   2.993  1.00 12.13           C
ATOM     44  CG  ASN A   6       5.961   2.735   2.003  1.00 12.77           C
ATOM     45  OD1 ASN A   6       5.798   1.604   1.551  1.00 14.27           O
ATOM     46  ND2 ASN A   6       5.195   3.747   1.679  1.00 10.07           N
ATOM     47  N   TYR A   7       8.292   1.817   6.147  1.00 14.70           N
ATOM     48  CA  TYR A   7       9.159   2.144   7.299  1.00 15.18           C
ATOM     49  C   TYR A   7      10.603   2.331   6.885  1.00 15.91           C
ATOM     50  O   TYR A   7      11.041   1.811   5.855  1.00 15.76           O
ATOM     51  CB  TYR A   7       9.061   1.065   8.369  1.00 15.35           C
ATOM     52  CG  TYR A   7       7.665   0.929   8.902  1.00 14.45           C
ATOM     53  CD1 TYR A   7       6.771   0.021   8.327  1.00 15.68           C
ATOM     54  CD2 TYR A   7       7.210   1.756   9.920  1.00 14.80           C
ATOM     55  CE1 TYR A   7       5.480  -0.094   8.796  1.00 13.46           C
ATOM     56  CE2 TYR A   7       5.904   1.649  10.416  1.00 14.33           C
ATOM     57  CZ  TYR A   7       5.047   0.729   9.831  1.00 15.09           C
ATOM     58  OH  TYR A   7       3.766   0.589  10.291  1.00 14.39           O
ATOM     59  OXT TYR A   7      11.358   2.999   7.612  1.00 17.49           O
TER
HETATM   61  O   HOH A   8      -6.471   5.227   7.124  1.00 22.62           O
HETATM   62  O   HOH A   9      10.431   1.858   3.216  1.00 19.71           O
HETATM   63  O   HOH A  10     -11.286   1.756  -1.468  1.00 17.08           O
HETATM   64  O   HOH A  11      11.808   4.179   9.970  1.00 23.99           O
HETATM   65  O   HOH A  12      13.605   1.327   9.198  1.00 26.17           O
HETATM   66  O   HOH A  13      -2.749   3.429  10.024  1.00 39.15           O
HETATM   67  O   HOH A  14      -1.500   0.682  10.967  1.00 43.49           O
END
(   R(   R)   R   R   (   R7   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/building/tst.pyR   ƒ   s    Ft   __main__t   OKN(   t
   __future__R    RŽ   R   t   libtbx.utilsR   t	   cStringIOR   R9   R`   R€   Rm   R   t   __name__(    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/building/tst.pyt   <module>   s   		*	$		J