ó
G™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 Z d „  Z d „  Z d d d d d „ Z d d d d d „ Z d d „ Z d „  Z d „  Z e d k re ƒ  n  d
 S(   iÿÿÿÿ(   t   division(   t   maptbx(   t   crystal(   t   sgtbx(   t   random_structure(   t   debug_utils(   t   flex(   t   fftpack(   t   approx_equalNc          C   s¨   t  j d d d d ƒ }  x‰ d  d f d d f f D]o \ } } t j d |  j ƒ  d d d d d t j d |  j ƒ  d | d d d t ƒ } | j	 ƒ  | k s1 t
 ‚ q1 Wd  S(   Nt	   unit_cellg×òAÏÒW@g³êsµ›X@gê46”W@gX9´ÈvÎ\@gøSã¥›´]@t   space_group_symbols   Hall: C 2y (x+y,-x+y+z,z)iZ   i   id   t   d_ming      @t   resolution_factori   g      @t   symmetry_flagst   space_group_infot   mandatory_factorst	   max_primei   t   assert_shannon_sampling(   g×òAÏÒW@g×òAÏÒW@g³êsµ›X@gê46”W@gX9´ÈvÎ\@gøSã¥›´]@(   iZ   iZ   iZ   (   i   i   i   (   id   id   id   gUUUUUUÕ?(   R   t   symmetryt   NoneR   t   crystal_griddingR	   t   use_space_group_symmetryR   t   Truet   n_realt   AssertionError(   t   crystal_symmetryR   R   R   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   exercise_crystal_gridding   s    					c          C   s¡  t  j d g ƒ }  t  j d g ƒ } d d d g } t } xad d d g D]P} xGt t g D]9} | sz t j | ƒ } n | j d	 ƒ xt t g D]ý } | s¾ t j	 | ƒ } | j
 ƒ  }	 n t j | ƒ }
 |
 j ƒ  }	 xµ t t g D]§ } t j j d
 | d | d |  d | d | d t  j |	 ƒ d | d | ƒ } | r`t | j ƒ  d | d ƒ s�t ‚ qæ t | j ƒ  d | d | j ƒ  ƒ sæ t ‚ qæ Wq” Wq\ WqI Wd  S(   Ni    i   y               @i   i   s   P 1s   P 3s   R 3*s   -x,-y,-zt   space_groupt   anomalous_flagt   miller_indicest   structure_factorsR   t   map_gridt   conjugate_flagt   treat_restricted(   i    i    i    y      ð?       À(   R   t   miller_indext   complex_doubleR   t   FalseR   R   t
   expand_smxR   t   real_to_complex_3dt	   n_complext   complex_to_complex_3dt   nR   R   t   to_mapt   gridR   t   complex_mapR   t   order_p(   R   t   dataR   R    t   hall_symbolt
   is_centricR   R   t   rfftR'   t   cfftR!   t   map(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   exercise_f000   s<    	#g      @g      à?i   i    c         C   s  t  j |  d d! d d d | d t d	 t d
 t ƒ} | j d | d | d d ƒ j ƒ  } | j d | d | d | ƒ j ƒ  }	 | sŸ t j |	 ƒ }
 |
 j	 ƒ  } n t j
 |	 ƒ } | j ƒ  } t j j d | j ƒ  d | d | j ƒ  d | j ƒ  d |	 d t j | ƒ d | ƒ } | j ƒ  } t j j d | j ƒ  d | d | j ƒ  d | j ƒ  d |	 d t j | ƒ d | ƒ } t j t j | j ƒ  | j ƒ  ƒ ƒ d k  s¢t ‚ | sí|
 j | j ƒ  ƒ } | j ƒ  |
 j ƒ  k sÛt ‚ |
 j | ƒ } n7 | j | j ƒ  ƒ } | j ƒ  st ‚ | j | ƒ } | |	 d |	 d |	 d } | j ƒ  |	 k sZt ‚ | j ƒ  | k srt ‚ t j j d | j ƒ  d | j  ƒ  j! ƒ  d | d | d | d | ƒ } | j" d | j# ƒ  d | j ƒ  ƒ } | j$ | ƒ } xL | D]D } | j ƒ  j% ƒ  d k rñt j | j& ƒ  j ƒ  | ƒ d k  qñqñW| j' | ƒ } t j t j | d j ƒ  | d j ƒ  ƒ ƒ d k  s„t ‚ t j j d | d | j ƒ  d | d | ƒ } | j# ƒ  j% ƒ  d k sÏt ‚ t j t j | j ƒ  | j ƒ  ƒ ƒ d k  st ‚ | j( ƒ  } | j) d  | d d ƒ j ƒ  } t j j d | j ƒ  d | d | j ƒ  d | j ƒ  d |	 d t j | ƒ d | ƒ } t j j d | j ƒ  d | d | j ƒ  d | j ƒ  d | ƒ } | j# ƒ  j% ƒ  d k sÞt ‚ t j t j | j ƒ  | j ƒ  ƒ ƒ d k  st ‚ d  S("   Nt   elementst   Nt   Ct   Ot   random_f_prime_d_mini   t   random_f_double_primet   use_u_anisot   random_u_isot   random_occupancyR   R   t	   algorithmt   directR   R   R   R   R   R   R   R    g»½×Ùß|Û=i    i   R	   t   space_group_typeR,   t   indicesR.   gñhãˆµøä>t   xray_structure(   R6   R7   R7   R8   (*   R   RB   R   R   t   f_calcR   R   R   R&   R'   R(   R)   R   R*   R   RA   R.   R   R+   t   expand_to_p1t   maxt   absR,   R   t   backwardt   allt   m_realt   forwardt	   is_paddedt   focust   from_mapR	   R   t   typet   customized_copyR   t	   lone_setst   sizet
   d_spacingst   common_setst   asymmetric_unit_in_p1t!   structure_factors_from_scatterers(   R   R   R    R   R   R   t   verboset	   structureRC   R   R1   R'   R2   R3   t	   f_calc_p1t   map_p1t   real_mapR,   RM   RP   t   lone_setRS   t   structure_p1(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   exercise_shannon_sampled@   sº    					4		*#	4			g       @c   !      C   s¾  t  j |  d d! d d d | d t d	 t d
 t ƒj d | d | d d ƒ } | j ƒ  }	 t j d |	 j ƒ  d | d | d | d | f d ƒ j ƒ  }
 | s¸ t	 j
 |
 ƒ } | j ƒ  } n t	 j |
 ƒ } | j ƒ  } t j j d |	 j ƒ  d | d |	 j ƒ  d |	 j ƒ  d |
 d t j | ƒ d | ƒ } |	 j ƒ  } t j j d | j ƒ  d | d | j ƒ  d | j ƒ  d |
 d t j | ƒ d | ƒ } t j t j | j ƒ  | j ƒ  ƒ ƒ d k  s»t ‚ | s÷| j | j ƒ  ƒ } | j ƒ  | j ƒ  k st ‚ n( | j | j ƒ  ƒ } | j ƒ  st ‚ d s+| r•| sZt j | ƒ j ƒ  t j | ƒ j ƒ  q•t j t j | ƒ ƒ j ƒ  t j t j  | ƒ ƒ j ƒ  n  g  |
 D] } | | ^ qœ} | sÖt	 j
 | ƒ } | j ƒ  } n t	 j | ƒ } | j ƒ  } t j j d |	 j ƒ  d | d |	 j ƒ  d |	 j ƒ  d | d t j | ƒ d | ƒ } t j j d | j ƒ  d | d | j ƒ  d | j ƒ  d | d t j | ƒ d | ƒ } t j t j | j ƒ  | j ƒ  ƒ ƒ d k  sÍt ‚ | s| j ƒ  j! ƒ  } | j | j ƒ  ƒ } | j ƒ  | j ƒ  k sCt ‚ n( | j | j ƒ  ƒ } | j ƒ  sCt ‚ d sO| r¹| s~t j | ƒ j ƒ  t j | ƒ j ƒ  q¹t j t j | ƒ ƒ j ƒ  t j t j  | ƒ ƒ j ƒ  n  d sÅ| ræ| j ƒ  G| GH| j ƒ  G| GHn  | sû| } | } n t j | ƒ } t j | ƒ } t j" ƒ  } | j# ƒ  } xz t$ d | d | ƒ D]b } xY t$ d | d | ƒ D]A } x8 t$ d | d | ƒ D]  } | j% | | | | f ƒ q‚WqeWqHWt j& | t j | j# ƒ  ƒ ƒ j' ƒ  } d sá| rd Gt( | ƒ GHd Gt( | ƒ GHn  t j t j | | ƒ ƒ t j t j | ƒ ƒ t j t j | ƒ ƒ d d k  sZt ‚ | d k rºt j& | t j | j# ƒ  ƒ ƒ j' ƒ  } t j) | | ƒ }  |  j* ƒ  d  k sºt ‚ n  d  S("   NR5   R6   R7   R8   R9   i   R:   R;   R<   R=   R   R   R>   R?   R	   R   R   R   i   R   R   R   R   R   R    g»½×Ùß|Û=i    i   s   x:s   y:g�íµ ÷Æ°>g§èH.ÿï?(   R6   R7   R7   R8   (+   R   RB   R   R   RC   R   R   R	   R   R   R&   R'   R(   R)   R*   R   RA   R.   R   R+   RD   RE   RF   R,   R   RG   RH   RI   RK   t
   statisticst   show_summaryt   realt   imagt	   deep_copyt   doubleRL   t   xranget   appendt   copyt   as_1dt   tuplet   linear_correlationt   coefficient(!   R   R   R    t   under_samplingR   R   R   RV   R   RC   R   R1   R'   R2   R3   RX   RY   RZ   R)   t   n_real_under_sampledt   n_complex_under_sampledt   under_sampled_mapt   under_sampled_map_p1t   under_sampled_map_before_fftt   under_sampled_real_mapt   x_sourcet   y_sourcet   xt   it   jt   kt   yt   c(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   exercise_under_sampled£   sÜ    			4!		!	&'?'g      ø?c      
   C   sÞ   t  j |  d d d d d d	 ƒ} | j d
 t d | d d ƒ j ƒ  } | j ƒ  j ƒ  } x€ d d g D]r } t j d | j	 ƒ  d | d | j
 ƒ  d | ƒ } t j d | d t ƒ } t | ƒ d d d d g k sd t ‚ qd Wd  S(   NR5   R7   t   HR8   t   Clt   volume_per_atomiô  t   min_distancei   R   R   R>   R?   i   i   R	   R.   t
   sites_fract   radiust   reversei   i    (   R7   R{   R8   R|   (   R   RB   R   R$   RC   t   fft_mapt   real_map_unpaddedR   t   average_densitiesR	   R   R   t   sort_permutationR   t   listR   (   R   R   RW   RC   R3   R€   t	   densitiest   perm(    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   exercise_average_densities  s$    				c         C   sö   x… t  t f D]v } xm t  t f D]^ } x3 t  t f D]$ } | rT t j | ƒ } q6 | } q6 Wt d | d | d | d |  j ƒ q" Wq WxZ t  t f D]K } xB t  t f D]3 } x* d
 D]" } t | | | | d |  j ƒq· Wqª Wq– Wt d | ƒ d  S(   NR   R   R    RV   i   i   i   i   i   (   i   i   i   i   i   (   R$   R   R   t   random_origin_shiftR]   t   VerboseRz   R‰   (   t   flagsR   R   R    t
   with_shiftt   sgiRk   (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   run_call_back2  s(    
c           C   s)   t  ƒ  t ƒ  t j t j d t ƒ d  S(   Ni   (   R   R4   R   t   parse_options_loop_space_groupst   syst   argvR�   (    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   runI  s    t   __main__(   t
   __future__R    t   cctbxR   R   R   t   cctbx.developmentR   R   t   cctbx.array_familyR   t   scitbxR   t   libtbx.test_utilsR   R‘   R   R4   R]   Rz   R‰   R�   R“   t   __name__(    (    (    s[   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_maptbx_structure_factors.pyt   <module>   s(   		$	c	x		