ó
I™xTc           @   s  d  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 d l m Z d d l Z d d l Z d d „ Z d „  Z d „  Z e d k rd d l Z e d e j d ƒ n  d S(   s‘  Essence of bulk-solvent mask calculation, testing interaction of
symmetry summation in maptbx.structure_factors.from_map with handling
of grid points. This script demonstrates that grid points redundant
under symmetry must be kept at zero and that all grid points inside
the asu have to be weighted by site-multiplicity/order_z.
As an aside, this script also exercises space_group.multiplicity(site).
iÿÿÿÿ(   t   division(   t   maptbx(   t   miller(   t   sgtbx(   t   debug_utils(   t   fftpack(   t   flex(   t   iround(   t   approx_equal(   t   n_dim_index_from_one_dimNi    c   $      C   s³  d } d } t  j | ƒ } |  j d d ƒ } t j d t ƒ } | j |  j ƒ  | ƒ t j	 | ƒ } t
 j t
 j | j ƒ  ƒ j | j ƒ  ƒ d ƒ } | j ƒ  }	 | j ƒ  }
 | j ƒ  } |  j ƒ  j ƒ  } | d k } x=t
 j | ƒ D],} | | } | d k  r¸g  t | | ƒ D] \ } } | | ^ q} t j d | d |  j ƒ  d	 | d
 d ƒ } |  j ƒ  j d t j j | | ƒ ƒ } | | j ƒ  k s—t ‚ | | } | |	 | <| |
 | <qæ | d k ræ | d 8} t d | d | ƒ } | j ƒ  | ƒ | k st ‚ |
 | |
 | <qæ qæ W| j |
 ƒ } ~
 t j  |  j ƒ  t! | ƒ j" ƒ  } | j# ƒ  d k sat ‚ t  j$ j% d |  j ƒ  d t! d | d | d t ƒ } g  | j& ƒ  D] } t' t( | ƒ ƒ ^ q¡} | d g t) | ƒ k rè| sät ‚ d  S| | j ƒ  } | j ƒ  } x· t
 j | ƒ D]¦ } | | } | d k  rdt* j* ƒ  d d } | | | <| |	 | | | <qt d | d | ƒ } | j ƒ  | ƒ | k s—t ‚ | | d k s­t ‚ | | | | <qW| j | ƒ } ~ t  j$ j% d |  j ƒ  d t! d | d | d t ƒ j& ƒ  }  ~ | j | ƒ }! ~ t  j$ j% d t j+ ƒ  d t! d | d |! d t ƒ j& ƒ  }" ~! t
 j, d t
 j( |  ƒ d t
 j( |" ƒ ƒ }# |# j- s”t ‚ t. |# j/ ƒ  d ƒ s¯t ‚ d  S(   Ni   i   t   volumeiè  t   use_space_group_symmetryi    t	   unit_cellt   space_groupt   original_sitet   min_distance_sym_equivgñhãˆµøä>t   sitei   t   i1dt   sizest   anomalous_flagt   miller_indicest   complex_mapt   conjugate_flagt   xt   y(   i   i   i   (   i   i   i   (0   R   t	   grid_tagst   any_compatible_unit_cellR   t   search_symmetry_flagst   Truet   buildt   typeR   t   real_to_complex_3dR   t   doublet   gridt   m_realt	   set_focust   n_realt	   deep_copyt	   tag_arrayt   groupt   order_zt   nested_loopt   zipt   site_symmetryt   multiplicityt   boostt   rationalt   vectort   AssertionErrorR	   t   accessort   forwardR   t   index_generatort   Falset   to_arrayt   sizet   structure_factorst   from_mapt   dataR   t   abst   lent   randomR   t   linear_correlationt   is_well_definedR   t   coefficient($   t   space_group_infot   redundancy_counterR$   t
   miller_maxt   gtt   uct   flt   fftt   map0t
   weight_mapt   mapt   taR(   t   problems_expectedt   ijkt   tt   it   nt   xyzt   sst   mt   wt   ijk_asut   sf_mapt   miR8   t   ft   sft   map_p1t   map_swt   vt	   sf_map_swt   sf_swt	   sf_map_p1t   sf_p1t   corr(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_map_weights_for_symmetry_summation.pyt   exercise   s¤    0
,		


	+

*c         C   s   t  d | ƒ d  S(   NR@   (   Ra   (   t   flagsR@   (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_map_weights_for_symmetry_summation.pyt   run_call_backs   s    c         C   s3   t  d t j d d ƒ d d ƒ t j |  t ƒ d  S(   NR@   t   symbolt   P222RA   i   (   Ra   R   R@   R   t   parse_options_loop_space_groupsRc   (   t   args(    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_map_weights_for_symmetry_summation.pyt   runv   s    t   __main__Rg   i   (   t   __doc__t
   __future__R    t   cctbxR   R   R   t   cctbx.developmentR   t   scitbxR   t   scitbx.array_familyR   t   libtbx.math_utilsR   t   libtbx.test_utilsR   t   libtbx.utilsR	   t   boost.rationalR-   R<   Ra   Rc   Rh   t   __name__t   syst   argv(    (    (    se   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_map_weights_for_symmetry_summation.pyt   <module>   s$   \		