ó
~™xTc           @   sÈ   d  d l  m Z d  d l Z d  d l m 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 „  Z d „  Z d	 „  Z d
 „  Z e d k rÄ e e j d ƒ n  d S(   iÿÿÿÿ(   t   divisionN(   t   maptbx(   t   approx_equal(   t   format_cpu_times(   t   StringIOc          C   s¤  t  j j d d d d ƒ }  t j j d |  ƒ } t | j d ƒ sH t ‚ t | j	 d ƒ s` t ‚ t | j
 d ƒ sx t ‚ t | j d	 ƒ s� t ‚ | j d k s¥ t ‚ t | j d ƒ s½ t ‚ | j d k sÒ t ‚ | j j ƒ  d k sí t ‚ | j j ƒ  d k st ‚ | j j ƒ  st ‚ t ƒ  } | j d | ƒ d | j ƒ  k sOt ‚ | j ƒ  } t | j | j ƒ  j ƒ  ƒ st ‚ t | j ƒ  j ƒ  d ƒ s t ‚ d  S(   Nt   module_namet   iotbxt   paths   ccp4_map/tst_input.mapt	   file_nameg!" `áÛ¿gz  ‰zÕ?i    g  WïÁ?i   i   g   €†T@g    ºB@g   @´hQ@g     €V@g   Àv^Y@i   t   outs   map grid:   (16, 8, 16)gõó¦"†@g'1¬º@gbX9´h@iZ   gX9´Èv^Y@(   i   i   i   (   g   €†T@g    ºB@g   @´hQ@g     €V@g   Àv^Y@g     €V@(   i    i    i    (   i   i   i   (   gõó¦"†@g'1¬º@gbX9´h@iZ   gX9´Èv^Y@iZ   (   t   libtbxt   envt
   under_distR   t   ccp4_mapt
   map_readerR   t
   header_mint   AssertionErrort
   header_maxt   header_meant
   header_rmst   unit_cell_gridt   unit_cell_parameterst   space_group_numbert   datat   origint   allt	   is_paddedR   t   show_summaryt   getvaluet	   unit_cellt
   parameterst   grid_unit_cell(   R   t   mR	   t   uc(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/ccp4_map/tst.pyt   exercise_with_tst_input_map
   s.    		 	$c         C   sK  t  ƒ  x=|  D]5} | GHt j j d | ƒ } d G| j GHd G| j GHd G| j GHd G| j GHd G| j GHd G| j	 GHd G| j
 GHd	 G| j j ƒ  GHd
 G| j j ƒ  GHt j | j ƒ } t | j ƒ  | j ƒ sÖ t ‚ t | j ƒ  | j ƒ sô t ‚ t | j ƒ  | j ƒ st ‚ | j d k rBt | j ƒ  | j ƒ sBt ‚ n  Hq Wd  S(   NR   s   header_min: s   header_max: s   header_mean:s   header_rms: s   unit cell grid:s   unit cell parameters:s   space group number:  s   map origin:s   map grid:  i    (   R"   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t
   statisticsR   t   minR   t   maxt   meant   sigma(   t   argsR   R    t	   map_stats(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/ccp4_map/tst.pyt   exercise#   s(    !c          C   sI  d d l  m }  d d l m } m } d d l m } t j j	 d d d t
 j j ƒ } | d  k rl d GHd  S|  j | d	 d
 ƒj } | j ƒ  } | d } | j d d ƒ } | j ƒ  | j d d ƒ t  j j d d ƒ }	 | j ƒ  }
 | j t |
 ƒ ƒ j ƒ  } t |	 j | j ƒ  j ƒ  ƒ s&t ‚ t | j |	 j  ƒ sAt ‚ t | j! |	 j" ƒ s\t ‚ xæ| j# d d  ƒ D]Ò} | j$ d ƒ } | j% | ƒ } | j& d | j' ƒ  ƒ } | j( | ƒ | j ƒ  }
 t  j j) d d d | j d! ƒ d | j* d ƒ j+ ƒ  d d" d t, | j- ƒ  ƒ d |
 d | j. d g ƒ ƒ t  j j d d ƒ }	 | j t |
 ƒ ƒ j ƒ  } t |	 j d# ƒ sst ‚ t | j |	 j  ƒ sŽt ‚ t | j! |	 j" ƒ s©t ‚ d$ } t, | j- ƒ  ƒ } t/ j0 | | | ƒ } | j( | j% | j1 ƒ  ƒ ƒ t  j j) d d d | j d% ƒ d | j* d ƒ j+ ƒ  d | d | j. d g ƒ ƒ qoWd  S(&   Niÿÿÿÿ(   t   file_reader(   t   uctbxt   sgtbx(   t   flext   relative_paths;   phenix_regression/wizards/partial_refine_001_map_coeffs.mtzt   tests+   Can't find map coefficients file, skipping.t
   force_typet   hkli    t   resolution_factori   g      @R   s   2mFo-DFc.mapi   t   sizes
   random.mapR   iZ   t   space_groupt   P1t   gridding_firstt   gridding_lastt   map_datat   labelss   iotbx.ccp4_map.tsts   random_box.mapgUUUUUUÕ?(   i   i   i   (   i   i   i   (   i   i   i   iZ   iZ   iZ   (   i    i    i    (   i   i   i   iZ   iZ   iZ   (   i    i    i    (   i   i   i   iZ   iZ   iZ   (2   R   R+   t   cctbxR,   R-   t   scitbx.array_familyR.   R
   R   t   find_in_repositoriest   osR   t   isfilet   Nonet   any_filet   file_objectt   as_miller_arrayst   fft_mapt   apply_sigma_scalingt   as_ccp4_mapR   R   t   real_map_unpaddedt   doublet   listt   min_max_meanR   R   R   R   R   R$   R   R%   R   t   nested_loopt   mersenne_twistert   gridt   random_doublet   size_1dt   reshapet   write_ccp4_mapt   space_group_infot   groupt   tuplet   n_realt
   std_stringR   t   copyR   (   R+   R,   R-   R.   R   t   mtz_int   miller_arrayst
   map_coeffsRD   R    t   real_mapt   mmmt   nxyzt   mtRM   t   mapR7   R8   t   map_box(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/ccp4_map/tst.pyt   exercise_writer9   sf    

	c         C   sF   d „  } | ƒ  s d GHn  d d  l  } t d |  ƒ t ƒ  t ƒ  GHd  S(   Nc          S   s@   x9 t  j t j j d d ƒ ƒ D] }  |  j d ƒ r t Sq Wt S(   NR   t   libt   iotbx_ccp4_map_ext(   R>   t   listdirR
   R   t   under_buildt
   startswitht   Truet   False(   t   node(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/ccp4_map/tst.pyt   have_extr   s    %s6   Skipping iotbx_ccp4_map tests: extension not availableiÿÿÿÿR(   (   t   iotbx.ccp4_mapR*   Ra   R   (   R(   Rj   R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/ccp4_map/tst.pyt   runq   s    		t   __main__i   (   t
   __future__R    R   R;   R   t   libtbx.test_utilsR   t   libtbx.utilsR   t   libtbx.load_envR
   t	   cStringIOR   t   sysR>   R"   R*   Ra   Rl   t   __name__t   argv(    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/ccp4_map/tst.pyt   <module>   s   			8	