ó
‘™xTc           @   sû   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l Z d  d l	 m
 Z
 m Z d  d l m Z d  d l Z d „  Z e j j d d	 d
 e j j ƒ Z d d d d d g Z d „  Z d „  Z d „  Z e d k r÷ e ƒ  e ƒ  e ƒ  d GHn  d S(   iÿÿÿÿ(   t   division(   t   reflectionst   models(   t   file_readerN(   t   approx_equalt   Exception_expected(   t   Sorryc         C   s%   t  j j d |  d t j j ƒ } | S(   Nt   relative_patht   test(   t   libtbxt   envt   find_in_repositoriest   ost   patht   isfile(   t	   file_namet	   full_path(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyt	   find_file
   s    R   t   phenix_regressionR   s$   refinement.input.xray_data.file_names1   refinement.input.xray_data.r_free_flags.file_names'   refinement.input.neutron_data.file_names4   refinement.input.neutron_data.r_free_flags.file_names.   refinement.input.experimental_phases.file_namec    7         sæ  t  j d t ƒ }  d d l m } d d l m } d d l m } | j d dl d d ƒ } | j	 d | d t
 d d ƒ } | j ƒ  j ƒ  } | j | ƒ } | j | ƒ } | j d | d | ƒ }	 |	 j ƒ  }
 |
 j ƒ  } |
 j d d d d ƒ } | j | d d ƒd } | j ƒ  j | ƒ |  j d | d d ƒ t
 k s@t ‚ |  j d | d d ƒ t k sdt ‚ |  j d d ƒ |  j d | ƒ k o–d g k n s¡t ‚ |  j d | d t ƒ |  j d | d t
 ƒ k oßd g k n sêt ‚ t d |  j d | d d ƒ ƒ st ‚ t  j d t ƒ }  | j | ƒ } | j | ƒ } | j d | d | ƒ } |
 j d d  ƒ } | j | d d! ƒ| j | d d" ƒ| j | j ƒ  d d# ƒd } | j ƒ  j | ƒ |  j d | d d ƒ t
 k sçt ‚ xE t t d$ d% !ƒ D]0 \ } } |  j d | d | ƒ t k sût ‚ qûW|  j d d ƒ |  j d | ƒ k odd" d# g k n sot ‚ |  j d | d t ƒ d" g k s–t ‚ |  j d | d t
 ƒ d# g k s½t ‚ |  j d | ƒ |  j d d ƒ |  j d | ƒ k o|  j d | ƒ k od& d' d( g k n s(t ‚ |  j  d d ƒ d' d( g k sMt ‚ |  j! d d ƒ set ‚ |  j" d) d& d d ƒ d  k s‰t ‚ |  j" d) d" d d ƒ d$ k s­t ‚ |  j$ ƒ  \ } } t | d* d+ d, ƒsÚt ‚ t | d d+ d, ƒsõt ‚ |  j% ƒ  d k st ‚ |  j& ƒ  d- k s%t ‚ |  j& d. d/ ƒ d0 k sCt ‚ t' |
 j ƒ  ƒ } |
 j( d1 t
 ƒ } | j d | j | ƒ ƒ } | j) | dm ƒ } | j d | ƒ } | j* ƒ  s¸t ‚ d d3 l+ m, ‰  d d  l+ } d4 ˆ  f ‡  f d5 †  ƒ  Y} |
 j d d6 ƒ } | j | d d7 d8 | ƒ  d9 d: ƒ| j | d d; d9 d< ƒ| j | d d= d8 | ƒ  ƒ|
 j- d d  ƒ j. | ƒ } | j | d d> d8 | j/ j0 ƒ  ƒ| j | d d? ƒd@ } | j ƒ  j | ƒ t  j d dA g ƒ }  |  j d | d dA ƒ |  j1 d | ƒ st ‚ |  j2 d | ƒ } | dB dC g k s/t ‚ |  j3 d | ƒ } | dD dB d7 g k sbt | ƒ ‚ |  j4 d | ƒ }  |  j5 d | ƒ }! |! dE g k s›t ‚ |  j6 d | ƒ }" |" dB dC g k sËt |" ƒ ‚ |  j7 d | ƒ }# t  j8 |# ƒ dF k søt ‚ t  j9 | dG dH ƒ}$ |$ j: ƒ  st ‚ y t  j9 | ƒ }$ Wn t; k
 rEn Xt< ‚ |  j= d | ƒ dB dI g k spt ‚ | } t> j? | ƒ }# |# j@ }% t t  jA |% ƒ d d+ dJ ƒs²t ‚ g  }& xf |% jB D][ }' t  jC |' ƒ \ }( }) |) d- k sït ‚ tD |( ƒ d k s	t ‚ |& jE t  jF |' ƒ ƒ qÂW|& dK dL dM dN dO dP g k sK	t |& ƒ ‚ t  j ƒ  }* |* jG dQ |# ƒ |* j! ƒ  sz	t ‚ |* jH d | ƒ dR k s˜	t ‚ |* jI d | ƒ dn k s¶	t ‚ | j d | jJ | tK dU dV ƒ ƒ ƒ }+ | j d | jJ | tK d$ d2 ƒ ƒ ƒ }, | j d | jJ | tK dU d2 ƒ ƒ ƒ }- | j | jJ | tK d$ d$ ƒ ƒ ƒ }. ˆ  dW dX ƒ }/ |+ j d dY d8 |/ ƒ } | j |, d dZ d8 |/ ƒ| j |- d d[ d8 |/ ƒ| j |. d d\ d8 |/ ƒd] } | j ƒ  j | ƒ t  j d d^ dA g ƒ }  |  j d | d d^ ƒ |  jL d | ƒ d_ g k s)t ‚ |  j d | ƒ g  k sGt ‚ |  j3 d | ƒ }0 t' |0 ƒ d% k sqt ‚ |  jM d | ƒ }1 |1 d` da db dc g k s¡t ‚ t' |  jN d | dd t
 ƒ ƒ d2 k sËt ‚ |  jL d | de t
 ƒ }2 |2 dY g k søt ‚ t> j? | ƒ j@ }% t  j2 |% ƒ }3 |3 df dg dh g k s4t ‚ t  jO |% ƒ }3 |3 df dh g k s[t ‚ t  jP | ƒ }$ t' |$ ƒ di k s‚t ‚ t> j? | ƒ }4 t  j8 |4 ƒ dF k s¬t ‚ t  jQ dj dk ƒ \ }5 }6 |5 d  k	 rÜ|6 d  k	 sât ‚ d  S(o   Nt   allowed_param_namesiÿÿÿÿ(   t   miller(   t   crystal(   t   flext	   unit_celli   i(   iZ   ix   t   space_group_symbols   P 61 2 2t   crystal_symmetryt   anomalous_flagt   d_ming      ø?t   datat   sigmast   column_root_labels   F-obst
   wavelengthg¤p=
×£ø?s   R-free-flagss   tst_iotbs_gui_tools.mtzR   t   file_param_names$   refinement.input.xray_data.file_names1   refinement.input.xray_data.r_free_flags.file_namet   neutront   labelss   F-obs,SIGF-obss
   F-obs-xrays   F-obs-neutrons   R-free-flags-xrays   R-free-flags-neutroni   i   s   F-obs-xray,SIGF-obs-xrays%   F-obs-neutron(+),SIGF-obs-neutron(+),s$   F-obs-neutron(-),SIGF-obs-neutron(-)t
   array_nameg{®Gáú9@t   epsg{®Gáz„?s   30 30 40 90 90 120t	   separatort   ,s   30,30,40,90,90,120t   degi    (   t   label_decoratort   resolve_label_decoratorc              s&   e  Z ‡  f d  †  Z ‡  f d †  Z RS(   c            s   ˆ  j  |  | | Ž d S(   Nt   M(   t   phases(   t   selft   argst   kwds(   R(   (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyR+   ‚   s    c            s   ˆ  j  |  | | Ž d S(   NR*   (   t   hendrickson_lattman(   R,   R-   R.   (   R(   (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyR/   „   s    (   t   __name__t
   __module__R+   R/   (    (   R(   (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyR)   �   s   t   FPt   PHIMR(   t   column_typest   Pt   FOMMt   Wt   HLt   FWTt
   FreeR_flags   tst_iotbx_gui_tools_resolve.mtzt
   map_coeffss   FWT,PHWTs   FP,PHIM,FOMMs   HLAM,HLBM,HLCM,HLDMs   FP SIGFPs   /crystal/datasett   f_labels   FP,SIGFPs   FP,SIGFP PHIM FOMMg-Cëâ6?t	   Amplitudet   Phasest   Weightss	   HL coeffss
   Map coeffss   R-free flagt
   input_files   (25.981 - 1.500)s   (25.981)s   (1.500)g      à?gš™™™™™é?t   phases_prefixt   PHs   F-modelt   2FOFCWTt   FOFCWTt   2FOFCWT_no_fills"   tst_iotbx_gui_tools_map_coeffs.mtzt   fmodels   F-model,PHF-models	   PHF-modelt	   PH2FOFCWTt   PHFOFCWTt   PH2FOFCWT_no_fillt   allow_conversiont   first_column_onlys   2FOFCWT,PH2FOFCWTs   FOFCWT,PHFOFCWTs!   2FOFCWT_no_fill,PH2FOFCWT_no_filli   t   Seg‡ÙÎ÷Sï?(   i   i   i(   iZ   iZ   ix   (   i    i    i    i    (   s   (25.981)s   (1.500)(R   R   t   reflections_handlert
   phil_namest   cctbxR   R   t   cctbx.array_familyR   t   symmetryt	   build_sett   Truet   indicest   sizet   random_doublet   arrayt   average_bijvoet_matest   generate_r_free_flagst   as_mtz_datasett   add_miller_arrayt
   mtz_objectt   writet   set_param_filet   AssertionErrort   Falset   get_rfree_labelsR   t   get_wavelengtht	   deep_copyt	   enumeratet   check_symmetryt   get_data_labelst   get_amplitude_labelst   get_anomalous_data_labelst   has_anomalous_datat   get_rfree_flag_valuet   Nonet	   d_max_mint   space_group_as_strt   unit_cell_as_strt   lent0   random_phases_compatible_with_phase_restrictionsR/   t   is_hendrickson_lattman_arrayt	   iotbx.mtzR(   t   customized_copyt   phase_transfert   mtzt   ccp4_label_decoratort   has_datat   get_map_coeff_labelst   get_phase_deg_labelst   get_experimental_phase_labelst   get_data_labels_for_wizardt   get_map_coeff_labels_for_buildt   get_filet   get_mtz_label_prefixt   map_coeffs_from_mtz_filet   is_complex_arrayR   R   t   get_map_coeff_labels_for_fftR   t   any_filet   file_servert   get_high_resolutiont   miller_arrayst   get_miller_array_symmetryt   strt   appendt   get_array_descriptiont	   save_filet   get_resolution_ranget   get_resolution_limitst   complex_doublet   complext   get_fmodel_labelst   get_phase_column_labelst   get_amplitude_column_labelst   get_map_coeffs_for_buildt    extract_phenix_refine_map_coeffst   get_fp_fpp_from_sasaki(7   t   hkl_handlerR   R   R   t   symmt
   miller_sett   n_reflR   R   t   f_obst   f_obs_mergedt   flagst   mtz_datasetR   t   data_neutront   sigmas_neutront   f_obs_neutront   it	   phil_namet   d_maxR   t   n_refl_mergedt	   phi_arrayt	   fom_arrayt   hl_datat	   hl_coeffst   iotbxR)   t   fwt_mapt   resolve_filet   l1t   l2t   l3t   l4t   l5t   hkl_inR;   t
   hkl_servert   descriptionst   miller_arrayt   sgt   uct   handlerRF   t   m1t   m2t   m3t   dect
   phi_labelst   phi_colst   fc_colst
   map_labelst   hkl_filet   fpt   fpp(    (   R(   sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyt   exercise_reflections   s°   							.		 											
		!		''$						c          C   s…  t  j d t ƒ }  t d  k r' d GHd  St j j t d d ƒ } |  j d | ƒ y |  j	 d | ƒ Wn t
 k
 rv n Xt ‚ t j j t d d ƒ } |  j d | ƒ |  j d | ƒ d g k sÆ t ‚ |  j d | ƒ g  k sä t ‚ t j j t d d ƒ } t  j d d	 g ƒ }  |  j d | d
 d	 ƒ |  j d
 d	 ƒ } t | ƒ d k sQt ‚ |  j d
 d	 d t ƒ } t | ƒ d k s�t ‚ d  S(   NR   sI   phenix_regression not found, skipping exercise_other_reflection_formats()t   reflection_filess   enk.hklR   s	   merge.scas   I(+),SIGI(+),I(-),SIGI(-)s   dano.mtzt   labinR    i   t   allow_reconstructed_amplitudesi    (   R   RM   RN   t   regression_dirRk   R   R   t   joinRŠ   Re   R   R   t   get_intensity_labelsR_   Rg   R^   Rh   Ro   R`   (   R•   t   cns_filet   sca_filet	   dano_fileR"   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyt!   exercise_other_reflection_formats   s4    		c          C   sæ  t  d  k r d GHd  St j d d d g d d g d d g d d g d	 t j ƒ  ƒ }  |  j d g ƒ t j j	 d
 d d t j
 j ƒ } t j j	 d
 d d t j
 j ƒ } y |  j d d ƒ } Wn t k
 rÏ n Xt ‚ |  j d | d d ƒ |  j d | ƒ d k s
t ‚ |  j d | d d ƒ t |  j ƒ  ƒ d k s>t ‚ |  j ƒ  | g k sYt ‚ |  j d d ƒ \ } } d  | | g k s‰t ‚ t j j	 d
 d d t j
 j ƒ } |  j d | d d ƒ |  j ƒ  | | g k sÞt ‚ |  j | ƒ d g k süt ‚ |  j d ƒ | | g k st ‚ |  j | ƒ } |  j | ƒ } | j ƒ  j ƒ  | j ƒ  j ƒ  k ojd k n sut ‚ |  j | ƒ |  j d ƒ | g k s t ‚ t j j	 d
 d d t j
 j ƒ } |  j d | d d ƒ |  j ƒ  | g k sòt ‚ |  j  | ƒ }	 |	 j ƒ  d k st ‚ |  j! | ƒ }
 t" |
 j# ƒ  ƒ d k sFt ‚ t$ j% |
 j& ƒ  ƒ d k sgt ‚ |  j' | d	 t j ƒ  ƒ} t( j) | d d ƒ} | j* ƒ  }
 t" |
 j# ƒ  ƒ d k sÁt ‚ t$ j% |
 j& ƒ  ƒ d k sât ‚ d  S(   Ns6   phenix_regression not found, skipping exercise_model()R   s   refinement.input.pdb.file_names   refinement.reference_model.filet   allowed_multiple_paramst   cif_param_namess#   refinement.input.monomers.file_namet   multiple_cif_paramst   tmp_dirR   s    phenix_regression/pdb/ur0013.pdbR   s8   phenix_regression/cif_files/elbow.ur0013_ent.all.001.cifR    R   t   PDBi   s   phenix_regression/pdb/1ywf.pdbiO  s    phenix_regression/pdb/1ywf_h.pdbs   I 41s   113.068 113.068 53.292 90 90 90t
   force_typet   pdbs   P 1s   59.227 55.922 60.264 90 90 90(+   RÆ   Rk   R   t   model_handlerR   t   getcwdt   set_viewable_paramsR	   R
   R   R   R   t   get_combined_pdb_inputR   R   R^   t   get_file_type_labelR_   t   set_param_cif_fileRo   t   get_cif_objectst   get_current_cif_file_namest   get_current_file_namest   get_file_paramst   get_param_filest   get_pdb_hierarchyt   get_xray_structuret   atomsRU   t
   scattererst   remove_filet   get_files_for_viewingt   get_connectivityt   get_pdb_file_symmetryR‡   t   space_group_infoR   Rn   R   t   create_copy_with_fake_symmetryR   R‚   R   (   RÔ   t   pdb_filet   cif_filet   pdb_allt	   hierarchyt   xrst	   pdb_file2t   pdb_hierarchyt	   pdb_file3t   atomic_bondsR–   t   ft   pdb_in(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyt   exercise_model  s�    										:	t   __main__t   OK(   t
   __future__R    t   iotbx.gui_toolsR   R   R¨   R   t   libtbx.load_envR	   t   libtbx.test_utilsR   R   t   libtbx.utilsR   R   R   R
   R   R   t   isdirRÆ   RN   RÂ   RÌ   Rô   R0   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/tst.pyt   <module>   s.   			æ		L