ó
0™xTc           @   s–   d  d l  m Z d  d l Z e j j d ƒ Z d  d l Td  d l m	 Z	 d  d l
 Z
 d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d S(	   iÿÿÿÿ(   t   divisionNt   cctbx_xray_ext(   t   *(   t   flext   _c           B   sh   e  Z d  „  Z e d „ Z d
 d d „ Z d „  Z d e e d
 d d „ Z d „  Z	 d „  Z
 d	 „  Z RS(   c         C   sJ   i  } t  |  j ƒ } x. |  j ƒ  j ƒ  D] \ } } | | | | <q( W| S(   N(   t   listt   unique_countst   type_index_pairs_as_dictt   items(   t   selft   resultR   t   tt   i(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   type_count_dict   s
    c   	      C   s¸   |  j  ƒ  } g  } t j ƒ  } xo |  j ƒ  j ƒ  D][ \ } } | j | | f ƒ | | } | d  k rv | j d ƒ q1 | j | j d ƒ ƒ q1 Wt j | d | ƒ} t j	 | d | ƒS(   Ni    t   reverset   permutation(
   t   unique_gaussians_as_listR   t   doubleR   R   t   appendt   Nonet   at_stolt   sort_permutationt   select(	   R	   t   heaviest_firstt   ugst   pairst   sf0sR   R   t   gaussiant   perm(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   sorted_type_index_pairs   s    
t    c   	   	   C   sÌ   | d  k r t j } n  |  j ƒ  } t |  j ƒ } xŽ |  j ƒ  D]€ \ } } | | } | d  k rk d } n1 t | j ƒ  ƒ } | j	 ƒ  d k rœ | d 7} n  | d | | | | | f Id } q@ W| Jd  S(   NR   i    s   +cs
   %s%s:%s*%dR   (
   R   t   syst   stdoutR   R   R   R   t   strt   n_termst   c(	   R	   t   outt   prefixt   unique_gaussiansR   R   R   R   t   gn(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   show_summary    s     
	
c         C   sh   |  j  ƒ  d k rd d d l m } | | t ƒ } | j ƒ  } | j d k rd d t | j ƒ d Sn  d S(   Nt   neutroniÿÿÿÿ(   t   neutron_news_1992_tableg        s(    WARNING! anomalous neutron scattering (s   ) is ignored!R   (   t
   last_tablet   cctbx.eltbx.neutronR*   t   Truet   bound_coh_scatt_lengtht   imagR!   (   R	   t   std_lblR*   t   scattering_infot   b(    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   warning_if_any0   s    s   Number of scattering types:c         C   s]  | d  k r t j } n  |  j ƒ  } t |  j ƒ } |  j ƒ  } | d  k	 rh | | | It | ƒ IJn  t | ƒ d k r‹ | | d IJnÎt d t g  | D] \ }	 }
 t |	 ƒ ^ q› ƒ ƒ } d | } t d t t	 t | ƒ ƒ ƒ ƒ } d | } | d d | d d | d f } | r+| d	 7} n  | r>| d
 7} n  | | IJx÷ | D]ï \ }	 }
 | d | |	 | | |
 d } | |
 } | rÀ| d  k r¦| d 7} qÀ| d | j
 d ƒ 7} n  | r| d  k rß| d 7} q| d t	 | j ƒ  ƒ 7} | j ƒ  d k r| d 7} qn  | d | j ƒ  |  j |	 ƒ f IJqOW| rY| | d IJn  d  S(   Ni    s!     Empty scattering-type registry.i   s   %%-%ds i   s   %%%dds     Type%s %sNumbert    s	       sf(0)s      Gaussianss      s	        Nones    %8.2fs
         Nones    %7ss   +cs   %s%ss3     sf(0) = scattering factor at diffraction angle 0.(   R   R   R    R   R   R   R   t   lent   maxR!   R   R"   R#   t   rstripR3   (   R	   t   headert   show_sf0t   show_gaussiansR$   R%   R&   R   t   tipsR   R   t   ntt   nt_fmtt   nct   nc_fmtt   lineR   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   show:   sH     4
!
$  
"
 'c         C   sJ   d } x= t  |  j ƒ  |  j ƒ D]# \ } } | | j d ƒ | 7} q W| S(   Ni    (   t   zipR   R   R   (   R	   R
   t   gR#   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt0   sum_of_scattering_factors_at_diffraction_angle_0f   s    %c         C   sD   i  } t  |  j ƒ } x( |  j ƒ  D] \ } } | | | | <q" W| S(   N(   R   R   R   (   R	   R
   R   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   wilson_dictl   s
    c         C   sG   i  } |  j  ƒ  } x. |  j ƒ  j ƒ  D] \ } } | | | | <q% W| S(   N(   R   R   R   (   R	   R
   R   R   R   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   as_type_gaussian_dicts   s
    N(   t   __name__t
   __module__R   R-   R   R   R(   R3   RA   RD   RE   RF   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyR   	   s   		'		c           B   s   e  Z d  „  Z RS(   c         C   sK   d d l  m } |  j ƒ  } | j ƒ  s, | S| j | t j | j ƒ  ƒ ƒ S(   Niÿÿÿÿ(   t   maptbx(   t   cctbxRI   t   real_mapt	   is_paddedt   copyR   t   gridt   focus(   R	   RI   R
   (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   real_map_unpadded|   s
     (   RG   RH   RP   (    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyR   z   s   (   t
   __future__R    t   boost.pythont   boostt   pythont
   import_extt   extR   t   cctbx.array_familyR   R   t   injectort   scattering_type_registryR   t   sampled_model_density(    (    (    s<   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/ext.pyt   <module>   s   
q