ó
9™xTc           @   s	  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
 d  d l m Z d  d	 l m Z d  d
 l m Z d „  Z d Z d g d „ Z d e d „ Z d „  Z e d k rd  d l Z e d e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   xray(   t   miller(   t   crystal(   t   maptbx(   t   u_as_b(   t   flex(   t   matrix(   t   ifloor(   t   approx_equalc   "      C   s‡  g  } g  } g  } | | d } x^ |  j  ƒ  j ƒ  d  D]F }	 t |	 | ƒ }
 | j d |
 d ƒ | j |
 ƒ | j |
 ƒ q7 Wt | ƒ } t j | ƒ j ƒ  } t j	 d |  j  ƒ  d |  j
 ƒ  d | ƒ } t j ƒ  } | j | ƒ x- t j | | d t ƒD] } | j | ƒ qþ W| j ƒ  | k s-t ‚ t j d |  d	 t d
 | ƒ j d d ƒ } | j ƒ  d d k sst ‚ | j d |  d d d t ƒ j ƒ  } | r°d | j ƒ  d <n  |  j  ƒ  j ƒ  } | | } g  } g  } g  } g  } x:| | j d | ƒ g D] } | j ƒ  d d k st ‚ | j | j ƒ  j ƒ  ƒ t j d | d | ƒ } | j ƒ  | k sht ‚ | j ƒ  | } t | t j  | ƒ | j ƒ  d ƒ s¤t ‚ |  j! ƒ  j ƒ  d k rët j" | ƒ d k s×t ‚ | j | d ƒ n | j t j# | ƒ ƒ |  j$ ƒ  d } t j% d |  j  ƒ  d | d | d t j& | g ƒ d t j' | g ƒ ƒ } | j t j  | j( ƒ  j) | ƒ ƒ | ƒ |  j  ƒ  j ƒ  d } | d } | d } g  } g  }  xO t* | | d ƒ D]9 }! | j | |! | ƒ |  j | |! | d d f ƒ qÍW| j | |  f ƒ qýWd | | | | d | d | d | d | d | d | j ƒ  d j+ t, |  j! ƒ  d j- ƒ f GH| S(   Ni   i   i   t	   unit_cellt   space_group_infot   pre_determined_n_realt
   open_ranget   crystal_symmetryt   anomalous_flagt   indicest   by_valuet
   resolutioni    t   xray_structuret	   algorithmt   directt   cos_sin_tabley                t   d_mint   crystal_griddingt   fourier_coefficientst
   fft_n_realt
   fft_m_realt
   sites_cartt
   site_radiisC   %3.1f %4.2f %-12s %5d %5d | %6.3f %6.3f | %6.3f %6.3f | %4.2f %5.1f(   i    i    i    (   i    i    i    (.   R
   t
   parametersR   t   appendt   tupleR   t   colt   productR   R   R   R   t   miller_indext   reservet   nested_loopt   Falset   sizet   AssertionErrorR   t   sett   Truet   sortR   t!   structure_factors_from_scattererst   f_calct   datat   volumet   resolution_filtert   fft_mapt   n_realt   real_map_unpaddedR	   t   sumt
   scattererst	   max_indext   maxR   t   grid_indices_around_sitest   vec3_doublet   doublet   as_1dt   selectt   xranget   realR   t   u_iso("   R   R   t   resolution_factort   electron_sum_radiust   zero_out_f000R2   t   n_half_plust   n_half_minust   s2t   lt   nht   n_real_productR   t   miller_indicest   ht
   miller_setR-   t   unit_cell_volumet   voxel_volumet   number_of_miller_indicest   rho_maxt   electron_sums_around_atomst   densities_along_xt   fR1   t   rhot	   site_cartt   giast   at   nxt   nxht   xt   yt   ix(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/fft_map_electron_density_around_atom.pyt	   rho_stats   s¢    				
		,	#

"sŽ                             hkl     |    electrons  |     rho max
res fac  grid           all Ewald |    all  Ewald |    all  Ewald | F000  Bisoi    c         C   sæ   t  j d t j d |  |  |  d d d f d d ƒ ƒ } xV t | ƒ D]H \ } } | j t  j d d | d d	 d
 d | d d f d | ƒ ƒ qC W| j d d d d ƒ } | j ƒ  d
 } | j	 ƒ  d k sÏ t
 ‚ | j ƒ  sâ t
 ‚ | S(   NR   R
   iZ   t   space_group_symbolt   P1t   labels   C%di   t   scattering_typet   Ct   sitei    t   bt   tablet
   n_gaussianR   i   i   gUUUUUUµ?(   R   t	   structureR   t   symmetryt	   enumeratet   add_scatterert	   scatterert   scattering_type_registryt   as_type_gaussian_dictt   n_termsR(   t   use_c(   RV   t   b_isoRY   t   resultt   it   vt   regt   g(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/fft_map_electron_density_around_atom.pyt(   build_xray_structure_with_carbon_along_xp   s    		1i   c         C   s„   t  d d d |  ƒ } | j ƒ  t GHxY d d d d g D]E } x< d d d g D]+ } t d | d	 | d
 | d | d t ƒ qM Wq7 Wd  S(   NRV   i
   Ro   i   i   i   i   R   R   R@   RA   RB   g      à?gUUUUUUÕ?g      Ð?(   Ru   t   show_scattererst   table_headerR\   R&   (   Rc   RA   RB   R   R   R@   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/fft_map_electron_density_around_atom.pyt   loop_res_fac~   s    
c         C   sH   t  |  ƒ d k s t ‚ x$ d d d g D] } t d | ƒ q( Wd GHd  S(   Ni    i   i   Rc   t   OK(   t   lenR(   Rx   (   t   argsRc   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/fft_map_electron_density_around_atom.pyt   run‹   s    t   __main__NR{   i   (   t
   __future__R    t   cctbxR   R   R   R   t   cctbx.adptbxR   t   cctbx.array_familyR   t   scitbxR   t   libtbx.math_utilsR   t   libtbx.test_utilsR	   R\   Rw   Ru   R&   Rx   R|   t   __name__t   syst   argv(    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/fft_map_electron_density_around_atom.pyt   <module>   s"   	b	