ó
|™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 m	 Z	 d  d l
 m Z d  d l m Z d  d	 l m Z m Z m Z d  d l Z d  d
 l m Z d  d l Z d „  Z d „  Z d „  Z d „  Z d „  Z d d d „ Z d „  Z e d k re ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t   maptbx(   t   sgtbx(   t   uctbx(   t   flex(   t   random_structure(   t   iround(   t   approx_equalt   eps_eqt	   show_diff(   t   StringIOc       	   C   s  y( t  j j j d d d d d	 d ƒ }  Wn/ t k
 rY } t | ƒ d d k sZ t ‚ n Xt  j j j d d d d d	 d ƒ }  |  j ƒ  } | j ƒ  |  j	 k s¥ t ‚ | j
 t ƒ |  j
 k sÃ t ‚ | j
 t ƒ d k sÞ t ‚ | j ƒ  d k sö t ‚ | j ƒ  s	t ‚ d  S(   Nt   ni    i   i   t   firstiýÿÿÿiüÿÿÿiûÿÿÿt   lasti   i   i   s,   Illegal xplor map gridding for dimension X: s   gridding=0, first=-3, last=5i
   i   i	   (   i    i   i   (   iýÿÿÿiüÿÿÿiûÿÿÿ(   i   i   i   (   i
   i   i   (   iýÿÿÿiüÿÿÿiûÿÿÿ(   i   i   i   (   i   i   i   (   i	   i	   i	   (   t   iotbxt   xplort   mapt   griddingt   RuntimeErrort   strt   AssertionErrort   as_flex_gridt   originR   R   t   Falset   Truet   allt	   is_padded(   t   gt   et   fg(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   exercise_map_gridding   s    ($c           C   s   t  j j d d d t j j ƒ S(   sõ   CNS commands used to generate test map:
xray
  MAPResolution 1
  declare name=map domain=real end
  do (map=ft(fcalc)) (all)
  write map
    from=map output=cns.map extend=box
    xmin=1 xmax=3
    ymin=-1 ymax=0
    zmin=-2 zmax=-1
  end
end
  t   relative_paths   phenix_regression/misc/cns.mapt   test(   t   libtbxt   envt   find_in_repositoriest   ost   patht   isfile(    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   get_test_file_name   s    c         C   s‘  t  j j j d |  ƒ } | j d d d g k s6 t ‚ | j j d= k sN t ‚ | j j d> k sf t ‚ | j j	 d? k s~ t ‚ | j
 j t j
 d@ ƒ ƒ sŸ t ‚ t | j d ƒ s· t ‚ t | j d ƒ sÏ t ‚ | j j ƒ  dA k sê t ‚ | j j	 t ƒ dB k st ‚ | j j ƒ  dC k s#t ‚ t | j d
  d d d d d d d d d d g
 ƒ s]t ‚ t | j d d !d  d! d" d# d$ d% d& d' d( d) g
 ƒ sšt ‚ t | j d* d+ d, d- d. d/ d0 d1 d2 d3 d4 g
 ƒ sÔt ‚ t j | j ƒ } t | j ƒ  d5 ƒ st ‚ t | j ƒ  d6 ƒ st ‚ t | j ƒ  d7 ƒ s7t ‚ t | j ƒ  d8 ƒ sRt ‚ t ƒ  } | j d9 | d: d; ƒ t | j ƒ  d< ƒ s�t ‚ | S(D   Nt	   file_names    REMARKS FILENAME="cns.map"s?    REMARKS DATE:15-May-2004  02:15:56       created by user: rwgks    REMARKS VERSION:1.1i   i(   i   iüÿÿÿiúÿÿÿi
   i    iýÿÿÿgâ3Ím¨@g»%îö65)@iZ   ix   gÅE9Á~þÌ½gÇº¸�ðÆ?i   iþÿÿÿgñº~ÁnØÐ¿g×QÕQ÷Û¿g°=³$@Mâ¿g¿·éÏ~ã¿gß‰Y/†Ê¿gTt$—ÿ�Ú¿g…BB•ã¿gùÚ3KÔæ¿gçû©ñÒMÊ¿gí¶Íu×¿i2   gÚæÆô„%Ú¿g•‚n/iŒÞ¿g÷Ç{ÕÊ„à¿g$—ÿ�~ûÞ¿gÈTÆ¿ÏÒ¿g‹lçû©ñÖ¿g]Š«Ê¾+Ü¿g;6ñº~ß¿gY£¢ÑÌ¿gB	3mÿÊÎ¿iöÿÿÿgKÈ=›UË¿gÉv¾Ÿ/ß¿g 
fLÁ§¿g¾¤1ZGUË¿gâä~‡¢@Ý¿g_F±ÜÒjä¿gUMu€Ö¿g3Ü€Ï#ã¿gN(DÀ!Tè¿g|í™%jè¿g�ÚÄÉýè¿g=îÎÚmÑ?g¾¾Ö¥F×¿gGæ‘?xÊ?t   outt   prefixt   $sE  $Title lines: 3
$   REMARKS FILENAME="cns.map"
$   REMARKS DATE:15-May-2004  02:15:56       created by user: rwgk
$   REMARKS VERSION:1.1
$Gridding:
$  n:     (24, 24, 40)
$  first: (1, -4, -6)
$  last:  (10, 0, -3)
$Total number of data points: 200
$  min:   -0.78098
$  max:   0.27233
$  mean:  -0.363687
$  sigma: 0.20679
(   i   i   i(   (   i   iüÿÿÿiúÿÿÿ(   i
   i    iýÿÿÿ(   gâ3Ím¨@gâ3Ím¨@g»%îö65)@iZ   iZ   ix   (   i   iüÿÿÿiúÿÿÿ(   i
   i    iýÿÿÿ(   i   i   iþÿÿÿ(   R   R   R   t   readert   title_linesR   R   R   R   R   t	   unit_cellt   is_similar_toR   R   t   averaget   standard_deviationt   dataR   R   t   focusR   t
   statisticst   mint   maxt   meant   sigmaR
   t   show_summaryR	   t   getvalue(   R(   t   at   statst   s(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt
   read_xplor-   sD    		c         C   sP   t  j j j d | d |  j d |  j d |  j d |  j d |  j d |  j	 ƒ d  S(   NR(   R-   R.   R   R2   R0   R1   (
   R   R   R   t   writerR-   R.   R   R2   R0   R1   (   R   R(   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   write_xplor^   s    					c          C   s•  xŽd" d# d$ g d% d& d' g d( d) d* g d+ d, d- g d. d/ d0 g d1 d2 d3 g d4 d5 d6 g d7 d8 d9 g g D]&\ }  } } t  j j j d |  d | d | ƒ } | j ƒ  } d t j d | j ƒ  ƒ d } | j | ƒ t	 j
 | ƒ } t  j j j d d d d g d t j d: ƒ d | d | d | j ƒ  d | j ƒ  ƒ t  j j j d d ƒ } | j d g k sdt ‚ | j j |  k s|t ‚ | j j | k s”t ‚ | j j | k s¬t ‚ | j j t j d; ƒ ƒ sÍt ‚ t | j | j ƒ  d  d! ƒsñt ‚ t | j | j ƒ  d  d! ƒst ‚ | j j ƒ  | k s0t ‚ | j j t ƒ | k sNt ‚ | j j ƒ  | j ƒ  k sot ‚ t | j | d  d! ƒsg t ‚ qg Wd  S(<   Ni   i   i   i    i   iÿÿÿÿiýÿÿÿiþÿÿÿi   i	   R   R   R   i N  t   sizei'  R(   s   tmp.mapR-   s   regression testR.   i
   i   i   iP   iZ   id   R   R2   R0   R1   t   epsg-Cëâ6?(   i   i   i   (   i    i    i    (   i   i   i   (   i   i   i   (   iÿÿÿÿiýÿÿÿi   (   i   i   i   (   i   i   i   (   iþÿÿÿi   i    (   iþÿÿÿi   i    (   i   i   i   (   iþÿÿÿi   i    (   iþÿÿÿi   i   (   i   i   i   (   iþÿÿÿi   i    (   iþÿÿÿi   i    (   i   i   i   (   iþÿÿÿi   i    (   iþÿÿÿi	   i    (   i   i   i   (   iþÿÿÿi   i    (   i   i   i    (   i   i   i   (   iþÿÿÿi   i    (   i   i   i    (   i
   i   i   iP   iZ   id   (   i
   i   i   iP   iZ   id   (   R   R   R   R   R   R   t   random_doublet   size_1dt   resizeR   R4   R?   R   R.   R7   R8   R,   R-   R   R   R   R   R/   R   R0   R1   R2   R   R   R3   (   R   R   R   R   t	   flex_gridR2   R<   t   read(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   recycleh   sF     		$$!i
   i   c         C   s„  t  j |  d d g | d d d d d t ƒ} | j d | d	 t ƒ j ƒ  } | j ƒ  } | j d
 d d g  | j ƒ  D] } | d ^ qt ƒ t j	 j
 j d
 d ƒ } | j d g k s» t ‚ | j j | j ƒ  k sÙ t ‚ t t j | j j ƒ  | j d t ƒ j ƒ  ƒ j ƒ  d ƒ st ‚ xbd d  g d! d" g d# d$ g d% d& g d' d( g d) d* g d+ d, g d- d. g g D]\ } }	 | j d
 d d | d |	 ƒ t j	 j
 j d
 d ƒ } | j d g k sÂt ‚ | j j | j ƒ  k sàt ‚ | j j | k søt ‚ | j j |	 k st ‚ | j ƒ  }
 g  t | | j ƒ  ƒ D] \ } } | | ^ q2} t | j | |
 | d d ƒstt ‚ g  t |	 | j ƒ  ƒ D] \ } } | | ^ qŠ} t | j |	 |
 | d d ƒsÌt ‚ x­ t d d ƒ D]œ } g  t | |	 ƒ D]( \ } } t | | | | d ƒ ^ qò} g  t | | j ƒ  ƒ D] \ } } | | ^ q6} t | j | |
 | d d ƒsÜt ‚ qÜWqjWd  S(/   Nt   elementst   Sit   volume_per_atomiè  t   min_distanceg      @t   general_positions_onlyt   d_mint   anomalous_flagR(   s   tmp.mapt   gridding_lasti   s   cctbx.miller.fft_mapt   in_placei    i   i   i   iÿÿÿÿiýÿÿÿi   iþÿÿÿi   i	   t   gridding_firstRB   g-Cëâ6?i
   g      $@(   i    i    i    (   i   i   i   (   iÿÿÿÿiýÿÿÿi   (   i   i   i   (   iþÿÿÿi   i    (   iþÿÿÿi   i    (   iþÿÿÿi   i    (   iþÿÿÿi   i   (   iþÿÿÿi   i    (   iþÿÿÿi   i    (   iþÿÿÿi   i    (   iþÿÿÿi	   i    (   iþÿÿÿi   i    (   i   i   i    (   iþÿÿÿi   i    (   i   i   i    (   R   t   xray_structureR   t   structure_factorst   f_calct   fft_mapt   as_xplor_mapt   n_realR   R   R   R,   R-   R   R   R   R   R   t   linear_correlationR2   t   as_1dt   real_map_unpaddedt   coefficientR   R   t   real_mapt   zipR   t   xrangeR   (   t   space_group_infot
   n_elementsRN   t	   structureRU   RV   R   RG   R   R   R]   t   it   first_p1t   last_p1t   xt   ft   lt   pointt   point_p1(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   exercise_fft_map_as_xplor_map�   sX    			$	-							2&2&>2c          C   s�   t  ƒ  t ƒ  t ƒ  }  |  d  k r+ d GHnS t |  ƒ } t | d ƒ t d ƒ } t j t j | j	 | j	 ƒ ƒ d k  s~ t
 ‚ t d t j d ƒ ƒ d GHd  S(   Ns8   Skipping original CNS map test: input file not availables   tmp.mapgñhãˆµøô>R`   s   P 31t   OK(   R   RH   R'   t   NoneR>   R@   R   R6   t   absR2   R   Rk   R   R`   (   t   test_file_namet   map1t   map2(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   run»   s    	.t   __main__(   t
   __future__R    t   iotbx.xplor.mapR   t   cctbxR   R   R   t   cctbx.array_familyR   t   cctbx.developmentR   t   libtbx.math_utilsR   t   libtbx.test_utilsR   R   R	   t   libtbx.load_envR!   t	   cStringIOR
   R$   R   R'   R>   R@   RH   Rk   Rr   t   __name__(    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xplor/tst_xplormap.pyt   <module>   s(   			1	
	%.	