ó
.™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 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 m Z m Z m Z d  d l m Z d  d l Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d  „  Z) d! „  Z* d" „  Z+ d# „  Z, e- d$ k rÆe, ƒ  n  d S(%   iÿÿÿÿ(   t   division(   t   uctbx(   t   sgtbx(   t   adptbx(   t   eltbx(   t   crystalN(   t   xray(   t   math_module(   t   flex(   t   shared(   t   Exception_expectedt   approx_equalt   not_approx_equalt	   show_diff(   t   StringIOc    
      C   sM  t  j ƒ  }  |  j ƒ  t k s$ t ‚ |  j ƒ  t k s< t ‚ |  j ƒ  t k sT t ‚ |  j ƒ  t k sl t ‚ |  j	 ƒ  t k s„ t ‚ |  j
 ƒ  t k sœ t ‚ |  j ƒ  t k s´ t ‚ |  j ƒ  t k sÌ t ‚ |  j ƒ  t k sä t ‚ |  j ƒ  t k sü t ‚ |  j ƒ  t k st ‚ |  j ƒ  t k s,t ‚ |  j ƒ  t k sDt ‚ |  j ƒ  t k s\t ‚ |  j ƒ  t k stt ‚ |  j ƒ  t k sŒt ‚ |  j ƒ  t k s¤t ‚ |  j ƒ  t k s¼t ‚ |  j ƒ  t k sÔt ‚ |  j ƒ  t k sìt ‚ |  j ƒ  t k st ‚ |  j ƒ  t k st ‚ |  j ƒ  t k s4t ‚ |  j ƒ  t k sLt ‚ |  j ƒ  t k sdt ‚ |  j ƒ  t k s|t ‚ |  j ƒ  t k s”t ‚ |  j  ƒ  t k s¬t ‚ |  j! ƒ  t k sÄt ‚ |  j" ƒ  t k sÜt ‚ |  j# ƒ  t k sôt ‚ |  j$ d k s	t ‚ x­t t g D]Ÿ} |  j% | ƒ |  j& | ƒ |  j' | ƒ |  j( | ƒ |  j) | ƒ |  j* | ƒ |  j+ | ƒ |  j, | ƒ |  j- | ƒ |  j. | ƒ |  j/ | ƒ |  j0 | ƒ |  j1 | ƒ |  j2 | ƒ |  j3 | ƒ |  j4 | ƒ |  j5 | ƒ |  j6 | ƒ |  j7 | ƒ |  j8 | ƒ |  j9 | ƒ |  j: | ƒ |  j; | ƒ |  j< | ƒ |  j= | ƒ |  j> | ƒ |  j? | ƒ |  j@ | ƒ |  jA | ƒ |  jB | ƒ |  jC | ƒ d |  _$ |  j ƒ  | k sÐt ‚ |  j ƒ  | k sèt ‚ |  j ƒ  | k s t ‚ |  j ƒ  | k st ‚ |  j	 ƒ  | k s0t ‚ |  j
 ƒ  | k sHt ‚ |  j ƒ  | k s`t ‚ |  j ƒ  | k sxt ‚ |  j ƒ  | k s�t ‚ |  j ƒ  | k s¨t ‚ |  j ƒ  | k sÀt ‚ |  j ƒ  | k sØt ‚ |  j ƒ  | k sðt ‚ |  j ƒ  | k st ‚ |  j ƒ  | k s t ‚ |  j ƒ  | k s8t ‚ |  j ƒ  | k sPt ‚ |  j ƒ  | k sht ‚ |  j ƒ  | k s€t ‚ |  j ƒ  | k s˜t ‚ |  j ƒ  | k s°t ‚ |  j ƒ  | k sÈt ‚ |  j ƒ  | k sàt ‚ |  j ƒ  | k søt ‚ |  j ƒ  | k st ‚ |  j ƒ  | k s(t ‚ |  j ƒ  | k s@t ‚ |  j  ƒ  | k sXt ‚ |  j! ƒ  | k spt ‚ |  j" ƒ  | k sˆt ‚ |  j# ƒ  | k s t ‚ |  j$ d k st ‚ qW|  j& d t ƒ |  j' d t ƒ |  jD ƒ  |  j ƒ  sõt ‚ |  j ƒ  st ‚ |  jE ƒ  st ‚ |  jF ƒ  s-t ‚ |  jG ƒ  |  j ƒ  sJt ‚ |  j ƒ  s\t ‚ |  jE ƒ  sot ‚ |  jF ƒ  s�t ‚ |  jH d t d t ƒ y |  jE ƒ  Wn/ tI k
 rÖ} tJ tK | ƒ d ƒ sÝt ‚ n XtL ‚ y |  jF ƒ  Wn/ tI k
 r	} tJ tK | ƒ d ƒ s#	t ‚ n XtL ‚ |  jH d t d t ƒ y |  jE ƒ  Wn/ tI k
 rx	} tJ tK | ƒ d ƒ s	t ‚ n XtL ‚ y |  jF ƒ  Wn/ tI k
 r¾	} tJ tK | ƒ d	 ƒ sÅ	t ‚ n XtL ‚ t  j ƒ  } | j( t ƒ | j* t ƒ | j, t ƒ t  j ƒ  } | jM | ƒ s
t ‚ | j( t ƒ | j* t ƒ | j, t ƒ | jM | ƒ sU
t ‚ | j) t ƒ | jM | ƒ sx
t ‚ t  jN ƒ  } t  j ƒ  } | j& t ƒ | j) t ƒ | j, t ƒ | jO | ƒ t  j ƒ  } | j( t ƒ | j* t ƒ | jO | ƒ | d jP | jP k st ‚ | d
 jP | jP k s/t ‚ x | D] }  |  j+ t ƒ q6W| d j ƒ  sct ‚ | d
 j ƒ  syt ‚ | jQ ƒ  d k s‘t ‚ t  jR d d d ƒ} tS jT d | ƒ } x> | D]6 } | jU j( t ƒ | jU j' t ƒ | jU j* t ƒ q¿Wt  jN | ƒ }	 g  |	 D] }  |  jP ^ qg  | D] } | jU jP ^ q(k sIt ‚ d  S(   Ni    i*   t   statet   isot   anisos:   scatterer.flags.u_iso_only(): u_iso and u_aniso both true.s<   scatterer.flags.u_aniso_only(): u_iso and u_aniso both true.s;   scatterer.flags.u_iso_only(): u_iso and u_aniso both false.s=   scatterer.flags.u_aniso_only(): u_iso and u_aniso both false.i   i   t   Ct   sitegš™™™™™Ù?g      à?g333333ã?i
   (   gš™™™™™Ù?g      à?g333333ã?(V   R   t   scatterer_flagst   uset   Truet   AssertionErrort	   use_u_isot   Falset   use_u_anisot	   grad_sitet
   grad_u_isot   grad_u_anisot   grad_occupancyt   grad_fpt   grad_fdpt   curv_site_sitet   curv_site_u_isot   curv_site_u_anisot   curv_site_occupancyt   curv_site_fpt   curv_site_fdpt   curv_u_iso_u_isot   curv_u_iso_u_anisot   curv_u_iso_occupancyt   curv_u_iso_fpt   curv_u_iso_fdpt   curv_u_aniso_u_anisot   curv_u_aniso_occupancyt   curv_u_aniso_fpt   curv_u_aniso_fdpt   curv_occupancy_occupancyt   curv_occupancy_fpt   curv_occupancy_fdpt
   curv_fp_fpt   curv_fp_fdpt   curv_fdp_fdpt	   tan_u_isot   paramt   set_uset   set_use_u_isot   set_use_u_anisot   set_grad_sitet   set_grad_u_isot   set_grad_u_anisot   set_grad_occupancyt   set_grad_fpt   set_grad_fdpt   set_curv_site_sitet   set_curv_site_u_isot   set_curv_site_u_anisot   set_curv_site_occupancyt   set_curv_site_fpt   set_curv_site_fdpt   set_curv_u_iso_u_isot   set_curv_u_iso_u_anisot   set_curv_u_iso_occupancyt   set_curv_u_iso_fpt   set_curv_u_iso_fdpt   set_curv_u_aniso_u_anisot   set_curv_u_aniso_occupancyt   set_curv_u_aniso_fpt   set_curv_u_aniso_fdpt   set_curv_occupancy_occupancyt   set_curv_occupancy_fpt   set_curv_occupancy_fdpt   set_curv_fp_fpt   set_curv_fp_fdpt   set_curv_fdp_fdpt   set_tan_u_isot   set_use_u_iso_onlyt   use_u_iso_onlyt   use_u_aniso_onlyt   set_use_u_aniso_onlyt	   set_use_ut   RuntimeErrorR   t   strR
   t   impliest   shared_scatterer_flagst   appendt   bitst   n_parameterst	   scattererR   t   xray_scatterert   flags(
   t   fR   t   et   f1t   f2Re   t   xt
   scattererst   sct
   grad_flags(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_scatterer_flags   s\   	

    c          C   s+
  t  j d d d d d d d ƒ}  t  j d d d d d d d
 ƒ} t j d |  ƒ } | j t j d | ƒ ƒ xã | D]Û } | j j ƒ  t k s• t ‚ | j j	 ƒ  t k s° t ‚ | j j
 ƒ  t k sË t ‚ | j j ƒ  t k sæ t ‚ | j j ƒ  t k st ‚ | j j ƒ  t k st ‚ | j j ƒ  t k s7t ‚ | j j d	 k st t ‚ qt Wt  j d | ƒ xã | D]Û } | j j ƒ  t k s‹t ‚ | j j	 ƒ  t k s¦t ‚ | j j
 ƒ  t k sÁt ‚ | j j ƒ  t k sÜt ‚ | j j ƒ  t k s÷t ‚ | j j ƒ  t k st ‚ | j j ƒ  t k s-t ‚ | j j d	 k sjt ‚ qjWd	 } d	 } x1t t g D]#} xt t g D]} xt t g D]õ} xìt t g D]Þ}	 xÕt t g D]Ç}
 x¾t t g D]°} x§t t g D]™} x�d	 d d g D]} t  j d | d | d | d | d |	 d |
 d | d | d | ƒ 	x6| D].} | j j ƒ  | k sXt ‚ | j j ƒ  rª| j j	 ƒ  | k s‚t ‚ | j j
 ƒ  t k s�t ‚ | d 7} n  | j j ƒ  rü| j j	 ƒ  t k sÔt ‚ | j j
 ƒ  | k sït ‚ | d 7} n  | j j ƒ  |	 k st ‚ | j j ƒ  |
 k s2t ‚ | j j ƒ  | k sMt ‚ | j j | k s7t ‚ q7WqêWqÔWqÁWq®Wq›WqˆWquWqbW| d	 k s›t ‚ | d	 k s­t ‚ t  j d | ƒ xã | D]Û } | j j ƒ  t k såt ‚ | j j	 ƒ  t k s t ‚ | j j
 ƒ  t k st ‚ | j j ƒ  t k s6t ‚ | j j ƒ  t k sQt ‚ | j j ƒ  t k slt ‚ | j j ƒ  t k s‡t ‚ | j j d	 k sÄt ‚ qÄWt  j d | d t d d ƒ xã | D]Û } | j j ƒ  t k sçt ‚ | j j	 ƒ  t k st ‚ | j j
 ƒ  t k st ‚ | j j ƒ  t k s8t ‚ | j j ƒ  t k sSt ‚ | j j ƒ  t k snt ‚ | j j ƒ  t k s‰t ‚ | j j d k sÆt ‚ qÆW| d	 } x)t t g D]} xt t g D]} | j j | ƒ | j j | ƒ | j j ƒ  | k st ‚ | j j ƒ  | k s+t ‚ | j j d | d | ƒ | j j ƒ  | k s_t ‚ | j j ƒ  | k szt ‚ | r�| j j ƒ  n | j j ƒ  | j j ƒ  | k s¸t ‚ | j j ƒ  | k sÏt ‚ qÏWq¼WxIt t g D];} x2t t g D]$} | j j | ƒ | j j | ƒ | j j ƒ  | k s<t ‚ | j j ƒ  | k sWt ‚ d | _ d d d d d d g | _ | j d | d | ƒ | j j ƒ  | k s¬t ‚ | j j ƒ  | k sÇt ‚ | t k rë| j d k sët ‚ n  | t k r	| j d k s	t ‚ n  | r-	| j d k s-	t ‚ n  | rK	| j d k sK	t ‚ n  d | _ d d d d d d g | _ | r‚	| j ƒ  n
 | j ƒ  | j j ƒ  | k s§	t ‚ | j j ƒ  | k sÂ	t ‚ | rõ	| j d k sÝ	t ‚ | j d k s
t ‚ qû| j d k s

t ‚ | j d  k sût ‚ qûWqèWd  S(!   Nt   cR   gš™™™™™¹?gš™™™™™É?g333333Ó?t	   occupancyg        t   ui    g      ð?i
   Rk   i   i   t   u_isot   u_anisot   fpt   fdpR6   R7   iÿÿÿÿR   R   g      à?g      ð¿(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   i    i    i    i    i    i    (   gš™™™™™¹?gš™™™™™É?g333333Ó?(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   g      à?g      à?g      à?g      à?g      à?g      à?(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   g      à?g      à?g      à?g      à?g      à?g      à?(   R   Rc   R   Rd   t   extendRe   R   R   R   R   R   R   R   R    R6   R7   t   set_scatterer_grad_flagsR   R   R   R9   R:   R[   RW   RZ   Rr   t   u_star(   Rj   t   yRk   Rc   t   cn1t   cn2R   Rr   Rs   Rp   Rt   Ru   R6   R7   t   sc0R   R   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt!   exercise_set_scatterer_grad_flagsÁ   sü    !!<
 #	    	 
c    
         sa  t  j d d d d d d d ƒ}  t  j d d d d d d d
 ƒ} t j d |  ƒ ‰  ˆ  j t j d | ƒ ƒ t j d d	 ƒ } ˆ  j | j d d ƒ ƒ ‰  ‡  f d †  } | ƒ  s¸ t ‚ t  j	 d ˆ  ƒ | ƒ  s× t ‚ i  } x0 d j
 ƒ  D]" } | j d d d d ƒ | | <qê WxZ t ˆ  ƒ D]L \ } } | j j ƒ  sIt | d | <n  | j j ƒ  st | d | <qqWˆ  j d t ƒ | ƒ  sŒt ‚ ˆ  j d t ƒ | ƒ  s¬t ‚ x® | j ƒ  D]  \ } } ˆ  j d t ƒ | ƒ  sät ‚ t ˆ  d | ƒ d | j ƒ  ƒ | ƒ  st ‚ xB t ˆ  | ƒ D]1 \ } }	 t | j d | ƒ ƒ  |	 k s$t ‚ q$Wq¹Wd  S(   NRo   R   gš™™™™™¹?gš™™™™™É?g333333Ó?Rp   g        Rq   i    g      ð?i2   t   seedt   sizeid   c             s~   xw ˆ  D]o }  |  j  } | j ƒ  r& t S| j ƒ  r6 t S| j ƒ  rF t S| j ƒ  rV t S| j ƒ  rf t S| j ƒ  r t Sq Wt S(   N(	   Re   R   R   R   R   R   R   R    R   (   Rc   Rf   (   Rk   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt	   all_clearC  s    	      Rk   s#   site u_iso u_aniso occupancy fp fdpt	   thresholdg      à?Rr   Rs   R   t   flags_set_grad_t
   iselectiont   grad_(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   i    i    i    i    i    i    (   gš™™™™™¹?gš™™™™™É?g333333Ó?(   R   Rc   R   Rd   Rv   t   mersenne_twistert   selectt   random_permutationR   Rw   t   splitt   random_boolt	   enumerateRe   R   R   R   t   flags_set_gradsR   t   itemst   getattrRƒ   t   zip(
   Rj   Ry   t   mtR€   t   selst   attrt   i_seqRc   t   selt   flag(    (   Rk   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt*   exercise_set_selected_scatterer_grad_flags<  s:    !!
    c          C   sŠ  t  j d d d d d d d ƒ}  t j d
 |  ƒ } t  j | ƒ } | j d	 k sW t ‚ | j d	 k sl t ‚ | j d	 k s� t ‚ | j	 d	 k s– t ‚ | j
 d	 k s« t ‚ | j d	 k sÀ t ‚ | d j j t ƒ | d j j t ƒ | d j j t ƒ | d j j t ƒ | d j j t ƒ | d j j t ƒ t  j | ƒ } | j	 d k s\t ‚ | j
 d k sqt ‚ | j d k s†t ‚ d  S(   NRo   R   gš™™™™™¹?gš™™™™™É?g333333Ó?Rp   g        Rq   i    i
   i   (   gš™™™™™¹?gš™™™™™É?g333333Ó?(   i    i    i    i    i    i    (   R   Rc   R   Rd   t   scatterer_grad_flags_countsR   R   Rr   Rs   Rp   Rt   Ru   Re   R;   R   R<   R=   R>   R?   R@   (   Rj   Rk   t   manager(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_scatterer_flags_countsb  s&    !c          C   sØ  t  j d ƒ }  t  j d ƒ } t j |  | ƒ } t j |  | d ƒ } t | j d ƒ s] t ‚ t | j d ƒ su t ‚ t j |  ƒ } t | j d ƒ sœ t ‚ | j j ƒ  d k s· t ‚ t j	 |  | ƒ } t j	 |  | d ƒ } t | j d ƒ sö t ‚ t | j d ƒ st ‚ t j	 |  ƒ } t | j d ƒ s5t ‚ | j j ƒ  d k sPt ‚ t j
 |  | ƒ } t | j d ƒ szt ‚ t | j d ƒ s’t ‚ t j
 |  ƒ } t | j d ƒ s¹t ‚ | j j ƒ  d k sÔt ‚ d  S(   Ni
   iÿÿÿÿi   i   g�íµ ÷Æ°>g÷õ2@XL	@i    g¥À]Q¥ÁÃ?gPï˜pž ö?g�Å†=Ä?id   i   iüÿÿÿ(   i
   iÿÿÿÿ(   i   i   (   g÷õ2@XL	@i    (   g¥À]Q¥ÁÃ?gPï˜pž ö?(   g÷õ2@XL	@i    (   g÷õ2@XL	@iÿÿÿÿ(   g�Å†=Ä?i   (   g÷õ2@XL	@iÿÿÿÿ(   id   i   (   i   iüÿÿÿ(   id   i   (   R   t   doubleR   t   array_f_sq_as_f_xtal_3_7R   Rf   R   t   sigma_fR   t   array_f_sq_as_f_crystalst   array_f_as_f_sqt   f_sqt
   sigma_f_sq(   t   dt   st   r(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_conversionsz  s,    c       	   C   sy  t  j j t t t t t t t t ƒ }  |  j s7 t ‚ |  j sF t ‚ |  j sV t ‚ |  j	 se t ‚ |  j
 su t ‚ |  j s„ t ‚ |  j s” t ‚ t |  _ t |  _ t |  _ t |  _	 t |  _
 t |  _ t |  _ |  j sâ t ‚ |  j sò t ‚ |  j st ‚ |  j	 st ‚ |  j
 s t ‚ |  j s0t ‚ |  j s?t ‚ t  j j |  ƒ } | j s`t ‚ | j spt ‚ | j st ‚ | j	 s�t ‚ | j
 sžt ‚ | j s®t ‚ |  j ƒ  sÁt ‚ t  j j t t t t t t t t ƒ j ƒ  sôt ‚ t |  _ |  j t ƒ j t k st ‚ |  j t ƒ j t k s9t ‚ |  j t ƒ j t k sWt ‚ |  j t ƒ j t k sut ‚ d  S(   N(   R   t   extt   gradient_flagsR   R   R   R   Rr   Rs   Rp   Rt   Ru   t
   sqrt_u_isot	   all_falset   adjust(   Rf   Ro   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_gradient_flags’  sL    									*	c          C   s	  t  j d d€ d d d d d ƒ }  |  j d k s6 t ‚ d	 |  _ |  j d	 k sT t ‚ |  j d k si t ‚ d
 |  _ |  j d
 k s‡ t ‚ |  j d k sœ t ‚ |  j d k s± t ‚ d |  _ |  j d k sÏ t ‚ d |  _ |  j d k sí t ‚ t |  j d� ƒ st ‚ d‚ |  _ t |  j dƒ ƒ s&t ‚ t |  j	 d ƒ s>t ‚ d |  _	 t |  j	 d ƒ s_t ‚ t  j
 j d |  ƒ } | j d k s‰t ‚ d | _ |  j d k s§t ‚ | j d k s¼t ‚ t  j ƒ  } | j ƒ  | | _ | j j ƒ  sðt ‚ | j j ƒ  | j ƒ  st ‚ | j j ƒ  s$t ‚ xGt t g D]9} |  j j | ƒ x t t g D]} |  j j | ƒ xù t t g D]ë } |  j j | ƒ xÒ t t g D]Ä } |  j j | ƒ x« t t g D]� } |  j j | ƒ |  j j ƒ  | k sît ‚ |  j j ƒ  | k s	t ‚ |  j j ƒ  | k s$t ‚ |  j j ƒ  | k s?t ‚ |  j j ƒ  | k s½t ‚ q½WqšWqwWqTWq1Wt |  j d ƒ s†t ‚ d |  _ t |  j d ƒ s§t ‚ t  j d d„ d… d d d d ƒ }  |  j j ƒ  sÝt ‚ t |  j d† ƒ sõt ‚ d‡ |  _ t |  j dˆ ƒ st ‚ |  j j ƒ  t k s1t ‚ |  j j d t ƒ |  j j  ƒ  sYt ‚ d |  _ |  j! d t d t ƒ t |  j d ƒ s�t ‚ t |  j d‰ ƒ s¨t ‚ |  j ƒ  t |  j d ƒ sÊt ‚ t |  j dŠ ƒ sât ‚ d‹ |  _ |  j ƒ  t |  j d ƒ st ‚ t |  j dŒ ƒ s%t ‚ t  j d d d� d d d dŽ ƒ}  |  j d
 k s[t ‚ t" j# d� ƒ } t$ j% d" ƒ }	 |  j& d# | d$ |	 j' ƒ  ƒ }
 |  j( ƒ  d k s¯t ‚ t |  j) ƒ  d� ƒ sÊt ‚ t |  j* ƒ  d‘ ƒ såt ‚ t |  j d’ ƒ sýt ‚ |
 j( ƒ  |  j( ƒ  k st ‚ d& |  _	 t |  j* ƒ  d“ ƒ s?t ‚ d” } t+ j, | | ƒ |  _ |  j j t ƒ y  |  j& | |	 j' ƒ  d- d ƒWn4 t- k
 rÀ} t. | ƒ j/ d. ƒ d k sÇt ‚ n Xt0 ‚ |  j& d/ |
 ƒ |  j& d/ |
 d- d ƒ |  j& | |	 j' ƒ  d d ƒ }
 |  j& | |	 j' ƒ  d d t ƒ }
 |  j& d# | d$ |	 j' ƒ  d0 d d- d d1 t ƒ }
 |
 j1 |  j ƒ stt ‚ t |  j d• ƒ sŒt ‚ d– } |  j2 |
 ƒ t |  j d— ƒ s·t ‚ d˜ |  _ |  j3 d/ |
 d- d ƒ t |  j d™ ƒ sît ‚ dš |  _ |  j& | |	 j' ƒ  d7 d ƒ }
 |
 j4 ƒ  s't ‚ |  j j ƒ  s<t ‚ |  j5 d# | ƒ |  j j ƒ  sbt ‚ t |  j d8 ƒ szt ‚ t |  j d› ƒ s’t ‚ |  j6 d# | ƒ |  j j ƒ  s·t ‚ t |  j d ƒ sÏt ‚ t |  j dœ ƒ sçt ‚ d� |  _ |  j7 d# | ƒ s		t ‚ |  j7 d# | d; d< ƒ s(	t ‚ |  j7 d# | d; d= ƒ sF	t ‚ |  j8 d# | d/ |
 d> d d? d@ dA d ƒ t |  j dž ƒ s†	t ‚ |  j8 d# | d/ |
 d> d d? d@ dA d ƒ t |  j dŸ ƒ sÆ	t ‚ |  j7 d# | ƒ sÞ	t ‚ t  j ƒ  } | j ƒ  |  j9 d d dN | ƒ } | j j ƒ  s"
t ‚ t | j d ƒ s:
t ‚ | j7 d# | ƒ sS
t ‚ | j7 d# | d; d ƒ sr
t ‚ | j7 d# | d; d ƒ s�
t ‚ t: j; |  | g ƒ } t< t  j7 dO | d# | ƒ ƒ t t g k sÕ
t ‚ t: j; | |  g ƒ } t< t  j7 dO | d# | ƒ ƒ t t g k st ‚ t< t  j7 dO | d# | d; d ƒ ƒ t t g k sPt ‚ | j8 d# | d/ |
 d> d d? dP dA d ƒ t | j dP ƒ s�t ‚ t  j d d d  d d& d dQ ƒ} t | j dQ ƒ sÉt ‚ | j8 d# | d/ |
 d> d d? d dA d ƒ t | j d ƒ s	t ‚ | j7 d# | ƒ s!t ‚ |  j } |  j= d# | dR d  ƒ t |  j d¡ ƒ sXt ‚ | j= d# | dR d  ƒ t | j dV ƒ s†t ‚ t: j; |  | g ƒ } t  j> dO | d# | dR dW ƒ t | d j | ƒ sÓt ‚ t | d j d ƒ sït ‚ t  j ƒ  } | j! d t d t ƒ |  j9 dX d dY d¢ dN | ƒ } | j j ƒ  sDt ‚ | j j ƒ  sYt ‚ t | j d ƒ sqt ‚ t | j d£ ƒ s‰t ‚ t: j; t  j d[ d d¤ d d ƒt  j d[ d d¥ d d ƒt  j d[ d d¦ d d ƒt  j d[ d d§ d d4 ƒt  j d[ d d¨ d d ƒt  j d[ d d© d dª ƒt  j d[ d d« d d¬ ƒf ƒ } | j? ƒ  } t  j> dO | d# | dR d dd t: j@ d d d g ƒ ƒ t  jA dO | de df dd t: j@ d d d g ƒ ƒ t | jB ƒ  dP dg dP dg dP dg dP g ƒ sÞt ‚ t  jA dO | de dP ƒ t | jB ƒ  dh di dh di dh di dh g ƒ s$t ‚ t | d j d ƒ rPt | d j d­ ƒ sVt ‚ t | d j dk ƒ r‚t | d j d® ƒ sˆt ‚ t | d j d ƒ r´t | d j d¯ ƒ sºt ‚ t | d j dl ƒ ræt | d j d° ƒ sìt ‚ t | d j d ƒ rt | d j d± ƒ st ‚ t | d j dj ƒ s:t ‚ t | d j dj ƒ rft | d j d² ƒ slt ‚ d | d _ d | d _ tC | d jD d# | dm dn ƒ do ƒ s²t ‚ tC | d jD d# | dm dp ƒ dq ƒ sÞt ‚ | d jE dr ds ƒ } tC | dt ƒ s
t ‚ | d jE dr du ƒ } tC | dv ƒ s6t ‚ xq | D]i } tF | jE ƒ  ƒ } t | j | j ƒ spt ‚ t | j | j ƒ s‹t ‚ t | j | j ƒ s=t ‚ q=Wt" j# d³ ƒ } g  } x"d´ dµ d¶ d· g D]\ } } t  j dz d{ ƒ } | j j t ƒ | j j t ƒ | d k r8| | _ | j j t ƒ n  | d k r†t+ j, | | d | d | d d d f ƒ | _ | j j t ƒ n  | dg | d } t | jG d# | ƒ | ƒ s¹t ‚ | j j ƒ  sìt | jG d# d  ƒ | ƒ s7t ‚ nK y | jG d# d  ƒ Wn. t- k
 r0} t. | ƒ jI d| ƒ s7t ‚ n Xt0 ‚ | jJ | jK d# | ƒ ƒ | j j ƒ  s•t | jK d# d  ƒ | | | d d d f ƒ sàt ‚ qÒy | jK d# d  ƒ Wn. t- k
 rÙ} t. | ƒ jI d| ƒ sàt ‚ qÒXt0 ‚ qÒWt | d¸ d¹ dº d» g ƒ st ‚ d  S(¼   Nt   agš™™™™™¹?gš™™™™™É?g333333Ó?g      Ð?gÍÌÌÌÌÌì?t   consti    t   bt   Sii   i   gš™™™™™Ù¿g      à?t   otheri   g¤p=
×£à?i   i   i   R   R   R   iÿÿÿÿi	   t   si1R   g{®Gáz„?g{®Gáz”?Rp   Rq   i
   i   s   P 4t	   unit_cellt   space_groupg      @gš™™™™™é?g�Å�1wÕ?g•Ô	h"Ø?go�Å�1ß?gê	K< lª¿g%­ø†Âg›?gíõî�÷ª•¿t   u_star_tolerancet   is_compatible_u_start   site_symmetry_opst   min_distance_sym_equivt   assert_min_distance_sym_equivgÉv¾Ÿ/m?g1Ðµ/ g?gš™™™™™Ù?g      ø?g      @g»½×Ùß|Û=i  g…ëQ¸…@gðíé,«wù?t   u_cart_toleranceg      Y@g     @�@t   u_mint   u_maxi'  t   anisotropy_mingg”/©&´
@g�Âwê–A@gÒîkçFà@gÙylÿª9@g¨[ÍGæ@g2H
c­@géî:)5Ä
@gJ2ÎH@gö]Â`ã@g¨
Má~4@g³ßDäà@g ˆT¯@Re   Rk   g      ð?g     Àc@t   u_shiftg¶»ö‘@g…°g˜4¯@gÓu}÷@i   iöÿÿÿRr   Rx   iþÿÿÿt   og¸…ëQ¸ž?g{®Gáz¤?gš™™™™™©?g{®Gáz¤¿g¸…ëQ¸®¿g333333ã?gš™™™™™©¿g{®Gáz”¿t	   selectiont   q_shiftg      @g      @g       @g      @g      ð¿g333333ó?gffffffö?t   prefixs   &%s7  &%scatterer label: si1
&%scattering type: Si
&%fractional coordinates: 0.200000 0.500000 0.400000
&%cartesian coordinates: 2.000000 5.000000 5.200000
&%u_star: 3.3458 4.5711 4.47205 3.90063 3.85981 4.51336
&%u_cart: 334.58 457.11 755.776 390.063 501.775 586.737
&%occupancy: 0.8
&%f-prime: 3
&%f-double-prime: 0s   =#sã   =#scatterer label: si1
=#scattering type: Si
=#fractional coordinates: 0.200000 0.500000 0.400000
=#cartesian coordinates: 2.000000 5.000000 5.200000
=#u_iso: 1
=#b_iso: 78.9568
=#occupancy: 0.8
=#f-prime: 0
=#f-double-prime: 4t   indents   %&sÏ   xray.scatterer(
%&  label="si1",
%&  site=(0.200000, 0.500000, 0.400000),
%&  u=(3.345805, 4.571099, 4.472046,
%&     3.900633, 3.859810, 4.513364),
%&  occupancy=0.800000,
%&  fp=3.000000,
%&  fdp=0.000000)t   QsŽ   xray.scatterer(
Q  label="si1",
Q  site=(0.200000, 0.500000, 0.400000),
Q  u=1.000000,
Q  occupancy=0.800000,
Q  fp=0.000000,
Q  fdp=4.000000)iY   i`   ik   t   labelR   s   cctbx Internal Error: g{®Gáz´?g¸…ëQ¸®?g¸…ëQ¸¾?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   g333333Ó?gš™™™™™Ù¿g      à?(   g333333Ó?gš™™™™™Ù¿g      à?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   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áz„?g{®Gáz”?g333333Ó?(   g333333Ó?g333333Ó?gš™™™™™É?i    i    i    (   i
   i
   i   g      Ð?gÍÌÌÌÌÌÌ?(   i    i    g333333Ó?gš™™™™™É?(   g�Å�1wÕ?g•Ô	h"Ø?go�Å�1ß?gê	K< lª¿g%­ø†Âg›?gíõî�÷ª•¿(   gÉv¾Ÿ/m?gÉv¾Ÿ/m?g1Ðµ/ g?i    i    i    (   gš™™™™™É?g      à?gš™™™™™Ù?(   i    i    g333333Ó?(   i   i   i   i   i   i   (   g      ø?g      ø?g      @i    i    i    (   gš™™™™™É?g      à?gš™™™™™Ù?(   iÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿiÿÿÿÿ(   g…ëQ¸…@g…ëQ¸…@gðíé,«wù?i    i    i    (   i   i   i   i   i   i   (   gg”/©&´
@g�Âwê–A@gÒîkçFà@gÙylÿª9@g¨[ÍGæ@g2H
c­@(   géî:)5Ä
@gJ2ÎH@gö]Â`ã@g¨
Má~4@g³ßDäà@g ˆT¯@(   g{®Gáz„?g{®Gáz”?g333333Ó?(   g¶»ö‘@g…°g˜4¯@gÓu}÷@g¨
Má~4@g³ßDäà@g ˆT¯@(   i   i   i   iþÿÿÿi   i   (   i   i   i   iþÿÿÿi   i   (   g{®Gáz„?g{®Gáz”?gš™™™™™¹?(   g{®Gáz”?g{®Gáz”?gš™™™™™É?(   g¸…ëQ¸ž?g{®Gáz”?g333333Ó?(   g{®Gáz¤?g{®Gáz”?gš™™™™™Ù?(   gš™™™™™©?g{®Gáz”?gš™™™™™Ù?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™¹?gš™™™™™É?g333333Ó?g{®Gáz¤¿g      à?g¸…ëQ¸®¿(   g333333Ó?gš™™™™™Ù?g      à?(   gš™™™™™Ù?g      à?g333333ã?gš™™™™™©¿gš™™™™™É?g{®Gáz”¿(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿g      ð¿(   gš™™™™™Ù?g      à?g333333ã?gš™™™™™©¿gš™™™™™É?g{®Gáz”¿(   i   i   i   iY   i`   ik   (   i    i    (   g{®Gáz¤?i    (   i    g{®Gáz¤?(   g{®Gáz¤?g{®Gáz¤?(   i    i    i    i    i    i    (   g{®Gáz¤?g{®Gáz¤?g{®Gáz¤?i    i    i    (   g{®Gáz”?g{®Gáz¤?g{®Gáz´?i    i    i    (   g¸…ëQ¸®?g{®Gáz´?g¸…ëQ¸¾?i    i    i    (L   R   Rc   RÂ   R   t   scattering_typeRt   Ru   R   R   Rp   R¤   R   RW   Re   RX   RZ   RY   R   R   R8   R9   R:   R<   R=   R   R   R   R   R   Rr   Rx   R;   R   R[   R   R°   R   t   space_group_infot   apply_symmetryt   groupt   multiplicityt   weight_without_occupancyt   weightR   t   u_cart_as_u_starR\   R]   t   findR
   R³   t   apply_symmetry_sitet   apply_symmetry_u_start   is_point_group_1t   convert_to_isotropict   convert_to_anisotropict   is_positive_definite_ut   tidy_ut   customized_copyR   Rd   t   listt   shift_ut   shift_ust   extract_u_isot   size_tt   shift_occupanciest   extract_occupanciesR   t   report_detailst
   as_py_codet   evalt   u_iso_or_equivt   Nonet
   startswithR`   t   u_cart_plus_u_iso(   Rj   Ro   Rf   t   flag0t   flag1t   flag2t   flag3t   flag4t   uct   sgt   sst   u_cartRg   R   Ry   Rª   t   yyt   x_u_star_origt   scst   uisost   pct   xst   xs2t   results_u_cart_plus_u_isoRr   Rs   t   expected(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_xray_scattererº  sþ   !							
	/	!		
	
	 %!						!	 !	 
$$*!!!		 !00222222			)!$ 3 
c          C   sÇ   t  j d ƒ }  t j t j d d d ƒf ƒ } t j d |  d	 d d | ƒ } | j ƒ  d
 k sf t ‚ t	 | d j
 | d j
 ƒ s‰ t ‚ t j d |  d	 d d | ƒ } t	 | d j
 d ƒ sÃ t ‚ d  S(   Ni
   i   t   Si1R   g{®Gáz„?g{®Gáz”?g333333Ó?R°   t   rotation_matrixi   i    Rk   iÿÿÿÿg{®Gáz”¿g{®Gáz„¿g333333Ó¿(   i
   i
   i   (   g{®Gáz„?g{®Gáz”?g333333Ó?(	   i   i    i    i    i   i    i    i    i   (	   i    iÿÿÿÿi    iÿÿÿÿi    i    i    i    iÿÿÿÿ(   g{®Gáz”¿g{®Gáz„¿g333333Ó¿(   R   R°   R   Rd   R   Rc   t   rotateR   R   R   R   (   Rç   R¡   R¢   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_rotateß  s    !		#		c          C   sÖ  t  j ƒ  }  t |  j ƒ  ƒ d k s* t ‚ t |  j ƒ  ƒ d k sH t ‚ |  j j ƒ  d k sc t ‚ |  j ƒ  d k s{ t ‚ |  j d ƒ s‘ t ‚ |  j d ƒ s§ t ‚ |  j	 d d ƒ d k sÅ t ‚ |  j ƒ  d k sÝ t ‚ |  j d ƒ sò t ‚ |  j d ƒ st ‚ |  j ƒ  i d d 6k s't ‚ t
 |  j ƒ d g k sEt ‚ t j t  j d ƒ t  j d ƒ t  j d ƒ t  j d	 ƒ t  j d
 ƒ t  j d ƒ t  j d ƒ t  j d d d ƒt  j d d d ƒf	 ƒ } |  j	 d | ƒ } t
 | ƒ d d d d d d d d d g	 k st ‚ |  j d | ƒ j | ƒ s2t ‚ t |  j d | ƒ d d d d d g ƒ sbt ‚ |  j ƒ  i d d 6d d 6d d 6d d 6d d 6k s�t ‚ |  j ƒ  j d  ƒ d k s¾t ‚ t
 |  j ƒ d d d d d g k sèt ‚ x\ |  j ƒ  j ƒ  D]H \ } } |  j d | ƒ | k s%t ‚ |  j d | ƒ d  k sût ‚ qûWt
 |  j ƒ  ƒ d d d d d g k stt ‚ |  j d d d t j j d ƒ ƒ sžt ‚ |  j ƒ  j d  ƒ d k s¿t ‚ |  j ƒ  d j ƒ  d k sát ‚ |  j d t j j d ƒ ƒ st ‚ |  j d d ƒ j ƒ  d k s*t ‚ |  j d d ƒ j ƒ  d k sNt ‚ |  j d t j j d: d; d ƒ ƒ sxt ‚ |  j ƒ  j d  ƒ d k s™t ‚ |  j ƒ  d j ƒ  d k s»t ‚ t
 |  j ƒ  ƒ d d d g k sât ‚ xd< d= f D]
\ } } t  j ƒ  }  |  j	 d | ƒ |  j d t j j d ƒ ƒ |  j d t j j d> d? d ƒ ƒ |  j d | ƒ |  j ƒ  } xÐ |  j ƒ  j ƒ  D]¼ \ } } | d@ k r»| | j ƒ  | k s@t ‚ q„| d k r| | j ƒ  d k sãt ‚ t | | j ƒ  d ƒ s@t ‚ q„| | j ƒ  d k s!t ‚ t | | j ƒ  d ƒ s„t ‚ q„W|  j d t j j d ƒ ƒ |  j ƒ  } t | |  j d ƒ j ƒ  d ƒ s”t ‚ |  j ƒ  j ƒ  d k s²t ‚ |  j  d d ƒ } | d k r÷t | d d d d  d! g ƒ st ‚ n$ t | d" d# d d  d! g ƒ st ‚ |  j  d d$ ƒ } | d k r`t | d% d& d d  d' g ƒ s„t ‚ n$ t | d( d) d d  d' g ƒ s„t ‚ |  j! d d* d+ t j" d | j ƒ  d ƒ d, | ƒ }	 xZ t# |	 ƒ D]L \ } }
 | | } |  j ƒ  | j$ d* | d ƒ } t |
 | ƒ sÅt ‚ qÅW|  j d d d d  ƒ |  j d d ƒ d  k sIt ‚ t% ƒ  } |  j& d- | d. d/ ƒ | d k r“t' | j( ƒ  d0 ƒ s¯t ‚ n t' | j( ƒ  d1 ƒ s¯t ‚ t% ƒ  } xM t) t* g D]? } x6 t) t* g D]( } |  j+ d2 | d3 | d- | d. d4 ƒ qØWqÅWt' | j( ƒ  d5 t, ƒ  ƒ s+	t ‚ |  j- ƒ  i d d 6d d 6d d 6d d 6d d 6k sf	t ‚ |  j ƒ  } |  j ƒ  } |  j } t  j | | | ƒ }  |  j ƒ  | k s´	t ‚ x¸ t. | |  j ƒ  ƒ D]¡ \ } } | d  k rú	| d  k sÊ	t ‚ qÊ	n  | | k	 s
t ‚ | j ƒ  | j ƒ  k s*
t ‚ x> d d* d6 g D]- } t | j$ | ƒ | j$ | ƒ ƒ s:
t ‚ q:
WqÊ	W|  j j | ƒ s‡
t ‚ t/ j0 |  ƒ } t/ j1 | ƒ } t% ƒ  } t% ƒ  } |  j+ d- | ƒ | j+ d- | ƒ t' | j( ƒ  | j( ƒ  ƒ sït ‚ qïWy |  j d7 ƒ Wn+ t2 k
 r;} t3 | ƒ d8 k sBt ‚ n Xt4 ‚ y |  j d d ƒ Wn+ t2 k
 rƒ} t3 | ƒ d9 k sŠt ‚ n Xt4 ‚ y |  j  d d ƒ Wn+ t2 k
 rË} t3 | ƒ d9 k sÒt ‚ n Xt4 ‚ d  S(A   Ni    R«   t   unknownRÃ   i   Rõ   t   Si2t   O1t   O2t   Al1t   O3t   Al2t   customRk   i   i   i   t   Alt   OR­   i   t   gaussiani
   t   IT1992t   WK1995t   tablei   t	   d_star_sqg­ú\mÅþ+@gV}®¶bÿ@g      4@g      $@g       @g=ÖŒrÿ+@g¼uþí²ÿ@g°rh‘í|¿?gË»êóX$@g$˜À­+@g5E€Ó»¸@g”¢•{Y$@g$EdXÅ+@gš™™™™™¹?t   dilation_coeffst   unique_indicest   outR¿   s   =-s6   =-Al:0+c*2 Si:4+c*2 const:0+c*1 O:4+c*3 custom:None*1
s6   =-Al:0+c*2 Si:5+c*2 const:0+c*1 O:5+c*3 custom:None*1
t   show_sf0t   show_gaussianss   :#s¿  :#Number of scattering types: 5
:#  Type    Number
:#   Al         2
:#   Si         2
:#   const      1
:#   O          3
:#   custom     1
:#Number of scattering types: 5
:#  Type    Number   Gaussians
:#   Al         2        0+c
:#   Si         2        %(n_terms)d+c
:#   const      1        0+c
:#   O          3        %(n_terms)d+c
:#   custom     1       None
:#Number of scattering types: 5
:#  Type    Number    sf(0)
:#   Al         2     20.00
:#   Si         2     14.00
:#   const      1     10.00
:#   O          3      8.00
:#   custom     1      None
:#  sf(0) = scattering factor at diffraction angle 0.
:#Number of scattering types: 5
:#  Type    Number    sf(0)   Gaussians
:#   Al         2     20.00       0+c
:#   Si         2     14.00       %(n_terms)d+c
:#   const      1     10.00       0+c
:#   O          3      8.00       %(n_terms)d+c
:#   custom     1      None      None
:#  sf(0) = scattering factor at diffraction angle 0.
gÁÊ¡E¶óÍ?t   foos6   scattering_type "foo" not in scattering_type_registry.s2   gaussian not defined for scattering_type "custom".(   i   i   (   i   i   (   R  i   (   R  i   (   i   i   (   i   i   (   R  R  s   Si(5   R   t   scattering_type_registryt   lent   type_index_pairs_as_dictR   t   unique_gaussians_as_listt   unique_countsR   t   has_keyt   processRÔ   R   Rd   Rc   R	  t   all_eqR   t   occupancy_sumst   countRß   RŒ   t   unique_indexR  t   unassigned_typest   assignR   t   xray_scatteringRb   t   gaussian_not_optionalt   assign_from_tablet   n_termsRo   t    unique_form_factors_at_d_star_sqt!   dilated_form_factors_at_d_star_sqt   double_rangeRŠ   t   at_d_star_sqR   t   show_summaryR   t   getvalueR   R   t   showt   varst   wilson_dictRŽ   t   picklet   dumpst   loadsR\   R]   R
   (   t   regRk   R	  t   tt   iR  R  t   ugst   fft   all_dilated_ffst
   dilated_fft   jt   ref_ffR¡   R  R  t   type_index_pairst   unique_gaussiansR  t   origt   restoredR  t   lRg   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt!   exercise_scattering_type_registryî  s   3!0	2!*"-	!"%$$*!"'""#('$'$		
!				2	",		&   c    	      C   s  t  j d5 ƒ }  t j d ƒ } t j t j d d d6 ƒt j d	 d d7 d d8 ƒf ƒ } x& | D] } | j ƒ  d k s^ t	 ‚ q^ Wt j
 | ƒ d k s› t	 ‚ t j ƒ  } t j d |  d | j ƒ  d | d | d t j ƒ  d d d d d t d t ƒ 	t | j ƒ  ƒ d g k st	 ‚ t j d | d |  d | d d d d d d ƒ t | d j d ƒ s^t	 ‚ t | d  j d9 ƒ szt	 ‚ x& | D] } | j ƒ  d k s�t	 ‚ q�Wt j
 | ƒ d k s¾t	 ‚ t j d: d; f ƒ } t j ƒ  } | j d | ƒ | j d# ƒ t j j |  | j ƒ  | | | ƒ j ƒ  } t t j | ƒ d< ƒ sDt	 ‚ t t j | t ƒ d= ƒ set	 ‚ t t j | ƒ d> ƒ sƒt	 ‚ t t j | t ƒ d? ƒ s¤t	 ‚ t j j |  | j ƒ  | | | ƒ j ƒ  } t t j | ƒ d@ ƒ sìt	 ‚ t t j | t ƒ dA ƒ st	 ‚ t j d | d |  d | d d( d d d d ƒ t | d j d( ƒ sWt	 ‚ t | d  j dB ƒ sst	 ‚ t j j t  j! d/ ƒ |  | j ƒ  | | | ƒ j ƒ  t j j" t t t t t t t t ƒ } t j# d | d | j$ d0 | j d1 | j% d2 | j& d3 | j' d4 | j( ƒ t j j) |  | j ƒ  | | d  | | t j+ | j, ƒ  ƒ d ƒ	 t j j" t t t t t t t t ƒ } t j# d | d | j$ d0 | j d1 | j% d2 | j& d3 | j' d4 | j( ƒ t j j) t  j! d/ ƒ |  | j ƒ  | | d  | | t j+ | j, ƒ  ƒ d ƒ
 d  S(C   Ni
   i   s   P 4Rõ   R   g{®Gáz„?g{®Gáz”?g333333Ó?Rû   gš™™™™™Ù?g      à?Rq   g333333ã?gš™™™™™©¿gš™™™™™É?g{®Gáz”¿i    i   R°   R±   Rk   t   site_symmetry_tablet   site_symmetry_table_for_newRµ   R²   R¶   t6   non_unit_occupancy_implies_min_distance_sym_equiv_zeroR¸   R¹   iŸ† Rº   i   i   i   R  gÜK£u%@gM¼<i"@iÜÿÿÿiH   id   gÕH*‰7ð?g ~< ð?g}fÖ2Ëä?g¨póÕÇ¥e¿g’=Tm œ?g ž‰ì�}v¿i   Rr   Rs   Rp   Rt   Ru   (   i
   i
   i   (   g{®Gáz„?g{®Gáz”?g333333Ó?(   g333333Ó?gš™™™™™Ù?g      à?(   gš™™™™™Ù?g      à?g333333ã?gš™™™™™©¿gš™™™™™É?g{®Gáz”¿(   gš™™™™™Ù?g      à?g333333ã?gš™™™™™©¿gš™™™™™É?g{®Gáz”¿(   i   i   i   (   i   i   i   (   gÜK£u%@gM¼<i"@(   iÜÿÿÿiH   (   gÜK£u%@gM¼<i"@(   iÜÿÿÿiH   (   gÜK£u%@gM¼<i"@(   iÜÿÿÿiH   (   gÕH*‰7ð?g ~< ð?g}fÖ2Ëä?g¨póÕÇ¥e¿g’=Tm œ?g ž‰ì�}v¿(-   R   R°   R   RÄ   R   Rd   R   Rc   RÇ   R   t   n_undefined_multiplicitiesR:  t   add_scatterers_extRÆ   R   R   RÔ   t   special_position_indicest   tidy_usR   Rr   Rx   t   miller_indexR  R  R  R¤   t   structure_factors_simplet   f_calct   abst   argt   structure_factors_directR   t   cos_sin_tableR¥   Rw   R   Rs   Rp   Rt   Ru   t"   structure_factors_gradients_directRß   t   complex_doubleR   (	   Rç   Rè   Rk   R¡   R:  t   miR  t   fcR¥   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_structure_factorsœ  s²    !	!		!!!	!!	 							
							
	c          C   s<  t  j d) ƒ }  t  j d* ƒ } t  j d+ ƒ } t j |  | | ƒ } t | j ƒ  d ƒ s] t ‚ t | j ƒ  d ƒ sx t ‚ | j	 ƒ  j
 ƒ  d k s– t ‚ t j |  | | t ƒ } t | j ƒ  d ƒ sÉ t ‚ t | j ƒ  d ƒ sä t ‚ t t | j	 ƒ  ƒ d, ƒ st ‚ t j |  | | t d ƒ } t | j ƒ  d ƒ s;t ‚ t | j ƒ  d ƒ sVt ‚ | j	 ƒ  j
 ƒ  d k stt ‚ t j |  | ƒ } t | j ƒ  d ƒ s¡t ‚ t | j ƒ  d ƒ s¼t ‚ | j	 ƒ  j
 ƒ  d k sÚt ‚ t  j d- ƒ } t j |  | t ƒ } t | j ƒ  d. ƒ st ‚ t | j ƒ  d ƒ s4t ‚ t t | j	 ƒ  ƒ d/ ƒ sUt ‚ t j |  | t d0 ƒ } t | j ƒ  d1 ƒ sˆt ‚ t | j ƒ  d ƒ s£t ‚ | j	 ƒ  j
 ƒ  d k sÁt ‚ t  j d2 d3 d4 d5 d6 f ƒ } t  j d7 ƒ } t j |  | | t ƒ } t | j ƒ  d ƒ s!t ‚ t | j ƒ  d ƒ s<t ‚ t t | j	 ƒ  ƒ d8 d9 d: d; d< f ƒ slt ‚ d d  l } t  j d= ƒ } t  j d> ƒ } t  j g  | D] } | j | ƒ ^ q£ƒ } t j | | | ƒ } t | j ƒ  d ƒ sñt ‚ t | j ƒ  d ƒ st ‚ | j	 ƒ  j
 ƒ  d k s*t ‚ t j | | | t ƒ } t | j ƒ  d ƒ s]t ‚ t | j ƒ  d ƒ sxt ‚ t t | j	 ƒ  ƒ d? ƒ s™t ‚ t j | | | t d ƒ } t | j ƒ  d ƒ sÏt ‚ t | j ƒ  d ƒ sêt ‚ | j	 ƒ  j
 ƒ  d k st ‚ t j | | ƒ } t | j ƒ  d ƒ s5t ‚ t | j ƒ  d ƒ sPt ‚ | j	 ƒ  j
 ƒ  d k snt ‚ t  j g  d@ D] } | j | ƒ ^ q{ƒ } t j | | t ƒ } t | j ƒ  dA ƒ sÉt ‚ t | j ƒ  d ƒ sät ‚ t t | j	 ƒ  ƒ dB ƒ st ‚ t j | | t dC ƒ } t | j ƒ  dD ƒ s8t ‚ t | j ƒ  d ƒ sSt ‚ | j	 ƒ  j
 ƒ  d k sqt ‚ t  j g  dE dF dG dH dI f D] } | j | ƒ ^ q�ƒ } t  j dJ ƒ } t j | | | t ƒ } t | j ƒ  d ƒ sít ‚ t | j ƒ  d ƒ st ‚ t t | j	 ƒ  ƒ dK dL dM dN dO f ƒ s8t ‚ d  S(P   Ni   i   i   i   i   i    y                i
   i   i   i(   i2   g      $@y               @y              @iÿÿÿÿiûÿÿÿy              @gÙ[Êùb/ä?gq+s© Î¯?gnŽ¬!Õ•V?y        áî5ÏÔ•f?gZ7Õ‡«K…?y        öU—ädŒ?g¹"¿¢f�?y        ¼T¡f ?g	HÕ¡Ü÷=?y        à>²†yù7?g	ãB!W?y        LöÜý‚Á[?g´°#åY€?y        �ŠœçÙs?gi	èt¿±?y        i	èt¿¡?g¼a²§Ó¬¿y        Ä²™CR·?g© G1åèf?y        C‘6•P?g:’?÷iu¿y        ½â©GÜ†?(   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   y                y                y                y                y                (   i
   i   i   i(   i2   gš™™™™™¹?(   y                y                y                y                y                g333333Ó?g333333Ó?y      ð?       @y      @      @y      ð¿       Ày      @      Ày      À      @(   i   i   i   i   i   ynŽ¬!Õ•V?áî5ÏÔ•f?yZ7Õ‡«K…?öU—ädŒ?y¹"¿¢f�?¼T¡f ?y	HÕ¡Ü÷=?à>²†yù7¿y	ãB!W?LöÜý‚Á[¿(   i   i   i   i   i   (   i   i   i   i   i   (   y                y                y                y                y                (   i
   i   i   i(   i2   gš™™™™™¹?(   y                y                y                y                y                g333333Ó?g333333Ó?y      ð?       @y      @      @y      ð¿       Ày      @      Ày      À      @(   i   i   i   i   i   y´°#åY€?�ŠœçÙs?yi	èt¿±?i	èt¿¡?y¼a²§Ó¬¿Ä²™CR·?y© G1åèf?C‘6•P¿y:’?÷iu¿½â©GÜ†¿(   R   R™   RI  R   t   targets_least_squares_residualR   t   scale_factorR   t   targett   derivativesR   R   t   tupleR   t   cmatht   sqrtt,   targets_least_squares_residual_for_intensity(   t   f_obst   wRC  t   lsRR  t	   f_obs_sqrRj   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_targets÷  s¤    !!+!+!	1c          C   sq  t  t j d d: ƒ d ƒ s! t ‚ t j d; ƒ }  t j d ƒ } t j	 t j
 d d	 d< d d d d ƒt j
 d d	 d= d t j |  d> ƒ ƒf ƒ } x$ | D] } | j |  | j ƒ  ƒ q— Wt j j ƒ  } | j | ƒ | j d ƒ t j d |  d | d | d d? d d@ ƒ } | j ƒ  j |  ƒ s%t ‚ t  | j ƒ  d  ƒ s@t ‚ t  | j ƒ  d  ƒ s[t ‚ t  | j ƒ  d! ƒ svt ‚ t  | j ƒ  d" ƒ s‘t ‚ t  | j ƒ  d# ƒ s¬t ‚ t  | j ƒ  d$ ƒ sÇt ‚ | j ƒ  d k sßt ‚ | j ƒ  d k s÷t ‚ | j ƒ  d% k st ‚ | j ƒ  s!t ‚ | j ƒ  j  ƒ  d! k s?t ‚ | j! ƒ  j  ƒ  dB k s]t ‚ | j" ƒ  d& k sut ‚ | j# ƒ  d' k s�t ‚ | j$ ƒ  d( k s¥t ‚ t  | j% ƒ  dC ƒ sÀt ‚ | j& ƒ  dD k sØt ‚ t  | j' ƒ  dE dF dG f ƒ süt ‚ | j( ƒ  j  ƒ  d! k st ‚ | j) ƒ  j  ƒ  d! k s8t ‚ t j* dH dI f ƒ } t j+ dJ dK f ƒ } | j, | | ƒ | j- ƒ  } t j. | j ƒ  d0 | | ƒ | j- ƒ  }	 t j. | j ƒ  d1 | | d% ƒ t  | | ƒ sÚt ‚ d! | d! _/ xƒd% d g D]u}
 t j d |  d | d | d dL d dM d2 |
 ƒ } |
 d! k r“| j ƒ  j  ƒ  dO k sTt ‚ | j ƒ  j0 ƒ  dP k srt ‚ | j ƒ  j1 ƒ  dQ k s±t ‚ n | j ƒ  j  ƒ  d! k s±t ‚ | j! ƒ  j  ƒ  d! k sÏt ‚ | j) ƒ  j  ƒ  | j  ƒ  k sót ‚ | j ƒ  } d! } x“ t2 | j) ƒ  d3 g d4 d5 g g ƒ D]m \ } } | j  ƒ  | k sNt ‚ |
 d! k  r`q*n  x$ | D] } | | d! k sgt ‚ qgW| | j  ƒ  7} q*W|
 d! k rÉ| j3 d! ƒ | dS k sÉt ‚ n  t4 j5 ƒ  } | j6 d6 | j) ƒ  d7 t j7 d! d% g ƒ ƒ | d! j  ƒ  dT k st ‚ |
 d! k rô| j8 | d! ƒ j9 d! ƒ sJt ‚ | d! j  ƒ  | k sit ‚ qôqôWd  S(U   Ni   g      ð?i   g3ž­(ÊJÁ?i   i   s   P 4Rõ   R   g{®Gáz„?g{®Gáz”?g333333Ó?Rt   iÿÿÿÿRu   Rû   gš™™™™™Ù?g      à?Rq   g{®Gáz¤?gš™™™™™©?g¸…ëQ¸®?g{®Gázt¿gü©ñÒMb`¿R  R°   Rk   R  t
   fft_n_reali   t
   fft_m_realg      Ð?i    gü©ñÒMbP?iœÿÿÿgñhãˆµøä>i   iI  iØ   iU  g       @i   g      4@g      6@i   y               @y              @gš™™™™™É?gš™™™™™É¿t%   store_grid_indices_for_each_scattereriX   i!   i   t   arraysR½   iy   iw   gUUUUUUÕ?(   i   i   i   (   g{®Gáz„?g{®Gáz”?g333333Ó?(   g333333Ó?gš™™™™™Ù?g      à?(   g{®Gáz¤?gš™™™™™©?g¸…ëQ¸®?g{®Gázt¿g{®Gáz”?gü©ñÒMb`¿(   i   i   i   (   i   i   i   i�  i`"  g     Pe@(   i   i   i   g333333Ó?g333333Ó?gtÑE]tÑ?(   i   i   i   (   i   i   i   y      ð?       @y       @      @(   i   i   i   (   i   i   i   i�  ið#  (   i   i   i   (   i   i   i   i�  ið#  (   iy   iw   (:   R   R   t   calc_u_baseR   R   R°   R   RÄ   R   Rd   Rc   R   RÊ   RÅ   RÆ   R¤   R  R  R  t   sampled_model_densityt   is_similar_tot   u_baset   u_extraR¸   t   wing_cutofft   exp_table_one_over_step_sizet   tolerance_positive_definitet   n_scatterers_passedt   n_contributing_scattererst   n_anomalous_scattererst   anomalous_flagt   real_mapR   t   complex_mapt   exp_table_sizet   max_sampling_box_n_pointst   sum_sampling_box_n_pointst   ave_sampling_box_n_pointst   max_sampling_box_edgest   max_sampling_box_edges_fract    excessive_sampling_radius_i_seqst   grid_indices_for_each_scattererRA  RI  t   eliminate_u_extra_and_normalizet	   deep_copyt   apply_u_extraRu   t   focust   allRŽ   R  R	   t   stl_set_unsignedt   append_union_of_selected_arraysRØ   R†   t   all_gt(   Rç   Rè   Rk   Rc   R  R    R-  Rf   t   f_origt   f_elimt   sgifest   mapt
   n_non_zerot   git   expected_sizest   i_mapt   comb_sel(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_sampled_model_densityL  s¨    !			$		!$" "	"c          C   sá  t  j d3 ƒ }  t j t j d d d4 d d	 d
 d ƒt j d d d5 d t j |  d6 ƒ ƒf ƒ } t j j	 t
 t
 t
 t
 t
 t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j d | d d d d d d d d d d d d  d
 d! ƒ } g  | D] } t | ƒ ^ qd d d d d d  d! d d d d d d d d d d d  d! g k spt ‚ t j d d" ƒ } t j j |  | | ƒ j } xt | | ƒ D]ü \ } } | j | j k sÑt ‚ | j | j k sét ‚ | j j ƒ  s.| j | j k st ‚ t | j | j ƒ sat ‚ n3 | j | j k sFt ‚ t | j | j ƒ sat ‚ | j | j k syt ‚ | j | j k s‘t ‚ | j | j k s­t ‚ q­Wt j d d# ƒ } t j j d$ |  d | d% | ƒ j } x× t | | ƒ D]Æ \ } } | j | j k st ‚ t | j | j ƒ s2t ‚ t | j | j ƒ sMt ‚ t | j | j ƒ sht ‚ t | j | j ƒ sƒt ‚ t | j | j ƒ sžt ‚ t | j | j ƒ sót ‚ qóWt j j	 t
 t t t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j | d! d d d d d  d! ƒ } g  | D] } t | ƒ ^ qXd g d! k sƒt ‚ t j d7 ƒ } t j j |  | | ƒ j } t | d) j d d8 d d9 d d: f ƒ sÞt ‚ t | d j d d; d d< d d= f ƒ st ‚ t j j	 t t
 t t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j | d d d d d d  d! ƒ } g  | D] } t | ƒ ^ qªd g k sÑt ‚ t j d d, ƒ } t j j |  | | ƒ j } t | d) j d, ƒ st ‚ t j j	 t t t
 t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j | d! d d d d d  d! ƒ } g  | D] } t | ƒ ^ qµd g d! k sàt ‚ t j d! d- ƒ } t j j |  | | ƒ j } t | d j g  | d j D] }	 |	 d. ^ q(ƒ sGt ‚ t j j	 t t t t
 t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j | d d d d d d  d! ƒ } g  | D] } t | ƒ ^ qâd g d k st ‚ t j d d, ƒ } t j j |  | | ƒ j } x0 t  d ƒ D]" }
 t | |
 j d/ ƒ sGt ‚ qGWt j j	 t t t t t
 t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j | d d d d d d  d! ƒ } g  | D] } t | ƒ ^ q	d  g d k s3	t ‚ t j d d, ƒ } t j j |  | | ƒ j } t | d) j d0 ƒ s|	t ‚ | d j d, k s•	t ‚ x4 t  d ƒ D]& }
 | |
 j | |
 j k s¢	t ‚ q¢	Wt j j	 t t t t t t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j j | d d d d d d  d! ƒ } g  | D] } t | ƒ ^ qg
d! g d k s’
t ‚ t j d> ƒ } t j j |  | | ƒ j } | d) j d	 k sÕ
t ‚ t | d) j d ƒ sñ
t ‚ | d j d) k s
t ‚ | d j d k s#t ‚ t j d ƒ } y t j j |  | | ƒ Wn+ t! k
 ry} t" | ƒ d1 k s€t ‚ n Xt# ‚ t j d ƒ } y t j j |  | | ƒ Wn+ t! k
 rÖ} t" | ƒ d2 k sÝt ‚ n Xt# ‚ d  S(?   Ni   i   Rõ   R   g{®Gáz„?g{®Gáz”?g333333Ó?Rt   iÿÿÿÿRu   i   Rû   gš™™™™™Ù?g      à?Rq   g{®Gáz¤?gš™™™™™©?g¸…ëQ¸®?g{®Gázt¿gü©ñÒMb`¿Rk   Rr   Rs   Rp   Rb   i   t	   site_carti   Rê   i   i   i   i   gü©ñÒMbP?gü©ñÒMbP¿R°   t   shiftsiýÿÿÿiûÿÿÿiúÿÿÿi    g      4@g      7@iöÿÿÿiœÿÿÿid   i÷ÿÿÿiõÿÿÿs+   scitbx Error: Array of shifts is too small.s*   cctbx Error: Array of shifts is too large.(   i   i   i   (   g{®Gáz„?g{®Gáz”?g333333Ó?(   g333333Ó?gš™™™™™Ù?g      à?(   g{®Gáz¤?gš™™™™™©?g¸…ëQ¸®?g{®Gázt¿g{®Gáz”?gü©ñÒMb`¿(   iÿÿÿÿi   iýÿÿÿi   iûÿÿÿiúÿÿÿgš™™™™™©?gš™™™™™¹?gYÈB²À?gš™™™™™É?g      Ð?gYÈB²Ð?(   i   i   ($   R   R°   R   Rd   R   Rc   R   RÊ   R¤   R¥   R   R   Rw   R   Rr   Rs   Rp   Rt   Ru   t   minimization_shift_scalest   intR   R™   t   minimization_apply_shiftst   shifted_scatterersRŽ   RÃ   Re   R   R   Rx   R   t   xranget	   ExceptionR]   R
   (   Rç   Rk   Rf   R¡   Rj   R‡  R‹  Rª   R¬   t   u_ijR-  Rg   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt"   exercise_minimization_apply_shifts£  sP   							
	H							
'2	
$
$						
'.							
'2	-						
'2	 						
'2	$						
'2	c          C   s^  t  j d7 ƒ }  t j t j d d d8 d d	 d
 d ƒt j d d d9 d t j |  d: ƒ ƒf ƒ } t j j	 t
 t t t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d ƒ ƒ } t j d; d< g ƒ } t j j d | d | d  | d! d  d" d  d# d  ƒ t | d d	 d$ d	 d	 d% g ƒ sOt ‚ t j j	 t
 t
 t
 t
 t
 t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d& ƒ ƒ } t j j d | d | d  | d! d  d" d  d# d  ƒ t | d d	 d$ d d' d$ d d d d( d) d% d* d+ d, d( d- d. d/ g ƒ sPt ‚ t j j	 t
 t
 t t
 t
 t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d+ ƒ ƒ } t j j d | d | d  | d! d  d" d  d# d  ƒ t | d d	 d$ d d' d$ d d d d( d) d% d* g ƒ s?t ‚ t j j	 t
 t t
 t
 t t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d- ƒ ƒ } t j j d | d | d  | d! d  d" d  d# d  ƒ t | d d	 d$ d d' d d d+ d0 d1 d) d% d* d+ d, d( g ƒ s7t ‚ t j j d | d | ƒ } t | d= d> g ƒ smt ‚ t j j	 t t
 t t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j d g ƒ } t j d d2 g ƒ } t j j d | d | d  d  d! | d" d  d# d  ƒ t | d' g ƒ sJt ‚ t j j	 t
 t
 t
 t
 t
 t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d& ƒ ƒ } t j j d | d | d  d  d! | d" d  d# d  ƒ t | d2 d d d d' d$ d d3 d0 d1 d) d% d* d+ d, d( d- d. d/ g ƒ sKt ‚ t j j	 t
 t
 t t
 t
 t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d+ ƒ ƒ } t j j d | d | d  d  d! | d" d  d# d  ƒ t | d2 d d d d' d$ d d3 d0 d1 d) d% d* g ƒ s:t ‚ t j j	 t t
 t
 t
 t t
 t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d% ƒ ƒ } t j j d | d | d  d  d! | d" d  d# d  ƒ t | d d d d d' d$ d d3 d0 d1 d) g ƒ s#t ‚ t j j	 t t t t
 t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j d d g ƒ } t j d d' g ƒ } t j j d | d | d  d  d! d  d" d  d# | ƒ t | d' d g ƒ s	t ‚ t j d d g ƒ } t j j d | d | d  d  d! d  d" d  d# d  ƒ t | d d g ƒ sg	t ‚ t j j	 t t t
 t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d ƒ ƒ } t j j d | d | d  d  d! d  d" t j d? d@ g ƒ d# d  ƒ t | d d2 d d d- d g ƒ sP
t ‚ t j j	 t
 t t
 t t t t t ƒ } t j d | d | j d | j d | j d | j d | j d
 | j ƒ t j t d* ƒ ƒ } t j j d | d | d  t j dA dB g ƒ d! d  d" t j dC dD g ƒ d# d  ƒ t | d d	 d$ d	 d	 d% d3 d d' d d6 d0 g ƒ sZt ‚ d  S(E   Ni   i   Rõ   R   g{®Gáz„?g{®Gáz”?g333333Ó?Rt   iÿÿÿÿRu   i   Rû   gš™™™™™Ù?g      à?Rq   g{®Gáz¤?gš™™™™™©?g¸…ëQ¸®?g{®Gázt¿gü©ñÒMb`¿Rk   Rr   Rs   Rp   i   i   iþÿÿÿi   iüÿÿÿiûÿÿÿt   xray_gradientst   site_gradientst   u_iso_gradientst   u_aniso_gradientst   occupancy_gradientsi   i   i   i   i   i
   i   i   i   i   i   i   i   i	   i    i   iùÿÿÿiýÿÿÿi   (   i   i   i   (   g{®Gáz„?g{®Gáz”?g333333Ó?(   g333333Ó?gš™™™™™Ù?g      à?(   g{®Gáz¤?gš™™™™™©?g¸…ëQ¸®?g{®Gázt¿g{®Gáz”?gü©ñÒMb`¿(   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   R°   R   Rd   R   Rc   R   RÊ   R¤   R¥   R   R   Rw   R   Rr   Rs   Rp   Rt   Ru   R™   RŒ  t   vec3_doublet   minimization_add_gradientsRß   R   R   t#   minimization_extract_site_gradientst   sym_mat3_double(   Rç   Rk   R¥   R�  t"   geometry_restraints_site_gradientsR‘  R’  R”  (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt#   exercise_minimization_add_gradientsP  sÊ   							
!						
H						
6						
?							
						
H						
6						
0						
						
!						
c          C   sÁ   d d l  m }  |  j d t j d ƒ d d g d ƒ } t j j d | j ƒ  d	 | j ƒ  j	 ƒ  d
 d ƒ } t
 j d | d | j ƒ  d | j ƒ  ƒ | j ƒ  j ƒ  | j ƒ  j ƒ  k s½ t ‚ d  S(   Niÿÿÿÿ(   t   random_structureRÄ   s   P 31t   elementsR  i
   R±   t   asut   buffer_thicknessi   t   asu_mappingsRk   R:  (   t   cctbx.developmentR›  t   xray_structureR   RÄ   R   t   direct_space_asuRŸ  R±   t   as_float_asuR   t   asu_mappings_processRk   R:  t   mappingsR   R   (   R›  t	   structureRŸ  (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_asu_mappings;  s    			c          C   si  t  j d t j d d d g ƒ d d d d  d t j d d d g ƒ ƒ }  t |  j ƒ  d d d g ƒ sl t ‚ t |  j	 ƒ  d ƒ s‡ t ‚ |  j
 ƒ  d  k sŸ t ‚ t |  j ƒ  d d d g ƒ sÃ t ‚ t  j d t j ƒ  d d d d d t j ƒ  ƒ }  |  j ƒ  j ƒ  d k st ‚ t |  j	 ƒ  d ƒ s,t ‚ t |  j
 ƒ  d ƒ sGt ‚ |  j ƒ  j ƒ  d k set ‚ d  S(   Nt   target_per_reflectioni   i   i   t   target_worki   t   target_testt   gradients_worky               @y              @y              @i*   i5   i    y      ð?       @y       @      @y      @      Ày      ð?       @y       @      @y      @      À(   R   t   targets_common_resultsR   R™   Rß   RI  R   R¨  R   R©  Rª  R«  R   (   R¢   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_targets_common_resultsJ  s$    	$$	c          C   s3  t  j d2 ƒ }  t  j d3 ƒ } t  j d4 ƒ } t j d t d d d	 |  d
 | d d  d | d d d d ƒ } t | j ƒ  d ƒ s„ t	 ‚ t | j
 ƒ  d g d ƒ s¦ t	 ‚ t | j ƒ  d ƒ sÁ t	 ‚ | j ƒ  d  k sÙ t	 ‚ | j ƒ  j ƒ  d k s÷ t	 ‚ t j d t d d d	 |  d
 | d d  d | d d d d ƒ } t | j ƒ  d ƒ sNt	 ‚ t | j
 ƒ  d d d d d g ƒ sxt	 ‚ t | j ƒ  d ƒ s“t	 ‚ | j ƒ  j ƒ  d k s±t	 ‚ t  j d5 ƒ }  t  j d6 ƒ } t  j d7 ƒ } t j d t d d d	 |  d
 | d d  d | d d d d ƒ } t | j ƒ  d8 ƒ s5t	 ‚ t | j ƒ  d ƒ sPt	 ‚ t | j ƒ  d9 d: d; f ƒ stt	 ‚ t j d t d d d	 |  d
 | d d  d | d d d d ƒ } t | j ƒ  d ƒ sËt	 ‚ t | j ƒ  d ƒ sæt	 ‚ t | j ƒ  d< d= d> f ƒ s
t	 ‚ t  j d? ƒ }  t  j d@ ƒ } t  j dA dB dC f ƒ } t j d t d d d	 |  d
 | d d  d | d d d d ƒ } t | j ƒ  d$ ƒ s—t	 ‚ t | j ƒ  d% ƒ s²t	 ‚ t | j ƒ  dD dE dF f ƒ sÖt	 ‚ t  j dG ƒ }  t  j dH ƒ } t  j dI ƒ } t  j dJ ƒ }  t  j dK ƒ } t  j dL ƒ } t  j dM ƒ }  t  j dN ƒ } t  j dO dP dQ f ƒ } t  j dR ƒ }  t  j dS ƒ } t  j t t t t t g ƒ } t  j dT ƒ } t j d t d d d	 |  d
 | d | d | d d d d ƒ } | j ƒ  s t	 ‚ t | j ƒ  d, ƒ st	 ‚ t | j ƒ  d- ƒ s6t	 ‚ t | j ƒ  d. ƒ sQt	 ‚ t | j ƒ  dU dV dW g ƒ sut	 ‚ t j d t d d d	 |  d
 | d | d t  j d ƒ d d d d ƒ } t | j ƒ  d ƒ sÕt	 ‚ t | j ƒ  d ƒ sðt	 ‚ t | j ƒ  d ƒ st	 ‚ t | j ƒ  d d d g ƒ s/t	 ‚ d  S(X   Ni   i   i   i   i   t   compute_scale_using_all_datat   obs_typet   Ft   obst   weightst   r_free_flagsRC  t   derivatives_depthi    RN  g       @i	   i   i   g      ð?i   g      I@g     À`@gÔz²ð«1±?g“Ì¯ :¬?y                gøR1º‡„¿g1;Ç��¿gÍÌÌÌÌÌ1@gÍÌÌÌÌÌ@gš™™™™™	@gÍÌÌÌÌÌü?y               @y              @iÿÿÿÿg9¼TY�Þ?gV��ÜçÉ?g)½c{¬±q?y        )½c{¬±�?gü }	Þ±–?y        û+üa}Bž?gªìÃ¥?y        ªìÃµ?g<ˆ$I’$é?go‘8bÚ‰?g,½?×*{?g9Šs�Eš?g6Šs�Ez?g6Šs�EŠ¿(   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   gITÎná×?y“Ì¯ :¬?        yøR1º‡„¿        y1;Ç��¿        yÍÌÌÌÌÌ@        yš™™™™™	@        yÍÌÌÌÌÌü?        (   i   i   i   (   i   i   i   y      ð?       @y      @      @y      ð¿       Ày)½c{¬±q?)½c{¬±�?yü }	Þ±–?û+üa}Bž?yªìÃ¥?ªìÃµ?(   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      @      @y      ð¿       À(   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   y9Šs�Eš?        y6Šs�Ez?        y6Šs�EŠ¿        (   R   R™   RI  R   t   targets_least_squaresR   Rß   R   RN  R   R¨  R©  Rª  R«  R   t   boolR   R®  (   RU  RV  RC  RW  R³  (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_targets_least_squares^  sî    		"		*				$						c          C   s¦  t  j d d d d d d d d d	 d
 d d g ƒ }  t  j t t t t t t t t t t t t g ƒ } t  j d d d d g d d d d g d d d d g d d d d g d d d d g d d d d g d d d d g d d d d g d d d d g d  d d d g d! d" d# d$ g d% d d d g g ƒ } t  j d& d' d( d) d* d¹ dº d» d1 d2 d¼ d5 g ƒ } t  j d6 d7 d8 d9 d: d; d< d= d> d? d@ dA g ƒ } t  j dB dC dD dE dF dG dH dI dJ dK dL dM g ƒ } t  j dN dO dP dQ dP dP dN dP dO dP dQ dP g ƒ } t  j t t t t t t t t t t t t g ƒ } xwd  | g D]i} x`t t g D]R}	 t	 j
 dR |  dS | dT | dU | dV | dW dP dX | dY | dZ |	 ƒ 	}
 |
 j ƒ  } |
 j ƒ  } |
 j ƒ  } |
 j ƒ  } t | d[ d\ d] d^ d_ d` da db dc dd de df g ƒ sùt ‚ |	 s| j ƒ  d k st ‚ n  | d  k r’t | dg ƒ s;t ‚ | d  k sMt ‚ |	 rét | d½ d¾ d¿ dÀ dÁ dÂ dÃ dÄ dÅ dÆ dÇ dÈ g ƒ s�t ‚ qénWt | dy ƒ s§t ‚ t | dz ƒ s¼t ‚ |	 røt | dÉ dÊ dË dÌ dÍ dÎ dÏ dÐ dÑ dÒ g
 ƒ søt ‚ n  t	 j
 dR |  j | ƒ dS d  dT | j | ƒ dU | j | ƒ dV | j | ƒ dW dP dX | j | ƒ dY | j | ƒ dZ |	 ƒ 	} t | j ƒ  | j | ƒ ƒ s›t ‚ t | j ƒ  | ƒ s¶t ‚ | j ƒ  d  k sÎt ‚ t | j ƒ  | ƒ sét ‚ t	 j dR |  dS | d‰ | dT | dU | dV | dX | dY | dŠ d‹ dZ |	 ƒ 
}
 |
 j ƒ  } |
 j ƒ  } |
 j ƒ  } |
 j ƒ  } t | dŒ d� dŽ d� d� d‘ d’ d“ d” d• d– d— g ƒ sšt ‚ |	 s»| j ƒ  d k s»t ‚ n  | d  k r3t | d˜ ƒ sÜt ‚ | d  k sît ‚ |	 ršt | dÓ dÔ dÕ dÖ d× dØ dÙ dÚ dÛ dÜ dÝ dÞ g ƒ s0t ‚ qšqHt | d© ƒ sHt ‚ t | dª ƒ s]t ‚ |	 r™t | dß dà dá dâ dã dä då dæ dç dè g
 ƒ s™t ‚ n  t	 j dR |  j | ƒ dS d  d‰ | j | ƒ dT | j | ƒ dU | j | ƒ dV | j | ƒ dX | j | ƒ dY | j | ƒ dŠ d‹ dZ |	 ƒ 
} t | j ƒ  | j | ƒ ƒ sLt ‚ t | j ƒ  | ƒ sgt ‚ | j ƒ  d  k st ‚ t | j ƒ  | ƒ sHt ‚ qHWq5Wd  S(é   NgþÔxé&ÙA@gé&1¬@s@gî|?5^`@gã¥›Ä ¸A@gü©ñÒMB=@g×£p=
[@gëâ6¨A@gû\mÅþÒP@g=
×£pe[@g¦›Ä °^`@gS£’:±S@g%�•CSa@g&ÿ“¿{GÝ?i    g%W@¡žè¿g¥1ZGUó?g‹¢¬„“Ù·¿g¦GS=™ì?giãˆµø”ú¿gËgyÜû?ggF?N™»¿g µ‰“û�ö?g¹wäz¡¡{¿gé¹…®D ë?g‡§WÊ2Ä÷¿g¸“ˆð/‚á?g…Mä8ž¿gr)ø·h¿g�Æ¡~¶À?gÇy¤f´ú³?g%xC8Ú¿gÃóR±1¯Ú¿gæ•ëm3º?g3ùf›@g•ŸTûtü@g(›r…w¹@gãTkaÚì?g_˜LŒŠ3Àg�•C‹lgeÀg¤p=
×[Q@g–²q¬c@Àgáz®G‰DÀg¸¯çŒh@@y        Œ¹k	ù¨C@g¼–�znB@y        �•C‹Ì$@gèÁÝY»íÀy        ÿ!ýöuàS@g(~Œ¹kÝQ@gVŸ«­ØKQ@gi o�ýD@y        0»'õ,@g¥½ÁBR@g„+ POË?g{„ò>Ž×?gEGrùéæ?g´Yõ¹ÚŠå?g[%XÎ|ë?g4-±2šï?gðÚ¥‡%ï?gaÝxwd¬Ä?g¢Óón,(Ü?g5]Ot]øà?g'Þž´pÑ?gHÄ”H¢—î?gU†q7ˆÖî?gt´ª%Ï?g1Ò‹Úý*è?gäNé`ýŸï?gêËÒNÍeå?gyG|ÝØ¢³?g}–çÁÝÙç?g‰µø ãá?gkÖß—Ú?glÆÏ·ª±?gÁ§9y‘	â?gC€ˆÕ?i   i   i   i   RU  R³  RC  t   alphat   betaRN  t   epsilonst   centric_flagst   compute_gradientsg6«ÑÕ9p@gYoTÖ;&Þ@gšyé\=°@gD´Þ…*@g€lò#ÍÔ;@gÐñrú¸å@g ¾HÐ(@gâÆv_X®´@gF0«\ó¹œ@gJŒ¡Ðpï@gVšÖV‰ÐŽ@gÐïnZ¼@g�™D½£¾É@gô³™ƒŸ€Ò?y                gqÒýÛ›ê@g’)Œˆ»	Àgªì$<5J¸?gU‹Æ±» ä¿g(5‘Â¦ÆSÀy        âñ³�ê±W@g´u­…��Ê?y        t‡	ãé­?g*áK,o_Î?y        &X¹‚{Þ@ghjJ™b•û¿g%Ò­Ã/NÀg–VÚHä¿y        4æ­ÛxüË?gô3/¨¦0ÀgWã�<Î@gLø©ŸJ @gÀ¤ë�ò3Ö?gÞeêÃŒ"@gš»;áÀè¿g1¦ƒ.»WÀy        ï×vo\@g?�6m›ÎÏ?y        ßê8ˆ>ò±?g‡-´B9Ò?y        ÈiÞœú
	@grÙ_ÂÔŒ ÀgãJhu;RÀgÌçglWè¿y        ¹#5ê®ÊÐ?gŒqýƒú3Àt   experimental_phasest   integration_step_sizei   g"–Ð•7p@gùòÁý%Þ@gna•Ô<°@gŸ�y!àÐ'@g�v¢€²<@g´·Ðƒå@g ÀØ.NT@g†Í Œh­´@gos�•«¹œ@gäZ%µOpï@gÆ:ìí¾Ž@g–o¾Ç¼@gÑ¸&“V¾É@y        àx:!¡!<y        ±¼Áã?û;y        ó¥úê:ñ;gT‹Æ±» ä¿y        ¡òBcîS <g*Õ!pÆäSÀy        �?¡gÆ˜W@gEiH¯!ÅÈ?y        ÊNœ—å£º?g	Á¹™ôÌ?y        TTö“á@gfjJ™b•û¿g$Ò­Ã/NÀgÆí™J{ä¿y        üu�Ä™É?gõ3/¨¦0Àg�“Î@g>"¦DþG @y        ‘¬FÁ'%<y        k¤Ú»Œ= <g™»;áÀè¿y        �‰ƒÝê—#<gÌÿŽ†TßWÀy        ½²ôîP\@g‡±#Ÿ[¹Í?y        �^ˆOà÷¿?g§o�_Ñ?y        Ìþ«�±	@gqÙ_ÂÔŒ ÀgˆPR&›“è¿y        ü{Œv…¸Î?g�qýƒú3Ày¸¯çŒh@@Œ¹k	ù¨C@y¼–�znB@�•C‹Ì$ÀyèÁÝY»íÀÿ!ýöuàSÀyi o�ýD@0»'õ,Àyô³™ƒŸ€Ò?        yqÒýÛ›ê@        y’)Œˆ»	À        yªì$<5J¸?        yU‹Æ±» ä¿        y(5‘Â¦ÆSÀâñ³�ê±WÀy´u­…��Ê?t‡	ãé­¿y*áK,o_Î?&X¹‚{Þ@yhjJ™b•û¿        y%Ò­Ã/NÀ        y–VÚHä¿4æ­ÛxüË?yô3/¨¦0À        yÀ¤ë�ò3Ö?        yÞeêÃŒ"@        yš»;áÀè¿        y1¦ƒ.»WÀï×vo\Ày?�6m›ÎÏ?ßê8ˆ>ò±¿y‡-´B9Ò?ÈiÞœú
	@yrÙ_ÂÔŒ À        yãJhu;RÀ        yÌçglWè¿¹#5ê®ÊÐ?yŒqýƒú3À        yô³™ƒŸ€Ò?àx:!¡!¼yqÒýÛ›ê@±¼Áã?û;y’)Œˆ»	À        yªì$<5J¸?ó¥úê:ñ;yT‹Æ±» ä¿¡òBcîS ¼y*Õ!pÆäSÀ�?¡gÆ˜WÀyEiH¯!ÅÈ?ÊNœ—å£º¿y	Á¹™ôÌ?TTö“á@yfjJ™b•û¿        y$Ò­Ã/NÀ        yÆí™J{ä¿üu�Ä™É?yõ3/¨¦0À        yÀ¤ë�ò3Ö?‘¬FÁ'%¼yÞeêÃŒ"@k¤Ú»Œ= <y™»;áÀè¿�‰ƒÝê—#¼yÌÿŽ†TßWÀ½²ôîP\Ày‡±#Ÿ[¹Í?�^ˆOà÷¿¿y§o�_Ñ?Ìþ«�±	@yqÙ_ÂÔŒ À        yãJhu;RÀ        yˆPR&›“è¿ü{Œv…¸Î?y�qýƒú3À        (   R   R™   R¶  R   R   t   hendrickson_lattmanRI  R‰  Rß   R   t$   targets_maximum_likelihood_criterionR¨  R©  Rª  R«  R   R   R   R†   t'   targets_maximum_likelihood_criterion_hl(   RU  R³  R½  RC  R¸  R¹  Rº  R»  t   rffR¼  t   mlt   tprt   twt   ttt   gwt   mlw(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt#   exercise_maximum_likelihood_targetsã  s4   <63							%							%c          C   s   t  j t j d	 ƒ d d d t ƒ}  |  j d k s9 t ‚ |  j t j d
 ƒ k sW t ‚ |  j t k sl t ‚ t	 |  _ |  j t	 k sŠ t ‚ d d  l
 } | j |  | j ƒ } | j | ƒ } |  j | j k sÒ t ‚ |  j | j k sê t ‚ |  j | j k st ‚ t  j t j d ƒ d d d t	 ƒ} | j t	 k s;t ‚ |  | f } t  j | t ƒ |  j t k slt ‚ | j t k s�t ‚ t  j | ƒ d k sœt ‚ d  S(   Ni    i   iÿÿÿÿt   valueg      à?t   gradgš™™™™™É?gffffffæ?(	   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   twin_componentR   t   rot_mxR   RÊ  R   t   twin_lawRË  R   t   cPickleR)  t   HIGHEST_PROTOCOLR*  t   set_grad_twin_fractiont   sum_twin_fractions(   t   twin_aRÏ  t   pickled_twin_at   unpickled_twin_at   twin_bt   twins(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_twin_components�  s.    			c          C   sg  t  j d ƒ }  d } d } d } d } t j |  | d | ƒ} t | _ | j | | t ƒ } d t | d ƒ | |  j | | ƒ } t d	 | | d ƒ } d | | t d	 | | d ƒ }	 t	 | d | ƒ s× t
 ‚ t	 | d	 |	 ƒ sð t
 ‚ d }
 | j | | t ƒ d } | j |
 7_ | | j | | t ƒ d 7} | | |
 } t	 | d	 | ƒ sct
 ‚ d  S(   Ni   i   i   iU   i_   ii   gÍÌÌÌÌÌô?gôýÔxé&Á?i   i   i   gÙÎ÷Sã¥@RÊ  gü©ñÒMbP?g      à¿g      ø¿i    g:Œ0âŽyE>(   i   i   i   iU   i_   ii   (   i   i   i   (   R   R°   R   t   shelx_extinction_correctionR   RË  t   computet   powt   sin_two_thetaR   R   R   RÊ  (   Rç   t
   wavelengtht   extinction_valt   ht   fc_sqt   ecRo   t   pt   c_vt   c_gt   stept   c_g_n(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_extinction_correction›  s&    	'#c       
   C   s~  t  j d d d d d d d d d	 g	 ƒ }  t  j d d d d d d d d d	 g	 ƒ } t j d
 |  d | ƒ } t | j ƒ  d ƒ s‡ t ‚ t | j ƒ  d ƒ s¢ t ‚ t | j ƒ  d ƒ s½ t ‚ t  j d d d d d d d d d	 g	 ƒ }  t  j d d d d d d d d d g	 ƒ } t j d
 |  d | ƒ } t | j ƒ  d ƒ sDt ‚ t | j ƒ  d ƒ s_t ‚ t | j ƒ  d ƒ szt ‚ d  S(   Ni   i   i   i   i   i   i   i   i	   t   foRK  i    i
   i   i   i(   i2   i<   iF   iP   iZ   gš™™™™™¹?(	   R   R™   RI  R   t   r_factorR   RÊ  R   t   scale_ls(   RU  RC  R¢   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   exercise_r_factor²  s    ****c           C   sœ   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  d GHd  S(   Nt   OK(   Rë  Rç  RØ  Rn   R•   R}   R˜   Rô   R£   R©   R9  Rø   RL  RY  R…  R�  Rš  R§  R­  R·  RÉ  (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   runÀ  s,    t   __main__(.   t
   __future__R    t   cctbxR   R   R   R   R   t   cctbx.crystal.direct_space_asuR   R   t   cctbx.array_familyR   t   scitbx.array_familyR	   t   libtbx.test_utilsR
   R   R   R   t	   cStringIOR   R(  Rn   R}   R•   R˜   R£   R©   Rô   Rø   R9  RL  RY  R…  R�  Rš  R§  R­  R·  RÉ  RØ  Rç  Rë  Rí  t   __name__(    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_xray.pyt   <module>   sL   "	°	{	&			(	ÿ &		®	[	U	W	­	ë			…	ž				