ó
A™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 Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z e d k r� e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   approx_equal(   t   uctbx(   t   flexNc    	      C   s  d d l  m }  |  d t j d t j ƒ t j d d g ƒ } t | j ƒ  d d g ƒ s_ t ‚ t j d ƒ t j d ƒ t j d ƒ } } } t j | | | ƒ } t | d d d d f ƒ sÄ t ‚ t j d  d! g ƒ } t j	 d" d# g ƒ } d$ } t | j
 d | d | ƒ d ƒ st ‚ d  S(%   Niÿÿÿÿ(   t   exercise_triplet   flex_triplet
   flex_orderi   i   i   i   i    i   iþÿÿÿy              @iùÿÿÿy               @g¡g³êsµí?gZd;ßO�ô¿g¶„|Ð³YÍ¿t   fourier_coeffst   xg1ae‰ß.@(   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   y      @      Ày      À       @(   g¡g³êsµí?gZd;ßO�ô¿g¶„|Ð³YÍ¿(   t   scitbx.array_family.flexR   R   t   miller_indext   orderR   t   as_vec3_doublet   AssertionErrort   intt   complex_doublet    fourier_transform_real_part_at_x(	   R   t   at   ht   kt   lt   bt   it   cR   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/array_family/boost_python/tst_flex.pyt   exercise_flex_miller_index   s    !!c    
   	   C   s„  t  j ƒ  }  |  j ƒ  d k s$ t ‚ t  j d ƒ }  x  |  D] } | d% k s: t ‚ q: Wt  j d& d' d( f ƒ }  |  j ƒ  d k s† t ‚ |  j d) ƒ d k s¡ t ‚ |  j d* ƒ d k s¼ t ‚ t |  ƒ d+ d, d- f k sÝ t ‚ t |  |  ƒ d. d/ d0 f k st ‚ |  |  7}  t |  ƒ d1 d2 d3 f k s-t ‚ t j |  ƒ } t j | ƒ } t |  ƒ t | ƒ k sit ‚ t  j	 t
 t g ƒ } t  j t d d ƒ t d d ƒ g ƒ } t  j d | d | d d4 ƒ }  t |  d5 d6 g ƒ sÞt ‚ t g  t d ƒ D] } |  j | ƒ ^ qîd d g d d g d d g d d g g ƒ s9t ‚ t  j d d7 ƒ }  |  j d8 ƒ s`t ‚ |  j d9 ƒ svt ‚ t |  j ƒ  d: d; d< g ƒ sšt ‚ t |  j ƒ  j ƒ  |  ƒ s»t ‚ t  j ƒ  }  t  j d |  d |  ƒ } | j ƒ  d k s÷t ‚ t  j d d d g ƒ }  t  j d d d g ƒ } t  j d |  d | ƒ } t | d= d> d? g ƒ s]t ‚ t | d@ k t t
 t
 f ƒ s�t ‚ t | dA k t
 t t f ƒ s¥t ‚ t | dB k t t t f ƒ sÉt ‚ t | | j ƒ  k t t t f ƒ sót ‚ t | t  j d | d |  ƒ k t
 t
 t
 f ƒ s)t ‚ t | t  j d | d |  ƒ k t t t f ƒ s_t ‚ t | t  j d | d |  ƒ k t t t f ƒ s•t ‚ t | | j ƒ  k t
 t
 t
 f ƒ s¿t ‚ t  j d d d g ƒ } t  j d d d	 g ƒ }	 t  j d |  d | d | d  |	 ƒ } t | dC dD dE g ƒ s1t ‚ t | j ƒ  |  | | |	 g ƒ sXt ‚ | d } t | dF dG dH g ƒ s€t ‚ d  S(I   Ni    i„   i   i   i   i   i   i   i   i
   i   g      à?gffffffæ¿g333333Ó¿gš™™™™™Ù?t   centric_flagst   phase_integralst   max_figure_of_meritg�íµ ÷Æ°>g¡_LðÙ%@g¹71h	Àg>�Ï,æÕ¿g¬Ñ‘ÝÜ?g        iþÿÿÿiüÿÿÿR   R   iýÿÿÿi   R   t   diúÿÿÿ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   gé!çýÿï?(   g¡_LðÙ%@g¹71h	Ài    i    (   g>�Ï,æÕ¿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    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   hendrickson_lattmant   sizeR   t   countt   tuplet   picklet   dumpst   loadst   boolt   Falset   TrueR   t   complexR   t   xranget   slicet   all_eqt   conjt   doublet	   deep_copyt   as_abcd(
   R   R   t   pR   R   R   R   R   R   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/array_family/boost_python/tst_flex.pyt!   exercise_flex_hendrickson_lattman   sz    !%
!'			%			$!$$$*333'$'
c          C   s!
  d d l  m }  m } m } |  j dF ƒ } | j d ƒ } t j ƒ  } | j ƒ  d k s^ t	 ‚ t j | j
 d dG ƒ | j
 d dH dI d ƒ | j
 d dJ dK d d d d d ƒf ƒ } | j ƒ  d k sÊ t	 ‚ | d j ƒ  d k sæ t	 ‚ | d j | | j ƒ  ƒ | d j ƒ  d k st	 ‚ t | d j ƒ  d ƒ s;t	 ‚ d | j ƒ  _ t | d j d ƒ sft	 ‚ d | j ƒ  _ t | d j d ƒ s‘t	 ‚ | d j j d t ƒ | d j j d t ƒ d | d j _ t j | ƒ } t j | ƒ } | j ƒ  } | j ƒ  | j ƒ  k od k n s't	 ‚ | d j j d t ƒ | d j j d t ƒ | d j j d t ƒ | j ƒ  d k s„t	 ‚ | j ƒ  d k sœt	 ‚ xtt  | ƒ D]f\ }	 }
 | |	 } |
 j! | j! k s×t	 ‚ |
 j" | j" k sït	 ‚ t |
 j# | j# ƒ s
t	 ‚ t |
 j$ | j$ ƒ s%t	 ‚ t |
 j% | j% ƒ s@t	 ‚ |
 j j& ƒ  | j j& ƒ  k sdt	 ‚ |
 j' | j' k s|t	 ‚ |
 j( | j( k s”t	 ‚ |
 j ƒ  | j ƒ  k s²t	 ‚ t |
 j ƒ  | j ƒ  ƒ sÓt	 ‚ |
 j j) | j j) k sñt	 ‚ |
 j j | j j k s©t	 ‚ q©W| d j j* ƒ  s,t	 ‚ | d j j+ ƒ  sFt	 ‚ | d j j* ƒ  s`t	 ‚ | d j j+ ƒ  syt	 ‚ | d j j d k s•t	 ‚ t, | j- ƒ  ƒ d d d g k s¼t	 ‚ t, | j. ƒ  ƒ d d  d! g k sãt	 ‚ t | j/ ƒ  dL dM dN f ƒ st	 ‚ | j0 d" t j1 dO dP dQ f ƒ ƒ t | j/ ƒ  dR dS dT f ƒ sMt	 ‚ t | d j% dU ƒ sit	 ‚ t | j2 ƒ  dV ƒ s„t	 ‚ | j3 d% t j4 dW ƒ ƒ t | j2 ƒ  dX ƒ s¸t	 ‚ t | d j d
 ƒ sÔt	 ‚ t | j5 ƒ  dY ƒ sït	 ‚ t | j6 d( | ƒ d& d) d* dZ f ƒ st	 ‚ | j7 d, t j4 d[ ƒ d. t j8 | j ƒ  t ƒ d( | ƒ t | j5 ƒ  d\ ƒ sot	 ‚ t | j6 d( | ƒ d] ƒ s�t	 ‚ t | d j' d ƒ s¬t	 ‚ d^ d_ d` g } t | j9 | ƒ | ƒ sÙt	 ‚ | j: d/ t j; da db dc g ƒ ƒ t | j< ƒ  dd de df g ƒ st	 ‚ t | d j( dg ƒ s;t	 ‚ |  j dh ƒ } | j= d( | d3 t j; di dj dk g ƒ ƒ t | j9 d( | ƒ dl dm dn g ƒ sœt	 ‚ | j= d( | d3 t j; do dp dq g ƒ d. t j> d d g ƒ ƒ t | j9 d( | ƒ dr ds dt g ƒ st	 ‚ |  j du ƒ } | j= d( | d3 t j; dv dw dx g ƒ ƒ t | j< ƒ  dy dz d{ g ƒ s^t	 ‚ t | j5 ƒ  d d d g ƒ s‚t	 ‚ | j? d> ƒ t | j< ƒ  d| d} d~ g ƒ s³t	 ‚ t | j5 ƒ  d4 d d g ƒ s×t	 ‚ | j@ ƒ  d k sït	 ‚ | jA ƒ  d k s	t	 ‚ | jB d( | ƒ | j@ ƒ  d k s/	t	 ‚ | jC d( | ƒ | j@ ƒ  d k sW	t	 ‚ | jD ƒ  } t | j/ ƒ  d d€ d� g ƒ s‡	t	 ‚ d‚ | d _% | jE ƒ  } t | j/ ƒ  dƒ d„ d… g ƒ sÄ	t	 ‚ | jF ƒ  jG tH ƒ sß	t	 ‚ | d j j d t ƒ t, | jF ƒ  ƒ tH t tH g k s
t	 ‚ d  S(†   Niÿÿÿÿ(   R   t   sgtbxt   xrayi
   i   i   s   P 2i    t   Si1gš™™™™™¹?gš™™™™™É?g333333Ó?t   O1gš™™™™™Ù?i   i   i   gš™™™™™¹¿g333333Ó¿gÍÌÌÌÌÌì?t   K1g      à?gš™™™™™É¿gš™™™™™é?t   fpi   t   fdpi   gffffffæ?t   stateiÿÿÿt   Sit   Ot   Kt   sitesgš™™™™™Ù¿g      à¿t   occupanciesg        g      ð¿t	   unit_celli  iì   g      @t   u_isoi   t	   selectiont   u_stariþÿÿÿg333333ã¿iZ   t   u_carti   g{®Gáz„?g{®Gáz”?g¸…ëQ¸ž?gú~j¼t“x¿gü©ñÒMb`?gú~j¼t“h¿gü©ñÒMb`¿g{®Gázt?gü©ñÒMbP¿g       @g{®Gáz¤?g¸…ëQ¸®?gú~j¼t“ˆ¿gü©ñÒMbp?gü©ñÒMbp¿g333333ã?gffffffö?(   i
   i   i   (   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™É?g333333Ó?gš™™™™™Ù?(   i   i   i   gš™™™™™¹¿gš™™™™™É?g333333Ó¿(   g333333Ó?gš™™™™™Ù?g      à?(   i   i   i   gš™™™™™É¿g333333Ó?gš™™™™™¹¿(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™É?g333333Ó?gš™™™™™Ù?(   g333333Ó?gš™™™™™Ù?g      à?(   gš™™™™™¹¿gš™™™™™É¿g333333Ó¿(   gš™™™™™É¿g333333Ó¿gš™™™™™Ù¿(   g333333Ó¿gš™™™™™Ù¿g      à¿(   gš™™™™™¹¿gš™™™™™É¿g333333Ó¿(   gš™™™™™É¿g333333Ó¿gš™™™™™Ù¿(   g333333Ó¿gš™™™™™Ù¿g      à¿(   gš™™™™™É¿g333333Ó¿gš™™™™™Ù¿(   gš™™™™™é?gÍÌÌÌÌÌì?gffffffæ?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   g        g      ð¿g      ð¿gUUUUUUÕ?(   i   i   i   (   i   iÿÿÿÿiÿÿÿÿ(   i   i   i   (   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   i   i   i   i    i    i    (   i   i   i   i    i    i    (   iÿÿÿÿiþÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   i   i   i   g333333ã¿gš™™™™™É?g333333Ó¿(   i   i   i   gš™™™™™É¿g      à?gš™™™™™¹¿(   iÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   i   i   i   g333333ã¿gš™™™™™É?g333333Ó¿(   i   i   i   gš™™™™™É¿g      à?gš™™™™™¹¿(   i   i   i   g333333ã¿gš™™™™™É?g333333Ó¿(   i   i   i   iZ   iZ   iZ   (   iÿÿÿÿiþÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   i   i   i   g333333ã¿gš™™™™™É?g333333Ó¿(   i   i   i   gš™™™™™É¿g      à?gš™™™™™¹¿(   iÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   i   i   i   g333333ã¿gš™™™™™É?g333333Ó¿(   i   i   i   gš™™™™™É¿g      à?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
   iZ   iZ   iZ   (   iÿÿÿÿiþÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   i   i   i   g333333ã¿gš™™™™™É?g333333Ó¿(   i   i   i   gš™™™™™É¿g      à?gš™™™™™¹¿(   iÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   g{®Gáz„?g{®Gáz”?g¸…ëQ¸ž?gú~j¼t“x¿gü©ñÒMb`?gú~j¼t“h¿(   g¸…ëQ¸ž?g{®Gáz„?g{®Gáz”?gü©ñÒMb`¿g{®Gázt?gü©ñÒMbP¿(   iÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   g{®Gáz”?g{®Gáz¤?g¸…ëQ¸®?gú~j¼t“ˆ¿gü©ñÒMbp?gú~j¼t“x¿(   g¸…ëQ¸®?g{®Gáz”?g{®Gáz¤?gü©ñÒMbp¿g{®Gáz„?gü©ñÒMb`¿(   gÍÌÌÌÌÌì?gš™™™™™é?gffffffæ?(   gš™™™™™é?gffffffæ?g333333ã?(   gffffffæ?g333333ã?g      à?(   gffffffæ?g333333ã?gffffffö?(   gš™™™™™¹¿gš™™™™™É¿g333333Ó¿(   gš™™™™™É¿g333333Ó¿gš™™™™™Ù¿(   g333333Ó¿gš™™™™™Ù¿gš™™™™™Ù?(I   t   cctbxR   R1   R2   R>   t   space_group_infoR   t   xray_scattererR   R   t	   scatterert   multiplicityt   apply_symmetryt   groupR   t   weightt   frontt	   occupancyt   backt   flagst   set_grad_siteR&   t   set_grad_fpt   paramR!   R"   R#   R-   t   n_grad_u_isot   n_grad_u_anisot   set_grad_u_isot   set_grad_u_anisot	   enumeratet   labelt   scattering_typeR6   R7   t   sitet   use_u_anisoR?   RA   t   bitst	   grad_sitet   grad_fpt   listt   extract_labelst   extract_scattering_typest   extract_sitest	   set_sitest   vec3_doublet   extract_occupanciest   set_occupanciesR,   t   extract_u_isot   extract_u_iso_or_u_equivt	   set_u_isoR$   t   extract_u_cartt
   set_u_start   sym_mat3_doublet   extract_u_start
   set_u_cartt   size_tt
   scale_adpst   count_anisotropict   count_anomaloust   convert_to_isotropict   convert_to_anisotropict   sites_mod_positivet   sites_mod_shortt   extract_grad_u_isoR*   R%   (   R   R1   R2   t   uct   sgR   R/   R   t   a_R   t   ait   bit   u_cart_answerR>   t   m(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/array_family/boost_python/tst_flex.pyt   exercise_flex_xray_scattererY   s   .
$!"''0			$$c          C   s)  d d l  m }  m } m } |  j d ƒ } | j d ƒ } t j ƒ  } | j ƒ  d k s^ t	 ‚ | j
 d d d d	 ƒ } | j
 d d d d	 ƒ } | j j t ƒ | j
 d d d d ƒ } | j
 d d d d ƒ }	 |	 j j t ƒ | j
 d d d d	 ƒ }
 d |
 _ |
 j j t ƒ | j
 d d d d	 ƒ } d | _ | j
 d d d d ƒ } d	 | _ | j
 d d d d ƒ } d	 | _ | j j t ƒ | j
 d d ƒ } | j
 d d ƒ } | j j t ƒ t j | | | |	 |
 | | | | | f
 ƒ } | j | ƒ } t | d d d d d d d d d d g
 ƒ s%t	 ‚ d  S(   Niÿÿÿÿ(   R   R1   R2   i   s   P 1i    RW   t   Ct   ugš™™™™™¹?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   (   gš™™™™™¹?gš™™™™™¹?gš™™™™™¹?i    i    i    (   i    i    i    i    i    i    (   i   i   i   i   i   i   (   i    i    i    i    i    i    (   gš™™™™™ñ?gš™™™™™ñ?gš™™™™™ñ?i   i   i   (   gš™™™™™¹?gš™™™™™¹?gš™™™™™¹?i    i    i    (   i   i   i   i   i   i   (   gš™™™™™ñ?gš™™™™™ñ?gš™™™™™ñ?i   i   i   (   i    i    i    i    i    i    (   i    i    i    i    i    i    (   RC   R   R1   R2   R>   RD   R   RE   R   R   RF   RN   t   set_use_u_isoR%   t   set_use_u_anisoRA   R&   R?   t   extract_u_cart_plus_u_isoR   (   R   R1   R2   Rw   Rx   R   t   s1t   s2t   s3t   s4t   s5t   s6t   s7t   s8t   s9t   s10t   u_cart_total(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/array_family/boost_python/tst_flex.pyt"   exercise_extract_u_cart_plus_u_isoì   sJ    				-c           C   s%   t  ƒ  t ƒ  t ƒ  t ƒ  d GHd  S(   Nt   OK(   R   R0   R~   R�   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/array_family/boost_python/tst_flex.pyt   run  s
    t   __main__(   t
   __future__R    t   libtbx.test_utilsR   RC   R   t   cctbx.array_familyR   R!   R   R0   R~   R�   R‘   t   __name__(    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/array_family/boost_python/tst_flex.pyt   <module>   s   		@	“	'	