ó
@™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
 Z
 d  d l m Z d d d	 „  ƒ  YZ d  d
 l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d „ Z d „  Z d d e e e d „ Z d d e e e d „ Z d „  Z e d k re ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   sgtbx(   t   flex(   t   Profiler(   t   millerN(   t   update_wij_rijt
   algorithm2c           B   se   e  Z e e d  „ Z d „  Z d „  Z d d „ Z d „  Z d e e d d „ Z	 d „  Z
 d	 „  Z RS(
   c         C   sk  | |  _  | r� t j | j ƒ  ƒ } t j | j ƒ  | ƒ } | j ƒ  j | ƒ } | j ƒ  j | ƒ } | |  _ | j d | d | ƒ |  _ n | j ƒ  |  _ | |  _ t |  j j ƒ  ƒ t t j	 ƒ  ƒ k sÒ t
 ‚ t |  j j ƒ  ƒ t t j ƒ  ƒ k sÿ t
 ‚ d }	 t j ƒ  |  _ xP t t |  j ƒ ƒ D]9 }
 |  j |
 |	 k r*|  j |
 }	 |  j j |
 ƒ q*q*Wd  S(   Nt   indicest   dataiÿÿÿÿ(   t   verboseR   t   sort_permutationR   t   selectR   t
   lattice_idt   customized_copyt   typet   miller_indext   AssertionErrort   doublet   intt   latticest   xranget   lent   append(   t   selfR   R   t   resortR	   t   ordert   sorted_lattice_idt   sorted_datat   sorted_indicest   last_idt   n(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   __init__   s$    			-- c         C   s]   d d l  m } | d |  j ƒ } x1 | j D]& } |  j r, | j j ƒ  j ƒ  GHq, q, W| j S(   Niÿÿÿÿ(   t	   twin_lawst   miller_array(   t   mmtbx.scaling.twin_analysesR    R   t	   operatorsR	   t   operatort   rt   as_hkl(   R   R    t   TLt   twin_law(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   generate_twin_operators*   s    	 c         C   s‘   |  j  ƒ  } i  } xx | D]p } |  j j ƒ  } t j | j j ƒ  j ƒ  ƒ } | j | ƒ } |  j j	 d | ƒ j
 ƒ  | | j j ƒ  j ƒ  <q W| S(   NR   (   R)   R   R   R   t   change_of_basis_opR$   R%   R&   t   applyR   t
   map_to_asu(   R   t   opst
   alternatest   opt   hklt   cb_opt   hklrev(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   generate_reindex_sets1   s    2i   c         C   s›   | d } | d k  r& |  j  d k g Sg  } xh t | ƒ D]Z } t j ƒ  } x8 t t |  j  ƒ ƒ D]! } | j | | | d k  ƒ qa W| j | ƒ q9 W| S(   Ni   i   iÿÿÿÿi   (   R   R   R   t   boolR   R   (   R   t   nproct   resultR   t   arrayt   LL(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   generate_comparison_selections;   s    
c         C   sm   |  j  | } | t |  j  ƒ d k  rB |  j  | d } | | | !S| t |  j  ƒ d k sa t ‚ | | Sd  S(   Ni   (   R   R   R   (   R   R   R   t   lower_indext   upper_index(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   one_lattice_sliceI   s    s   xy.pngc   '      C   s2  | j  t ƒ } |  j r8 d G| G| G| G| Gd | GHn  | j ƒ  }	 g  }
 g  } i  } x{ d g | j ƒ  D]f } i  | | <| j | |  j ƒ } x> t | ƒ D]0 } |  j d | j	 ƒ  d |	 | ƒ | | | <qœ Wqj Wx| j ƒ  D]þ} | | } t
 j t
 j | | ƒ d ƒ } t
 j t
 j | | ƒ d ƒ } x't | ƒ D]} d | | | f <| d | } | | | } |  j |	 | } xÓ t | d | ƒ D]¾ } | d | } |  j |	 | } | d d k rt | | | | |  j j ƒ  |  j j ƒ  | | | | d	 | ƒ n  | d k r‘t | | | | | j ƒ  |  j j ƒ  | | | | d
 | ƒ q‘q‘Wq:W| j ƒ  } t
 j t | ƒ ƒ } | d k } d | d | d | j  t ƒ t | ƒ t
 j | j | ƒ ƒ f GH|
 j | ƒ | j | ƒ qá W|  j rôd GHn  t
 j | ƒ } t
 j | ƒ } t | | |
 d | d |  j ƒ } | j d | !}  | j | d | !}! t |  |! ƒ }" |" j ƒ  } | s€| r[d d  l }# | s¢|# j d ƒ n  d d l m }$ |$ j |  j | ƒ |! j | ƒ d d d ƒ|$ j |  j | ƒ |! j | ƒ d d d ƒ|$ j ƒ  j d ƒ | rE|$ j  | d d# d d d d ƒn  | r[|$ j! ƒ  q[n  |  j j | ƒ }% t |% ƒ t | ƒ k s‹t" ‚ d d l# m$ }& |& d i t% |% j | ƒ ƒ d 6t% |% j | ƒ ƒ | j ƒ  d 6d |
 d  | d! |  d" |! ƒ Si t% |% j | ƒ ƒ d 6t% |% j | ƒ ƒ | j ƒ  d 6S($   Ns   IN RUN COREs   Group of %ds   h,k,lR   R   g        i   i   g      ð?g      ð¿sF   w_ij is a %dx%d matrix with %d/%d >1 elements with average value %4.1fi    s   CONSTRUCTED RIJiÿÿÿÿt   Agg(   t   pyplots   r.t
   markersizeg       @s   k.g      @t   equalt   size_inchesi
   t   dpii,  t   bbox_inchest   tight(   t
   group_argst   reindexing_setst   rijt   wijt   coord_xt   coord_y(   i
   i
   (&   t   countt   TrueR	   t
   iselectiont   keyst   getR   R   R<   R   R   R   t   gridR   R   t   focust   listR   t   meanR   R   t   random_doublet   minimizet   xt   minimize_dividet
   plus_minust
   matplotlibt   useR>   t   plott   axest
   set_aspectt   savefigt   showR   t   libtbxRE   t   set('   R   t   groupR.   t   use_weightst
   asymmetrict	   show_plott	   save_plott	   plot_namet   NNt   index_selectedRG   RH   t   slicest   cosett	   twin_datat   itrR(   t   rij_t   wij_t   it	   indices_it   indices_i_revt   i_startt   jt	   indices_jt   j_startRQ   t   flat_wijt	   selectiont   xcoordt   ycoordt   MRI   RJ   t   PRY   t   pltt   grouped_lattice_idsRE   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   run_core_algorithmR   s’    	  
2
'$!>	 #+-
	$c   	      O   s–   d d l  m } yb x[ t rp y | j ƒ  \ } } Wn | k
 rF |  SX|  j | | | Ž } | j ƒ  | | f SWWn t k
 r‘ } d G| GHd  SXd  S(   Niÿÿÿÿ(   t   Emptys   Exception within __call__(   t   QueueR€   RL   t
   get_nowaitR   t	   task_donet	   Exceptiont   None(	   R   t   input_queuet   argst   kwargsR€   t   igroupRb   R6   t   e(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   __call__Î   s    	
	c         C   s–   | j  | j ƒ  ƒ } xE | D]= } g  | | <x* | | D] } | | j |  j | ƒ q7 Wq Wx | D] } | | j ƒ  qd W|  j r’ d GH| GHn  | S(   Nt   REPORT(   t   fromkeysRN   R   R   t   sortR	   (   R   t   millerlookupsR6   t   keyt   item(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   reportä   s    
 	(   t   __name__t
   __module__t   FalseRL   R   R)   R3   R9   R<   R   R‹   R’   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyR      s   		
		{	(   t   lbfgs_with_curvatures_mix_inRU   c           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c      
   C   s   | |  _  | j | ƒ |  _ t | ƒ |  _ | |  _ | |  _ |  j  rV t |  j ƒ GHn  t j |  d d d d d d d t	 ƒd  S(   Nt   min_iterationsi    t   max_iterationsiè  t    traditional_convergence_test_epsg      ð?t   use_curvatures(
   R	   t   concatenateRV   R   Rh   t
   rij_matrixt
   wij_matrixR–   R   RL   (   R   Ry   Rz   Rœ   R�   R	   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyR   ó   s    				 c         C   s`   |  j  |  j  } | d |  j !} | |  j d |  j !} d |  j j | ƒ j |  j j | ƒ ƒ S(   Ni    i   g       @(   RV   Rh   R�   t   matrix_multiplyR›   (   R   t   x_sqt   x_slicet   y_slice(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt
   curvatures   s
    c         C   s\  |  j  d |  j !} |  j  |  j d |  j !} |  j | j | ƒ | j | ƒ } |  j | | } d t j | ƒ } |  j |  j } | j | ƒ j | j | ƒ ƒ } |  j | j | ƒ } | j | ƒ }	 | j | ƒ }
 |  j | j | ƒ } | j | ƒ } | j | ƒ } |	 j |
 ƒ } | j | ƒ } d | | | } |  j	 rRd G| GHn  | | f S(   Ni    i   g      à?g       Àt
   Functional(
   RV   Rh   Rœ   t   matrix_outer_productR�   R   t   sumRž   R›   R	   (   R   RI   RJ   t   innert   elementst   ft   wrij_matrixt   term_1t   temp_2t   term_2xt   term_2yt   temp_3t   term_3xt   term_3yt   term_2t   term_3t   grad(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt    compute_functional_and_gradients  s&    #!	 (   R“   R”   R   R¢   R´   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyRU   ò   s   		RW   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sù   | |  _  | |  _ t j d g ƒ |  _ d d l m } | t j |  j  ƒ t j |  j ƒ f ƒ |  _ g  t	 d d d ƒ D]  } |  j
 | t j d ƒ ^ qw } t | ƒ } t j d | j | ƒ t j d g ƒ |  _ t j |  d d d d	 d
 t ƒd  S(   Ni    iÿÿÿÿ(   t   coli´   i   g     €f@R—   R˜   iè  Rš   (   Ry   Rz   R   R   RV   t   scitbx.matrixRµ   RS   t   center_of_massR   t   functional_onlyt   matht   pit   mint   indexR–   R   R•   (   R   Ry   Rz   Rµ   t   tRP   t   minvalue(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyR   %  s    		-9-c   	      C   sµ   d d l  m } | t j | ƒ t j | ƒ f ƒ } d } xt t t |  j ƒ ƒ D]] } | |  j | |  j | f ƒ |  j	 } | j
 | ƒ } | | | } | | j
 | ƒ 8} qP W| S(   Niÿÿÿÿ(   Rµ   g        (   R¶   Rµ   R¹   t   cost   sinR   R   Ry   Rz   R·   t   dot(	   R   t   thetaRµ   t   Bvect   funct   pt   Avect   AdotBt   Pvec(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyR¸   9  s    $'c         C   sT  d d l  m } | t j |  j d ƒ t j |  j d ƒ f ƒ } d } d } xß t t |  j ƒ ƒ D]È } | |  j | |  j	 | f ƒ |  j
 } | j | ƒ } | | | } | | j | ƒ 8} t j |  j d ƒ }	 t j |  j d ƒ }
 | |	 | d |
 | d |	 |
 | d |	 | d |
 7} qd W| t j d | j ƒ  | g ƒ f S(   Niÿÿÿÿ(   Rµ   i    g        i   g       @(   R¶   Rµ   R¹   R¿   RV   RÀ   R   R   Ry   Rz   R·   RÁ   R   R   t   length(   R   Rµ   RÃ   RÄ   R³   RÅ   RÆ   RÇ   RÈ   t   cos_tht   sin_th(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyR´   D  s    2'Cc         C   sæ   d d l  m } t j ƒ  } | t j |  j d ƒ t j |  j d ƒ f ƒ } | j d d t	 ƒ} x| t
 t |  j ƒ ƒ D]e } | |  j | |  j | f ƒ |  j j ƒ  } t j | j | ƒ ƒ } | j | t j d k ƒ qy W| S(   Niÿÿÿÿ(   Rµ   i    g     €V@t   degg       @(   R¶   Rµ   R   R4   R¹   R¿   RV   RÀ   t	   rotate_2dRL   R   R   Ry   Rz   R·   t	   normalizet   acosRÁ   R   Rº   (   R   Rµ   R6   RÃ   t   NvecRÅ   RÆ   RÂ   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyRX   U  s    2-(   R“   R”   R   R¸   R´   RX   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyRW   $  s   			c         C   s2  |  d g } | d j  ƒ  } xÄ t d t |  ƒ ƒ D]­ } | d } | j  ƒ  } |  | } i  } xq | j  ƒ  D]c } g  | D]# }	 t | | j | |	 ƒ ƒ ^ qy }
 t |
 ƒ } |
 j | ƒ } | | | | | <ql W| j | ƒ q3 Wi  } i d | d 6d | d 6} x„ | D]| } xs | j  ƒ  D]e } x\ | | D]P } | j | d  ƒ d  k rid g t | ƒ | | <n  | | | | c d 7<q1Wq WqW| r¾x( | j  ƒ  D] } d G| G| | GHq Wn  i  } x | D] } g  | | <qËWxL | j  ƒ  D]> } t | | ƒ } | | j | ƒ } | | | j | ƒ qìW| S(   Ni    i   iÿÿÿÿt   vote(	   RN   R   R   t   intersectiont   maxR¼   R   RO   R…   (   t	   patchworkR	   t   resortedt   refkeyst   ipt	   referencet   testt   newdictt   testkeyt   refkeyt   scorest	   max_scoret   max_idxt   votedt   lookupRb   R�   R‘   R6   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt
   reassemble`  s@    

0 $ c         C   s@   d g t  |  ƒ } x  |  D] } | d | | d <q Wt | ƒ S(   Ni    i   (   R   Râ   (   t   mp_patchworkt
   clean_listt   ituple(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   mp_reassembleƒ  s    i   i   c         C   sÁ   t  d |  d d |  d d t d | ƒ } | j ƒ  } | j d | ƒ } g  }	 xX t | ƒ D]J \ }
 } |	 j | j | | d t d	 | d
 | d | d d |
 ƒj ƒ qZ Wt |	 ƒ } | j	 | ƒ S(   NR   i    R   i   R   R	   R5   Rc   Rd   Re   Rf   Rg   s	   xy_%i.png(
   R   RL   R3   R9   t	   enumerateR   R   RF   Râ   R’   (   t   LRd   R5   R	   Re   Rf   t   algo2R.   t   c_selectionst   result_setsRp   Rb   R6   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   run‰  s    )i   c      
      s†  y d d  l  } Wn t k
 r1 } d GHt ƒ  n Xt d |  d d |  d d t d ˆ ƒ } | j ƒ  }	 | j d	 | ƒ }
 g  ‰  ‡  ‡ f d
 †  } | j ƒ  j ƒ  } x- t	 |
 ƒ D] \ } } | j
 | | f ƒ q° W| j d | d ƒ } xc t | d ƒ D]Q } | j d | d | |	 t g d i | d 6| d 6d | d 6| d 6d | ƒ qú W| j ƒ  | j ƒ  | j ƒ  t ˆ  ƒ } | j | ƒ S(   Niÿÿÿÿs=   multiprocessing module not available (requires Python >= 2.6)R   i    R   i   R   R	   R5   c            st   d d  l  } ˆ r d G|  GHn  t |  ƒ t d ƒ k rp t |  d ƒ | j k rp ˆ  j |  d |  d j f ƒ n  d  S(   Niÿÿÿÿs   IN MPCALLBACK withi   i    (    (   R`   R   RE   R   RF   (   t
   result_setR`   (   Rë   R	   (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   _mpcallback¤  s
     1t	   processesRÄ   R‡   t   kwdsRe   Rf   s	   xy_%i.pngRg   Rd   t   callback(   t   multiprocessingt   ImportErrort   exitR   RL   R3   R9   t   Managert   JoinableQueueRç   t   putt   PoolR   t   apply_asynct   closet   joinRæ   R’   (   Rè   Rd   R5   R	   Re   Rf   Rò   RŠ   Ré   R.   Rê   Rî   R†   t   icR‘   t   poolRp   R6   (    (   Rë   R	   sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   run_multiprocess˜  s8     )	




c       J   C   s|  i t  d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  g  ƒ d! 6t  d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= g ƒ d> 6i t  d d? d@ dA dB d dC d	 dD d
 d d dE d d d d d dF d d d d d d d d d dG dH d d dI d d  dJ g$ ƒ d! 6t  d' d# d% d( dK d) dL d, d- d. d/ d3 d4 dM dN dO d7 dP dQ d8 dR d9 d; d= g ƒ d> 6i t  d# dS d% dR dT dU dK d) dV dL dW dX d- d. d/ dY d4 dZ dM dN dO d7 dP dQ d8 d[ d\ d] g ƒ d! 6t  d^ d? d@ dA dB d_ dC dD d d` d dE d d d dF d d d da db dc dd dG dH d dI de dJ d d  df g  ƒ d> 6i t  dg dN dR dT dU dK dV dL dh dX di dj dY dZ dM d] dk dS dO dl dm dP dQ d[ dn d\ do dW g ƒ d! 6t  d^ d? d@ dp dq dr dB ds d_ dC dD d` dE dt du dF dv dA da db dw dx dc dy dd dG dH dI de dJ df dz g  ƒ d> 6i t  d{ d| dg d} dT d~ dU d dV d€ dW dX d� d‚ dj di dY dZ do dƒ dk dS d„ dl dm d… d[ d† dn d\ d‡ d] dˆ dh g" ƒ d! 6t  d^ d‰ dp dq dr dd ds d_ d` dt du dv dŠ da db dw dx dc dy d‹ dŒ d� de dŽ df dz g ƒ d> 6i t  d{ d| d€ dg d} d~ d� d d� dh d‘ d’ d� d‚ dj di d“ d” d• dk d„ dl dm d– d… d† dn d— d‡ d˜ d™ do dˆ g! ƒ d! 6t  d‰ dp dq dr ds dš d› dœ d� dt du dv dž dŠ dŸ dw dx d  dƒ dy d¡ d‹ dŒ d� d¢ dŽ dz g ƒ d> 6i t  d£ d‰ d¤ d¥ d¦ d§ dš d¨ d› d© dª d� d« dž dŠ d¬ dŸ d­ d  dœ d¡ d® dŒ d� d¯ d‹ d° d¢ dŽ g ƒ d! 6t  d{ d| d± d² d} d³ d~ d� d d� d‘ d´ d� d‚ dµ d“ d” d• dƒ d„ d€ d– d… d† d— d‡ d˜ d™ dˆ d’ d¶ g ƒ d> 6i t  d· d¸ d² d³ d¹ d� d± d� d‘ d´ d’ dº d» dµ d“ d” d• d¼ d– d½ d¾ d— d˜ d™ d¶ g ƒ d! 6t  d¿ d£ dÀ dÁ d¤ d¥ dÂ d¦ d§ dÃ dš d¨ d� d© d« dª d› dÄ dÅ d¬ dž dÆ dÇ dŸ dÈ d­ d  dœ d¡ d® dÉ d¯ d° dÊ d¢ g# ƒ d> 6i t  d¿ d£ dË dÀ dÁ d¤ d¥ dÇ d¦ dÌ d§ dÃ d¨ d© d« dª dÍ dÄ dÅ dÎ dÏ dÆ d¬ dÐ dÈ d­ dÑ dÊ dÂ d® dÉ dÒ d¯ d° dÓ dÔ dÕ g% ƒ d! 6t  d· d¸ d² dÖ d× d¹ d± dØ d´ dÙ dº d» dµ d¼ dÚ dÛ dÜ d½ d¾ dÝ d³ dÞ d¶ g ƒ d> 6i t  d¿ dÀ dÁ dÇ dß dÃ dà dÊ dá dâ dÍ dÄ dÅ dÎ dÏ dÆ dÐ dÈ dã dÑ dä dÂ dÌ dÉ då dÒ dË dÓ dÔ dæ dÕ dç dè g! ƒ d! 6t  d· dÝ d¸ dÚ dÖ d× d¹ dº dé dê dØ dë dÙ dì d» dí dî d¼ dÛ dï dÜ dð dñ d½ d¾ dò dÞ g ƒ d> 6i t  dó dô dÎ dß dõ dà dö d÷ dâ dØ dÍ dø dù dú dÏ dÐ dá dã dÑ dä dÌ dû då dÒ dË dÓ dÔ dæ dÕ dç dè g ƒ d! 6t  dÝ dÚ dü d× dý dþ dé dê dÿ dë d dÙ ddì dí ddî ddï ddÜ dð ddÖ dñ ddÛ dò dÞ g ƒ d> 6i t  ddü ddd	dþ dé dê dÿ dë d d
dï ddì dí ddý dî dddddð ddñ dddò dddg  ƒ d! 6t  dddó dô ddß dõ ddà ddá d÷ dâ ddç dø dù dú dö dã dä dû ddå dddæ dè g ƒ d> 6i t  ddddü dddd	dþ dÿ dd d
ddd ddý d!ddd"dddd#dddddg ƒ d! 6t  dd$ddó d%dô ddõ ddddö d&d÷ ddø dù dú d'd(d)d*d+d,d-dû ddd.g ƒ d> 6i t  dd$d/dd%d,dd0ddd1dd&d-dd2d3d4d'd5d(d)d*d+d6dd7dd.d8d9d:g  ƒ d! 6t  dd;d<ddddd	dd=d
dd dd!d>dd"dd?dd@d#ddAddBdg ƒ d> 6i t  d$d/d2d%d,dCd0d1dDdEd&d-d3dFd4d'd5d(dGd)d*dHd+d6d7dId.d8d9d:g ƒ d! 6t  dd<dJddKdLdMdd=dNddd dOd!dPd>dQd"d;d?dRd@d#dAdSdTdUdVdBg ƒ d> 6i t  dWdXd/dYd2dCdZd0d1dDdEd[d3dFd\d4d5dGdHd]d^d_d7dId6d`dad8dbd9d:g ƒ d! 6t  d<dJdKdLdMd=dcdddedNdOdfdPd>dgdQd;dhd?dRdid@djdAdSdTdUdVdBg ƒ d> 6i t  dJdKdLdkdldMdmdndodpdddqdrdsdtdNdOdfdPdgdQdcdhdRdudidjdSdTdUdVdedvg! ƒ d! 6t  dWdXd^dCdZdwdDdEdxd[dFd\dydGdHdzd{d]d|dYd}d_dId~d`dadbg ƒ d> 6i t  dWdXd^dd€d�dZdwd‚dxdƒd[d\dyd„d…dzd{d]d|dYd†d}d_d‡d~dˆd`dadbd‰g ƒ d! 6t  dŠd‹dkdldŒdmdndodpdddqdrdsdtdfd�dgdŽdcdhdudidjd�d�d‘dedvg ƒ d> 6i t  dŠd‹d’d“dkdld”d•dŒdmdndodpd–dqdrdsdtd�d—dŽdud˜d�d�d‘dvg ƒ d! 6t  d™dd€dšd�d›dwdœd‚dxdƒd�dždŸd dyd„d…d¡dzd{d|d¢d†d}d‡d~d£dˆd¤d‰g ƒ d> 6i t  d™dd€dšd�d›d¥dœd‚dƒd¦d§d�džd¨dŸd d„d…d¡d¢d†d‡d£dˆd¤d©dªd«d‰g ƒ d! 6t  dŠd‹d¬d’d­d“d®d”d•dŒd–d�d—d¯d°d±d²d³d´dŽdµd¶d˜d·d�d�d‘g ƒ d> 6i t  d¬d’d­d“d¸d¹d®d”d•d–d—d¯dºd°d±d²d³d´d»d¶d¼d½d¾d˜d·dµd¿g ƒ d! 6t  d™dÀdšdÁd›dÂd¥dœdÃdÄd¦d§d�džd¨dÅd dÆdÇd¡d¢dÈdŸdÉdÊd£d¤d©dªd«g ƒ d> 6i t  d¬dËd­d¸d¹d®dÌdÍd¯dºd°d±d²d³d´d»dÎdÏd¶d¼d½d¾dÐdÑdÒd·dÓdÔdµd¿g ƒ d! 6t  dÀdÁd¥dÕdÃdÄd¦d§dÇdÖd¨dÅdÆd×dØdÙdÚdÈdÛdÉdÊdÜdÂdÝd©dªd«g ƒ d> 6i t  dÞdßdÁdàdÄdádÃdÀdÇdâdÕdãdÅdÆd×dØdÙdÖdÚdädÈdÛdÉdÊdÜdådædÂdÝdçg ƒ d! 6t  dèdédêdËd¸d¹dëdÌdÍdºdìdíd»dÎdÏd¼d½d¾dÐdÑdîdÒdïdðdÓdÔd¿g ƒ d> 6i t  dÞdñdòdßdàdádâdÖdódãd×dØdôdÙdõdödÚdädÕdÛd÷dÜdødùdådædÝdçg ƒ d! 6t  dèdédúdûdËdüdýdþdÿdëdÌd dÍdêddìdddídÎdÏdÐdÑdîdÒdïdðdÓdÔg ƒ d> 6i t  dÞdñdòdßddàddáddâdódãddôddõdöd	däd÷dødùdådæd
dçdddg ƒ d! 6t  dèdédúdûdüdýdddþdÿddddëdd ddêddìdddíddïdîdðdg ƒ d> 6i t  dñdódddddôdddòddddddõdöd	dd÷dødùddd
dddg ƒ d! 6t  dd dúd!düdýdddþdÿddd"dd#d d$ddûdddd%d&d'dd(dd)g ƒ d> 6i t  dd d*d!d+d,ddddd"dd#d$dd-d.d/d%d0d1d&d'dd(dd2d)d3g ƒ d! 6t  dddd4dd5dd6dddd7d8dd9d	dd:ddd;dd<d
ddddg ƒ d> 6i t  d=d>d?ddd4d@d5d:dAd6dddBd7d8dddCddDdEd9dd;dd<dFdGg ƒ d! 6t  d d*dHd!d+d,dIdJd&d"dKd#d$d-d.d/dLd%d0d1dMd'dNd(d2d)dOd3g ƒ d> 6i t  d=d>d?dPd4d@dQd:dAdRdSdTdUdVd7dBd6d8d9dCdWd5dDdEdXd;dYd<dFdGg ƒ d! 6t  dZd*dHd[d+d,dIdJdKd\d-d]d^d.d/dLd0d1d_dMd`dNdad2dOd3dbg ƒ d> 6i t  dcd=d>d?dddedfdPd@dQdFdAdRdgdSdTdUdVdhdidBdjdCdkdWdldDdEdXdmdYdndGdodpg# ƒ d! 6t  dZdHd[dqdIdJdrdKdsd\dtd]d^d_dLdMd`dNdadOdudbg ƒ d> 6i t  dcdmdidddedvdfdPdwdxdQdydRdzdgd{dTdUdVdhdSdjdkdWdld|d}dXd~dYdndodpg! ƒ d! 6t  ddZd[dqd€d�drd‚dƒdsd„d\dtd]d^d_d…d`d†dad‡dˆdudbg ƒ d> 6i t  d‰dcdŠdidddedvdfdwdxd‹dŒdydzdgd{dhd�djdŽdkdld|d}d~dmdnd�dodpg ƒ d! 6t  d�d‚dd‘d’dqd€d�d“drd”d•d–dƒd—dsd„dtd˜d™d…d†dšd›d‡dˆdug ƒ d> 6i t  d‰dŠdœdvdwdxd‹d�dŒdžd|dŸdyd dzd{d¡d¢d£d�dŽd¤d}d¥d~d�d¦d§g ƒ d! 6t  d�dd¨d‘d’d€d©d�d“d”d•d‚dªd—dƒd„d«d–d˜d¬d™d…d†dšd›d­d‡d®dˆg ƒ d> 6i t  d�d¯d¨d‘d’dªd©d“d°d±d”d•d²d³d´dµd¶d«d–d·d¸d˜d¬d™d—dšd¹d›d­dºd®g ƒ d! 6t  d‰dŠd»dœd‹d�dŒdždŸd d¼d½d¾d¡d¢d£d¿dÀd�dÁd�d¤d¥dŽd¦d§g ƒ d> 6i t  dÂd»dœdÃdÄd�dždÅdŸd d¼d½d¾d¡d¢d£d¿dÀdÁdÆd¤d¥dÇdÈd¦d§dÉg ƒ d! 6t  dÊdªdËd¯d¨dÌd©dÍdÎd°d±dÏd«dÐdÑd³d´dÒdµd¶dÓd²d·d¸d¬d¹d­dÔdºd®g ƒ d> 6i t  dÂdÕd»dÖd×dÃdØdÄdÅdÙd¼d½dÚd¾dÛd¿dÀdÁdÜdÝdÇdÞdÈdÆdÉg ƒ d! 6t  dÊdËd¯dßdÌdàdÍdÎdád±dÏdÐdÑd³d°dâd´dÒdãdµd¶dÓd²d·d¸dädådæd¹dÔdºdçg  ƒ d> 6i t  dÊdËdßdèdÌdàdÍdÏdÎdédÐdÑdâdêdëdÒdãdådÓdádädædìdídÔdçdîg ƒ d! 6t  dÂdÕdïdÖd×dÃdØdðdÄdñdÅdÙdòdÚdódôdõdÛdödÜd÷dÝdødùdÇdÞdúdÈdÆdÉg ƒ d> 6i t  d" d$ dßdèd& dàdádéd* d+ dâdëdãd0 dåd1 d2 d5 däd6 dædìdíd: dçdîd< g ƒ d! 6t  d dÕdïdÖd×dødØd d d d dðdÙdòdêd dÚdódôdõd dÛdödÜd÷dÝdùd dÞdúdñg ƒ d> 6i t  d d d dïdød d d d dðd	 d
 dòdêd d dódôd dõd d d död÷d dùd d d d d dúdñg" ƒ d! 6t  d" d$ dèd& d' d( déd* d+ d, dëd0 d1 d2 d3 d5 d6 dìdíd9 d: d; dîd< d= g ƒ d> 6g' }  t |  dût ƒ} t | d! ƒ dük sWt ‚ t | d> ƒ dýk sst ‚ dþGHd  S(ÿ  Ni    i�† i–K iõ i”� i•© i–« i—î	 i!B i$—
 i¥ž  i'�
 iª° i±Ó i´  iµ—  i<¿ iµ¹ i@± iB! iEf iÈJ iOò	 iÜÿ iâÍ idE	 ieQ ihñ ik ihõ ito iu� s   h,k,liƒ< i†P iE	 i‘ iE i« ik i%õ	 i'ò i«È i± i3  i·G i¸F	 i¹ú i;« iB‚ iJD iM‹ iP“
 i[> iÝø ifJ ihL ii² im† izì i~›  s	   h,-h-k,-liÙ iÅ iµ i  i L i¢ù	 i¨U i6J	 ic¶ id¡  ièø iqV i¤O i¨ÿ iP iW“ iØ# i^s ià� i¢
 iWU i™“ iN	 i1¹ iªþ i±É iCT iÎ ié 
 inÝ ix¤  i™ i i&W iDy iE§
 iÑ¼ iÙ  ip& iü[ i] iª
 iµ+ i>~ iVZ iZá i\˜ ií ixS	 i‹¥  iÏ iY i iª  i2ž i7­
 iFÂ iM^ iÕ½ i* iÇ i

 iÔ i› i!Ã iÜæ i5«  i9` iÔ‚ iÙ iâ] ik/ ið  iúU	 i‰a i@²
 iÙ^ iá¡ id it iž i© i.Ù i´ iKÉ iÅd iKÇ i_ì in¥ iô  iu3 id iY	 i#
 iœŸ i¹®  iEƒ iR´
 iØa iof i‚±  i
ß ii i”Ê i—7 ij iŸe i# i°j iD iÍ
 iY¸
 ig\	 iëò iÌ i in  i4¬ i¿£ iý† iÎ i… i˜Ñ iŸ  i¾o iN‰ iå
 iç i�> i¶  i‰³ iXä i˜"  i°b	 i2ö iB§ iØm iLj iÞn iEº
 iëq iYt i)
 i¶­ iu¿
 iE% iQ ic¸  iít inC iõ&  i» i“ë i&g	 i8Õ i� i8 i[ù ikn irÓ i i! i!Ú i%Â iM* iÖò ibx iór i©x iÖ i¤’ i¥¼  i.
 i<¶ i¿u iËh	 i¸G ieÄ
 ib-  iëþ i	( in	 i—w i¡Â  i$• i³! i4, i6~ iÚ i�Þ i¡Ç
 i¢ø i¦3  i±} i;{ iEÛ i¢
 iÖ¼ i`L ieÆ i•€ iE!
 i!û i¶O iEÂ iQ& iV	 iÙ- ign	 iïÞ iÿ8  i�‚ i3 iœ iƒ iž| i§Ê iÞÇ  idâ ioÌ
 i€U iŠ£ iˆ i«4 i:Ì  i>Å iÅå iÕ3 ids	 iƒ… iB<  i£‚ i@Ò
 iÂ+ iBÐ iJ'
 iMŠ iŽ i¤ç io  i: iË i‡ i¨ i¶� i?9 iÁu	 iÒØ
 i_A  iz0 i}Y iþé iÖ,
 i‰Î  i-Õ iM iXì i_ inŠ i‰ i�{	 iî i Û
 i8	 iCÑ  iKÚ iâG  i
Œ iA i4
 i#­ iµ> iKÏ iK� iÒ� iÙ\ ióí iË iy“ i|5 i� ià
 iV8
 i‘ i²D i9e iÒ� iÖÔ  iÙÒ iq˜ iø² i{Ü i1ò iµ i»‘ iÅH  iÎô i×D iÜ: iã€	 i>
 i H i' i)ß i*? i1Ù  i¸ i9h i;M  i¾÷ i[…	 i‘ i–œ i¤“ iÁ× iOI iÐù iÔµ iX– iæã
 i£ i‰ü i‹	 iã i'm iB— iGÝ  iWÿ ißP  ièÚ i~ i– i„é
 i%A
 iÉL iÒ# iqº iùA i|N i’H i—q i!í
 i$¤ i5¿ i8› i` i‚ÿ iŠç iŽ�	 iU i,à i/Q ißS  iŠ iI( iVá  ig˜ iîE
 i- iªN i+¨ i¹ì itY iöÃ iyW i‘	 i”  i�¡ i½V  iÅ% iFv iIæ iÊæ  iMI
 iùð
 iÚ� ik
 i–	 i™ê iB^ iO iÛ, i\¡ i_ó iüé  i« iU in] iM
 iŸx i:X  iC° iÈö
 i^¦ ià3 ibÊ i�¥ i±° i<Ñ iÖð iÙY iä« içb ijO
 iðø iö›	 iÞ1 iÞù
 iÈî  iK iP9 iÙ} iß] ic	 iïY  i‡= i’³ iœV
 i"ö i² 	 i9 iÝ_ iç7 iêg iòb i†¨ iˆý iÂÒ i*]  iÆ iÎó  ié‚ ig  iï³ iˆ_  i	= i	 i"û iTÕ iÖ‡ ia id¶ iæª i‹¶ iÂ? im iš¥	 ih i \
 i9 iÃd iHö  iJ i•ª	 iŸ� i+» iÇl iOF iZd  ip iõr iú° iýú  i	 iœØ i†^
 i&! i§i i¯C iÁº iæ ió i˜®	 iœ¿ iÛ iÅ iÆw iOÝ iÐH if iie  i‡ÿ  ie
 iÜµ i7' i<	 iÐÀ iÛ‘ i\o igJ iöp iŠi
 i i| iÊ iM, iNj  iQ	 iRà iu³	 iüÅ i i[u iBq iL! iÎ” iÐM iÜ¸ ihN ioÆ in  i�2 in
 iž	 i-½ iKÊ iÒ	 iÜ¹	 i]t ið� iôS i‹ i& i�O i¬ä iÏw i[š idË iù iÍ i  i3Í i7  i¼n
 iÂ iE~ iWˆ iår  inÀ i	z i	 i68 iKU iÌ¾	 iÎR iá ijë i( i 	 i’ƒ i“s
 i–¤ i¶Ï iGY iÃ	 iOV iV iZ, if= iðŒ i~y  i  i’Ñ iñ i²} iGÃ i~ iö i™D iš‰ i°Ò i5‘ i7© i\É	 i]‚ if i„^ i“x
 iÆ i«% i²}  i´Y iÝ ieÙ iv#	 iü1 i€Ê i6 iŸ‡ i¤– iÍ_ ix}
 iøÝ iü i�Ž iŽI i›­ i¤Ö i©$ iÇ iÝ( iT�  i×)	 içd ilÏ	 iŽd i£› i¦�
 i*‡  i1Î iÁ-	 iH+ iIÔ	 iÜ³ iái iy  iü! iŒã iP i.“ iF+ iÖ� io; iúÛ i…Œ  i‚
 iŸà iG/ i®è i1Ó i7Ú	 i:T iL� iÏ¶ ié= iñ0	 io i´ i5/ i4˜ iJ“ iË% iPk i�C i4 i!W i'™ iy» iè× iw
 iÿæ i‚6	 i„, iß	 ip i�  i1 i'� i,‡
 i3í iF¤ iðu i‚¨ i‰7 iŒž i� i(9 i·7 iIÀ iVñ iX:	 iìà i�\ ië iz i°Œ
 i6ã	 iRu i:¢ i^�  iwD iG i£ i1; i²§ i`> iâõ iy{ i‡æ i˜é	 iùí i*^ i:{ i<® iÁ?	 iT’  iWÃ i iÝ: iqŽ
 R	   iˆ  ip  t   OK(   Ra   Râ   R•   R   R   (   t   testdataR6   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   test_reassemblyÄ  sH    ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ Ht   __main__(    (   t
   __future__R    t   cctbxR   t   cctbx.array_familyR   t   libtbx.development.timersR   R   t
   miller_extR¹   t   cctbx.mergingR   R   t   scitbx.lbfgs.tst_curvaturesR–   RU   RW   R•   Râ   Ræ   RL   Rì   Rþ   R  R“   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/merging/brehm_diederichs.pyt   <module>   s$   ä2<#	+	