ó
ï™xTc           @   së  d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z m Z m Z m Z m Z d  d l m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z d  d l Z  d  d l! m" Z" d  d l# Z d  d l$ m% Z% d  d l& Z& d  d l' Z' d e( f d „  ƒ  YZ) d e) f d „  ƒ  YZ* d e) f d „  ƒ  YZ+ d e( f d „  ƒ  YZ, d e( f d „  ƒ  YZ- d e( f d „  ƒ  YZ. d e( f d „  ƒ  YZ/ d e( f d  „  ƒ  YZ0 d! e, e* f d" „  ƒ  YZ1 d# e- e* f d$ „  ƒ  YZ2 d% e. e* f d& „  ƒ  YZ3 d' e/ e* f d( „  ƒ  YZ4 d) e, e+ f d* „  ƒ  YZ5 d+ e- e+ f d, „  ƒ  YZ6 d- e. e+ f d. „  ƒ  YZ7 d/ „  Z8 d0 e( f d1 „  ƒ  YZ9 e: d2 „ Z; d3 „  Z< e= d4 k rçe< ƒ  n  d S(5   iÿÿÿÿ(   t   division(   t   object_oriented_patterns(   t   eigensystemt   svd(   t   matrix(   t   normal_eqns_solving(   t   sgtbxt   crystalt   xrayt   adptbxt   uctbx(   t   euclidean_model_matching(   t   flex(   t   observations(   t   random_structure(   t   least_squares(   t   constraints(   t   origin_fixing_restraintsN(   t   approx_equal(   t   matht   refinement_testc           B   s   e  Z d  Z d „  Z RS(   i   c         C   sk   |  j  d k r |  j ƒ  nK d |  j |  j f GHx2 t |  j  ƒ D]! } |  j ƒ  d Gt j j ƒ  qA WHd  S(   Ni   s   %s in %st   .(   t   ls_cycle_repeatst   exercise_ls_cyclest   purposet   hallt   xranget   syst   stdoutt   flush(   t   selft   n(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyt   run   s    
(   t   __name__t
   __module__R   R    (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR      s   t   site_refinement_testc           B   sM   e  Z d  Z d Z d „  Z d „  Z d „  Z d „  Z e e ƒ Z d „  Z	 RS(   i   s   site refinementc         C   s   |  j  ƒ  t j |  ƒ d  S(   N(   t#   exercise_floating_origin_restraintsR   R    (   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    +   s    
c         C   s  t  j d |  j ƒ } | j d d ƒ } t j t j | ƒ ƒ } xC |  j ƒ  D]5 } | j	 j
 t ƒ j t ƒ j t ƒ | j | ƒ qM W| j ƒ  |  _ | |  _ | j d d d t ƒ } | j | d d ƒj ƒ  } | j ƒ  j d	 t j | j ƒ  d
 ƒ ƒ |  _ d  S(   Ns   Hall: %st   volumeiè  t   d_ming      à?t   anomalous_flagt	   algorithmt   directt   sigmasg      ð?(   R   t   space_group_infoR   t   any_compatible_crystal_symmetryR   t	   structureR   t   special_position_settingst
   scattererst   flagst   set_use_u_isot   Falset   set_use_u_anisot   set_grad_sitet   Truet   add_scatterert   as_emma_modelt   reference_xst   xray_structuret   build_miller_sett!   structure_factors_from_scattererst   f_calct   normt   customized_copyR   t   doublet   sizet   fo_sq(   R   t   sgit   cst   xst   sct   mit   ma(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyt   __init__/   s    	c      	   C   s   |  j  } d } t j j |  j ƒ } t j d |  j d g  d | ƒ } |  j j ƒ  } t	 j
 | | d t	 j ƒ  d t j ƒ  ƒ} | j ƒ  | j ƒ  } t | ƒ | | d d k s¸ t ‚ t j | j ƒ  ƒ } | j ƒ  }	 | j ƒ  }
 t	 j
 | | d t	 j ƒ  d t j ƒ} | j ƒ  t j ƒ  } | j j ƒ  } d	 } xG | j j D]9 } | j ƒ  d	 k sbt ‚ | j | | ƒ | d 7} qDWx1 |  j  D]& } | j t j | ƒ ƒ | d 7} q‹W| j! t j" | | ƒ ƒ |  j# | ƒ t |  j  ƒ k sòt ‚ | j$ ƒ  j% d	 | ƒ s"t t& | j' ƒ  ƒ ƒ ‚ | j ƒ  } t | ƒ | | d d k sRt ‚ t j | j ƒ  ƒ } | j ƒ  } | j ƒ  } t |  j  ƒ } t( | | |	 |  d
 d ƒs²t ‚ |	 | |	 | d d k  sÖt ‚ | d k r2|
 j) d | | d d	 d | d | ƒ } |  j# | ƒ | k s%t ‚ | j) d d	 d d	 d | d | ƒ } |  j# | ƒ | k sdt ‚ t j |  j  ƒ } |  j# | ƒ | k s‘t ‚ t j | d | ƒ } | j* t j" d | | ƒ ƒ | j+ | d d	 d d	 ƒ| j+ | d | d d	 ƒ| j+ | d d | d d	 ƒ|  j# | ƒ | k s�t ‚ nk t( | d	 | !j, |
 | ƒ t- j. d	 ƒ sct ‚ t( |
 | j, t j |  j  d	 ƒ ƒ t- j. d	 ƒ s�t ‚ |  j j/ ƒ  } t	 j
 | | d t	 j ƒ  d t j0 ƒ} | j1 ƒ  j2 ƒ  } x³ | j3 d d ƒ | j4 ƒ  | j1 ƒ  j2 ƒ  } t5 j6 | ƒ t5 j6 | ƒ } d	 } xU |  j  D]J } t5 j6 | d  ƒ } t( | j7 | ƒ d	 d
 d d d  ƒs@| d 7} q@q@W| rèPqèqè| j ƒ  | j9 ƒ  | j: ƒ  } x> |  j  D]3 } t( | j7 t j | ƒ ƒ d	 d
 d ƒsÅt ‚ qÅWd  S(   Ng�íµ ÷Æ°>R-   R   t   connectivity_tablet   weighting_schemet   origin_fixing_restraints_typei   i   i    t   epsgê-�™—q=t   i_rowt   i_columnt   n_rowst	   n_columnsi   t   rms_differenceg333333Ã?g{®Gáz„?t   out(;   t   n_independent_paramst   smtbxt   utilsRI   R9   R   t   reparametrisationRA   t   as_xray_observationsR   t   crystallographic_lst   unit_weightingt   oopt   nullt   build_upt   normal_matrix_packed_ut   lent   AssertionErrorR   t   real_symmetrict   matrix_packed_u_as_symmetrict   valuest   vectorsR   t   homogeneous_weightingR   R?   t#   jacobian_transpose_matching_grad_fct   origin_fixing_restraintt   singular_directionsR=   t   extendt   continuous_origin_shift_basist   reshapet   gridt   rankt   opposite_of_gradientt   all_approx_equalt   listt   gradientR   t   matrix_copy_blockt   resizet   matrix_paste_block_in_placet   angleR   t   pit   deep_copy_scattererst   atomic_number_weightingt
   sites_fract   meant   shake_sites_in_placet   apply_symmetry_sitesR   t   colt   dott   Nonet   solvet   step(   R   R   t   eps_zero_rhsRI   RV   t   obst   lst   unrestrained_normal_matrixt   evt   unrestrained_eigenvalt   unrestrained_eigenvect   singular_testt   jact   mt   st   restrained_normal_matrixt   restrained_eigenvalt   restrained_eigenvect   pt   unrestrained_null_spacet   restrained_spacet   singulart   rank_finderRD   t   barycentre_0t   barycentre_1t   deltat   moved_far_enought   et   shifts(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR$   ?   sÊ    					
$
$$$		!,
$ 

c         C   s9   t  j | j ƒ  d t d t ƒ} | j | j d d ƒ S(   s    row rank of a t   accumulate_ut   accumulate_vi    g•Ö&è.>(   R   t   realt	   deep_copyR2   t   numerical_rankt   sigma(   t   clst   at   rank_revealing(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRl   É   s    c   	      C   sÆ  |  j  j ƒ  } t j j | ƒ } | j ƒ  } | j d d ƒ t j d | d g  d | ƒ } t	 j
 |  j j ƒ  | d t	 j ƒ  d t j ƒ} t j | d d	 d
 t ƒ} t | j ƒ  d d d ƒsÇ t ‚ t | j ƒ  d ƒ sâ t ‚ | j d | j d k o| j d k n s(t t | j ƒ ƒ ‚ t | j d d d d ƒsJt ‚ t j | | j ƒ  ƒ j d } | j j t j  d ƒ k sŠt ‚ x5 | j! D]* } t | j" | ƒ d d d ƒs”t ‚ q”Wd  S(   NRQ   gš™™™™™¹?R-   R   RI   RJ   RK   t   n_max_iterationsi   t	   track_alli   RL   gñhãˆµøä>i    i   iÿÿÿÿgH¯¼šò×j>g-Cëâ6?(#   R9   Rv   RT   RU   RI   R7   Rz   R   RV   R   RX   RA   RW   RY   R   Rw   R   t   naive_iterationsR5   R   t   scale_factorR_   t	   objectivet   objective_historyt   numstrt   gradient_norm_historyt   emmat   model_matchest   refined_matchest   rtt   rR   t   identityt   pairst   calculate_shortest_dist(	   R   RD   RI   t   emma_refRV   Rƒ   t   cyclest   matcht   pair(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR   Ð   s4    			!
*"!(
   R!   R"   t   debugR   R    RH   R$   Rl   t   classmethodR   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR#   &   s   			Š	t   adp_refinement_testc           B   s&   e  Z d  Z d Z d „  Z d „  Z RS(   gš™™™™™É?s   ADP refinementc         C   s]  t  j d |  j ƒ } | j d d ƒ } t j t j | ƒ ƒ } x­ t |  j	 ƒ  ƒ D]™ \ } } | j
 j t ƒ j t ƒ j t ƒ | j | ƒ | j ƒ  j | ƒ } t j d |  j ƒ } t j | j ƒ  | ƒ } | j | ƒ | j	 ƒ  d _ qS W| |  _ | j d d d t ƒ }	 |	 j | d	 d
 ƒj ƒ  }
 |
 j ƒ  j d t  j! |
 j" ƒ  d ƒ ƒ |  _# d  S(   Ns   Hall: %sR%   iè  t   u_scaleiÿÿÿÿR&   g      à?R'   R(   R)   R*   g      ð?($   R   R+   R   R,   R   R-   R   R.   t	   enumerateR/   R0   R1   R2   R3   R5   t   set_grad_u_anisoR6   t   site_symmetry_tablet   getR	   t   random_u_cartt   random_u_cart_scalet   u_cart_as_u_start	   unit_cellt   average_u_start   u_starR9   R:   R;   R<   R=   R>   R   R?   R@   RA   (   R   RB   RC   RD   t   iRE   t	   site_symmt   u_cartRÄ   RF   RG   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRH   ú   s      	c   	      C   s  |  j  j ƒ  } | j ƒ  t j j | ƒ } t j d | d g  d | ƒ } t j	 |  j
 j ƒ  | d t j ƒ  d t j ƒ  ƒ} t j | d d d t ƒ} t | j ƒ  d	 d
 d ƒs¸ t ‚ t | j ƒ  d ƒ sÓ t ‚ t | j ƒ } | j d | j | d	 k st | j ƒ ‚ t | j d d d
 d ƒs1t ‚ xG t |  j  j ƒ  | j ƒ  ƒ D]' \ } } t | j | j ƒ sPt ‚ qPWd  S(   NR-   R   RI   RJ   RK   R£   i
   R¤   i   RL   g-Cëâ6?i    iÿÿÿÿg�íµ ÷Æ°>(   R9   Rv   t	   shake_adpRT   RU   RI   R   RV   R   RX   RA   RW   RY   RZ   R[   R   R¥   R5   R   R¦   R_   R§   R^   R¨   Rª   t   zipR/   RÄ   (	   R   RD   RI   RV   Rƒ   R´   R   t   sc0t   sc1(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR     s.    
			!!"+(   R!   R"   RÀ   R   RH   R   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR¹   õ   s   	t   p1_testc           B   s,   e  Z d  Z d Z d d	 d g Z d „  Z RS(   s   P 1i	   i   i    i   c         c   s7   t  j d d ƒ Vt  j d d ƒ Vt  j d	 d ƒ Vd  S(   Nt   C1gš™™™™™¹?gš™™™™™É?g333333Ó?t   C2gš™™™™™Ù?gffffffæ?gš™™™™™é?t   C3gš™™™™™¹¿gš™™™™™é¿g333333ã?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™Ù?gffffffæ?gš™™™™™é?(   gš™™™™™¹¿gš™™™™™é¿g333333ã?(   R   t	   scatterer(   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR/   4  s    (   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   RS   Ri   R/   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRÌ   ,  s   	t   p2_testc           B   s&   e  Z d  Z d Z d g Z d „  Z RS(   s   P 2xi   i   i    c         c   s7   t  j d d ƒ Vt  j d d ƒ Vt  j d d ƒ Vd  S(   NRÍ   gš™™™™™¹?gš™™™™™É?g333333Ó?RÎ   g333333Ó¿i    RÏ   gš™™™™™Ù?gš™™™™™¹¿(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   g333333Ó¿i    i    (   gš™™™™™Ù?gš™™™™™¹?gš™™™™™¹¿(   R   RÐ   (   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR/   @  s    (   i   i    i    i   i   i    i    (   R!   R"   R   RS   Ri   R/   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRÑ   :  s   	t   pm_testc        	   B   s)   e  Z d  Z d Z d d g Z d „  Z RS(   s   P -2xi   i    i   c         c   s7   t  j d d ƒ Vt  j d d ƒ Vt  j d	 d ƒ Vd  S(   NRÍ   gš™™™™™¹?gš™™™™™É?g333333Ó?RÎ   i    g333333Ó¿gš™™™™™Ù?RÏ   gffffffæ?gš™™™™™¹¿(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   i    g333333Ó¿gš™™™™™Ù?(   gffffffæ?gš™™™™™¹?gš™™™™™¹¿(   R   RÐ   (   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR/   L  s    (   i    i   i    i   i    i    i   i    (   i    i    i   i    i   i    i    i   (   R!   R"   R   RS   Ri   R/   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRÒ   E  s
   	t   all_special_position_testc           B   s,   e  Z d  Z d Z d Z d g Z d „  Z RS(	   s    cod_ma_xs/2104451.pickle (generated by cctbx/omz/cod_select_and_pickle.py)
      It was pointed out by Ralf that it crashes smtbx-refine:
      it turned out to be a bug in floating origin restraint
      and this is a regression test for that bug fix.
  s   C 2c -2i   i    i   i   c         c   sj   t  j d d ƒ Vt  j d d ƒ Vt  j d	 d ƒ Vt  j d d ƒ Vt  j d d ƒ Vt  j d d ƒ Vd  S(   Nt   Bag      à?g/Šø¬×?g®šçˆ|—Û?t   Mgg       €g'ÛÀ¨Ø?g*ÖT…µ¿t   F1g        gëÅPN´«Ò?gaª™µé?t   F2gýôŸ5?þÔ?g{ØœƒgÓ?t   F3g
1—Tm7à?gÎUó‘ïâ?t   F4gro~ÃDƒÚ?gå|±÷âð?(   g      à?g/Šø¬×?g®šçˆ|—Û?(   g       €g'ÛÀ¨Ø?g*ÖT…µ¿(   g        gëÅPN´«Ò?gaª™µé?(   g        gýôŸ5?þÔ?g{ØœƒgÓ?(   g        g
1—Tm7à?gÎUó‘ïâ?(   g      à?gro~ÃDƒÚ?gå|±÷âð?(   R   RÐ   (   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR/   \  s    (   i    i   (   i    i   i    i   i    i   i    i   i    i   i    i   (   R!   R"   t   __doc__R   RS   Ri   R/   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRÓ   Q  s
   	t	   twin_testc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c   
      C   s_  t  j d t j d du d d ƒ d	 t j t  j d
 d d dv d dw ƒ t  j d
 d d dx d dy ƒ t  j d
 d! d dz d d{ ƒ t  j d
 d' d d| d d} ƒ t  j d
 d. d d~ d d ƒ t  j d
 d2 d d€ d d� d8 d9 ƒ t  j d
 d: d d‚ d dƒ ƒ t  j d
 d? d d„ d d… ƒ t  j d
 dD d d† d d‡ ƒ t  j d
 dN d dˆ d d‰ ƒ t  j d
 dX d dŠ d d‹ ƒ f ƒ ƒ |  _ t j dŒ ƒ f |  _	 t j
 t j ƒ  f ƒ |  _ de df t j ƒ  |  _ |  j j ƒ  |  _ |  j j dg t dh di ƒ } | j |  j dj dk ƒj ƒ  j ƒ  } | j dl | j ƒ  |  j dm t j
 | j ƒ  dc ƒ ƒ } t  j | j ƒ  | j ƒ  | j ƒ  |  j	 db j ƒ  ƒ } t j
 | j ƒ  dc ƒ } dd dn l m } | j d |  j do | j ƒ  dg | j ƒ  ƒ j  ƒ  } t  j! dp | j ƒ  dq | j ƒ  dr | j ƒ  dg | j ƒ  ds |  j	 db j ƒ  ƒ } | j" | j ƒ  | dt |  j db ƒ\ } }	 | j dl | dm |	 ƒ |  _# d  S(�   Nt   crystal_symmetryRÂ   g·Ñ Þ‰@g¯”eˆc½#@iZ   ix   t   space_group_symbols   hall:  P 3 -2cR/   t   labelt   LIt   sitegåZHÀ ?gYÃEîéêÎ?gÑÊ½À¬PÐ?t   ugfLÁgÓA?g÷ Ý—3ÛE?gñhãˆµø$?g‚¬§V_]5?g?«Ì”Öß?giUMuÿ¾t   NAg#õžÊiO¡?gKu/³á?g&È¨pß?g
ÚäðI'B?g©¾ó‹ôG?gìNwžxÎ&?grQ-"ŠÉ+?g�íµ ÷Æ ?giUMuï¾t   S1g        gähŽ¬ü2x¿gVñFæ‘?8?g§@fgÑ;?gVñFæ‘?(?t   S2gF]kïSUÕ?g]QJVUå?gÉ¡fHË?gÕÌZ
Hû/?g«ZÒQf#?gÕÌZ
Hû?t   S3gÑç£Œ¸ Ð?gÚ–?ß6?gç4´;¤?t   O1g       €g:è½Ã?gÖÿ9Ì—7?g†ÆAœ‡#?gÖÿ9Ì—'?t	   occupancyg+‡ÙÎ÷ï?t   O2gèy’tÍÕ?gêÐéy7D?g�íµ ÷Æ ?góuþÓ4?t   O3gÖÉŠ;Þ¼?gêAA)Z¹G?gümO�Øî?gêAA)Z¹7?t   O4gý¡™'×Ì?g³š®'º.¼?g9Ñ®BÊO¢¿g ûrf»B??gð÷‹Ù’UA?gM½në+?gÚæÆô„%.?g°t><K�?g¢'eRCë¾t   O5g/OçŠRÌ?g:¸Y¼XÜ?gënžê�›Ã?g]‰@õ"I?gd?‹¥H¾2?g÷�…è82?g¼yªCn†+?g�íµ ÷Æð>g]éEí~¿t   O6gŠ�Cý.ß?grM�ÌÎ¢Å?g»Ð\§‘–Ô?g›©¾ó‹B?gÍ®{+C?g}’;l"37?g·_>Y1\Ý>g¢&ú|”÷>gõ‚Osò"#?i    i   iÿÿÿÿgš™™™™™©?i
   R'   R&   g      à?R(   R)   t   dataR*   (   t   millert   indicest   hkl_obst   hkl_calct   space_groupt   twin_lawt   twin_fraction(   g·Ñ Þ‰@g·Ñ Þ‰@g¯”eˆc½#@iZ   iZ   ix   (   gåZHÀ ?gYÃEîéêÎ?gÑÊ½À¬PÐ?(   gfLÁgÓA?g÷ Ý—3ÛE?gñhãˆµø$?g‚¬§V_]5?g?«Ì”Öß?giUMuÿ¾(   g#õžÊiO¡?gKu/³á?g&È¨pß?(   g
ÚäðI'B?g©¾ó‹ôG?gìNwžxÎ&?grQ-"ŠÉ+?g�íµ ÷Æ ?giUMuï¾(   g        g        gähŽ¬ü2x¿(   gVñFæ‘?8?gVñFæ‘?8?g§@fgÑ;?gVñFæ‘?(?g        g        (   gF]kïSUÕ?g]QJVUå?gÉ¡fHË?(   gÕÌZ
Hû/?gÕÌZ
Hû/?g«ZÒQf#?gÕÌZ
Hû?g        g        (   g]QJVUå?gF]kïSUÕ?gÑç£Œ¸ Ð?(   gÚ–?ß6?gÚ–?ß6?gç4´;¤?gìNwžxÎ&?g        g        (   g        g       €g:è½Ã?(   gÖÿ9Ì—7?gÖÿ9Ì—7?g†ÆAœ‡#?gÖÿ9Ì—'?g        g        (   gF]kïSUÕ?g]QJVUå?gèy’tÍÕ?(   gêÐéy7D?gêÐéy7D?g�íµ ÷Æ ?góuþÓ4?g        g        (   g]QJVUå?gF]kïSUÕ?gÖÉŠ;Þ¼?(   gêAA)Z¹G?gêAA)Z¹G?gümO�Øî?gêAA)Z¹7?g        g        (   gý¡™'×Ì?g³š®'º.¼?g9Ñ®BÊO¢¿(   g ûrf»B??gð÷‹Ù’UA?gM½në+?gÚæÆô„%.?g°t><K�?g¢'eRCë¾(   g/OçŠRÌ?g:¸Y¼XÜ?gënžê�›Ã?(   g]‰@õ"I?gd?‹¥H¾2?g÷�…è82?g¼yªCn†+?g�íµ ÷Æð>g]éEí~¿(   gŠ�Cý.ß?grM�ÌÎ¢Å?g»Ð\§‘–Ô?(   g›©¾ó‹B?gÍ®{+C?g}’;l"37?g·_>Y1\Ý>g¢&ú|”÷>gõ‚Osò"#?(	   i    i   i    i   i    i    i    i    iÿÿÿÿ($   R   R-   R   t   symmetryR   t   xray_scattererRÐ   R   t   rot_mxt	   twin_lawsR?   t   random_doublet   twin_fractionsR¦   RÜ   R:   R2   R;   R<   R=   R>   Rí   R@   t   twin_completionRï   Rò   R'   t	   as_doublet   cctbxRî   t   sett   twin_completet
   map_to_asut   hemihedral_detwinnert   twin_with_twin_fractionRA   (
   R   RF   RA   Rû   R*   Rî   t   twin_complete_sett	   detwinnert	   twinned_it	   twinned_s(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRH   f  s¼    				 	 	 	 	 	 	 	 	 	 	 									c         C   sH   |  j  j d d ƒ |  _  |  j ƒ  |  j  j d d ƒ |  _  |  j ƒ  d  S(   Nt   by_valuet   packed_indicest
   resolution(   RA   t   sortt   exercise(   R   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    Ç  s    
c      	   C   s"  |  j  } | j ƒ  } | j d d ƒ | j ƒ  xF | j ƒ  D]8 } | j j t ƒ j t	 ƒ | j j
 t	 ƒ j t	 ƒ q< Wt j j | ƒ } |  j d d k  r³ |  j j ƒ  d } n |  j j ƒ  d } t g  t |  j | ƒ D]$ \ } } t j | | d t	 ƒ^ qÜ ƒ } t j d | d g  d	 | d
 | ƒ }	 |  j j d | ƒ }
 t j |
 |	 d t j ƒ  d t j ƒ} t j  | d d d t	 ƒ} t! g  | j D] } | j" ^ q‘|  j ƒ sµt# ‚ t! | j$ ƒ  d d d ƒsÖt# ‚ | j% d k sët# ‚ | j d d ƒ | j ƒ  t g  t |  j | ƒ D]$ \ } } t j | | d t ƒ^ qƒ } t& j' |
 d | ƒ}
 t j d | d g  d	 | d
 | ƒ }	 t j |
 |	 d t j ƒ  d t j ƒ} t j  | d d d t	 ƒ} t! g  | j D] } | j" ^ qÐ| ƒ sñt# ‚ | j$ ƒ  d k s	t# ‚ | j% d k st# ‚ d  S(   NRQ   g333333Ã?i    g      à?gš™™™™™¹?t   gradR-   R   RI   Rú   t   twin_componentsRJ   RK   R£   i
   R¤   RL   g›+¡†›„=i@   i?   ((   R-   Rv   Rz   RÈ   R/   R0   R1   R2   R3   R5   R4   R¼   RT   RU   RI   Rú   R�   t   tupleRÉ   Rø   R   t   twin_componentR   RV   RA   RW   R   RX   RY   R   Rw   R   R¥   R   t   valueR_   R§   t   n_parametersR   R>   (   R   t   xs0RD   RE   RI   Rú   t   lawt   fractionR  RV   R‚   t   normal_eqnsR´   t   twin(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR  Í  sr    	
=				!
=				(   R!   R"   RH   R    R  (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRÛ   d  s   	a	t   site_refinement_in_p1_testc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s    t   site_refinement_in_p2_testc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s    t   site_refinement_in_pm_testc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s    t-   site_refinement_with_all_on_special_positionsc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s   t   adp_refinement_in_p1_testc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s    t   adp_refinement_in_p2_testc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s    t   adp_refinement_in_pm_testc           B   s   e  Z RS(    (   R!   R"   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    s    c           C   s_   t  ƒ  j ƒ  t ƒ  j ƒ  t ƒ  j ƒ  t ƒ  j ƒ  t ƒ  j ƒ  t ƒ  j ƒ  t ƒ  j ƒ  d  S(   N(   R  R    R  R  R  R  R  R  (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyt   exercise_normal_equations   s    t   special_positions_testc           B   sA   e  Z d  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   gš™™™™™¹?c         K   sŽ  t  j |  | ƒ | |  _ t j d t j d3 ƒ d d ƒ |  _ t j	 |  j j
 ƒ  t j t j d d	 d4 d |  j d5 ƒ ƒt j d d	 d6 d7 d f d |  j d8 ƒ ƒt j d d	 d9 d: d f d |  j d; ƒ ƒt j d d	 d< d= d f d |  j d> ƒ ƒt j d# d	 d? d |  j d@ ƒ ƒf ƒ ƒ |  _	 |  j j d- t d. d/ ƒ } | j |  j	 d0 d1 ƒj ƒ  j ƒ  } | j d2 t j | j ƒ  d ƒ ƒ |  _ d  S(A   NRÂ   g[Ó¼ã�@gçŒ(íM!@iZ   ix   RÝ   s
   Hall: P 6ct   K1Rà   i    gÞqŠŽäò_¿Rá   g|~!<Ú˜?g*ãßg\˜?géšÉ7ÛÜˆ?g        Rã   i   i   i   gO#-•·#Ê?gúDž$�?gO;ü5Y£Ž?gî=\rÜ)}?t   Li1g“þ^
ê?g¾¼ ûèÔ•?g™�Êø÷—?g¾¼ ûèÔ…?Ræ   g)=ÓKŒe¢?gTÆ¿Ï¸°?geS®ð.‘?gTÆ¿Ï¸ ?Rè   g©j‚¨û Ö?g]‰@õ"î?gDÝ µ‰Ð?gÙÄëú›?g'ÚUHùI•?g ^×/Ø«?gÜ)¬ÿsˆ?gçR\Uö]A¿gí¾0™*ˆ¿R'   R&   g      à?R(   R)   R*   (   g[Ó¼ã�@g[Ó¼ã�@gçŒ(íM!@iZ   iZ   ix   (   i    i    gÞqŠŽäò_¿(   g|~!<Ú˜?g|~!<Ú˜?g*ãßg\˜?géšÉ7ÛÜˆ?g        g        gUUUUUUÕ?gUUUUUUå?(   gúDž$�?gúDž$�?gO;ü5Y£Ž?gî=\rÜ)}?g        g        gUUUUUUÕ?gUUUUUUå?(   g¾¼ ûèÔ•?g¾¼ ûèÔ•?g™�Êø÷—?g¾¼ ûèÔ…?g        g        gUUUUUUÕ?gUUUUUUå?(   gTÆ¿Ï¸°?gTÆ¿Ï¸°?geS®ð.‘?gTÆ¿Ï¸ ?g        g        (   g©j‚¨û Ö?g]‰@õ"î?gDÝ µ‰Ð?(   gÙÄëú›?g'ÚUHùI•?g ^×/Ø«?gÜ)¬ÿsˆ?gçR\Uö]A¿gí¾0™*ˆ¿(   t   libtbxt   adopt_optional_init_argst   n_runsR   Rõ   R
   RÂ   RÜ   R   R-   R.   R   Rö   RÐ   t   u_cif_as_u_starR:   R2   R;   R<   R=   R>   R?   R@   RA   (   R   R$  t   kwdsRF   RA   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyRH   /  sB    							c         C   s   t  j |  j j ƒ  | ƒ S(   N(   R	   R%  RÜ   RÂ   (   R   t   u_cif(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR%  S  s    c   	      C   sì   |  j  j ƒ  j ƒ  \ } } } } } } | j \ } } } | t j |  j |  j ƒ | 7} | | | f | _ | j \ } } } } } } | d t j |  j |  j ƒ 9} | d t j |  j |  j ƒ 9} | | | | d d d f | _ d  S(   Ni   i   i    (	   RÜ   RÂ   t
   parametersRà   t   randomt   uniformt
   delta_siteRÄ   t   delta_u_star(	   R   RE   t   _t   ct   xt   yt   zt   u11t   u33(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyt   shake_point_group_3V  s    '!!!c         C   sN   |  j  d k r@ d GHx% t |  j  ƒ D] } d G|  j ƒ  q$ WHn
 |  j ƒ  d  S(   Ni   s   small inorganic refinementR   (   R$  R   R  (   R   RÅ   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    b  s    c         C   s'  |  j  } | j ƒ  } | j ƒ  \ } } } } } |  j | ƒ |  j | ƒ |  j | ƒ |  j | ƒ t g  | j D]' } | d t j |  j |  j ƒ ^ qq ƒ | _ t g  | j	 D]' }	 |	 d t j |  j
 |  j
 ƒ ^ q± ƒ | _	 xX | j ƒ  D]J }
 |
 j j t ƒ j t ƒ |
 j j t ƒ j t ƒ t j j | ƒ } qñ Wt j d | d g  d | ƒ } t j |  j j ƒ  | d t j ƒ  d t j ƒ} t j | d d d	 d d
 t ƒ} t  j! | j" ƒ  | j" ƒ  ƒ j# d } | j$ j% t& j' d ƒ k sôt( ‚ | j) r| j* st( ‚ | j+ d k  s#t( ‚ | j ƒ  j, | j- ƒ  ƒ | j ƒ  j, | j- ƒ  ƒ j. ƒ  } t/ j0 | ƒ d k  sxt( ‚ t1 | j2 ƒ  d d d ƒs™t( ‚ | j3 ƒ  } | j4 d | d t ƒ j5 ƒ  } | j6 ƒ  j7 ƒ  \ } } x2 d! D]* } | j8 | d d | ƒ d k sât( ‚ qâWx> d" D]6 } | j8 | d d | ƒ j9 ƒ  j: d d ƒ st( ‚ qWxÏ d# D]Ç } | | | f d k szt( ‚ t1 | | | f | | d | d f d d ƒs±t( ‚ t1 | | | d f | | | f d d d ƒsèt( ‚ t1 | | | d f | | | f d  d d ƒsXt( ‚ qXWd  S($   Ni   R-   R   RI   RJ   RK   t   gradient_thresholdg�íµ ÷Æ°>t   step_thresholdR¤   i    i   RL   g-Cëâ6?t   jacobian_transposet   normalised_by_goofi	   i   i   i   i   i   i   i"   g        g#B’¡œÇ;i   i   i   gVçž¯Ò<gê-�™—q=g      à?(   i    i	   i   i   (   i   i   i   i"   (   i   i   i   i   (;   R-   Rv   R/   R4  R  Rà   R)  R*  R+  RÄ   R,  R0   R1   R2   R3   R5   R4   R¼   RT   RU   RI   R   RV   R   RX   RA   RW   RY   R   Rw   R   R¥   R«   R¬   R7   R­   R®   R¯   R   R°   R_   t   singles1t   singles2t   rmst   extract_u_cartRÂ   t   normsR   t   absR   R¦   Re   t   covariance_matrixRa   t   accessort   focusRq   t   as_1dRn   (   R   R  RD   t   k1t   s1t   li1t   o1t   o2R/  Rá   RE   RI   RV   Rƒ   R´   Rµ   t   delta_u_cartst   jac_trt   covRŠ   R   RÅ   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR  l  sj    	::			!"!	(77(	   R!   R"   R+  R,  RH   R%  R4  R    R  (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR  *  s   	$			
c      H   C   sB  d d l  m } d d  l } d } t j d d d d d d g d t ƒ } | j d	 d
 ƒ j ƒ  j ƒ  } | j	 d t
 j | j ƒ  d ƒ ƒ } | j ƒ  } | j ƒ  | j d d ƒ x- | j ƒ  D] } | j j t ƒ j t ƒ q¾ Wt j | j ƒ  t j d | d g  d t j j | ƒ ƒ d t j ƒ  d t j ƒ} | j ƒ  t  j! | j" ƒ  j# ƒ  ƒ j$ ƒ  }	 t% j& |	 d |	 d ƒ }
 d |
 } |  r�| GHn  |
 | k  s¨t' | ƒ ‚ t j d t( j) d ƒ d d d d d d d g d t ƒ } | j d	 d
 ƒ j ƒ  j ƒ  } | j	 d t
 j | j ƒ  d ƒ ƒ } | j ƒ  } | j ƒ  | j d d ƒ x- | j ƒ  D] } | j j t ƒ j t ƒ qVWt j | j ƒ  t j d | d g  d t j j | ƒ ƒ d t j* ƒ  d t j ƒ} | j ƒ  t  j! | j" ƒ  j# ƒ  ƒ j$ ƒ  }	 t% j& |	 d |	 d ƒ }
 d |
 } |  r(| GHn  |
 | k  s@t' | ƒ ‚ | j+ | j, ƒ  | j- ƒ  | j. ƒ  ƒ } | j/ t
 j0 t1 | j ƒ  ƒ ƒ | | j. ƒ  ƒ } | j2 ƒ  } t
 j ƒ  } xT t3 d t1 | ƒ d ƒ D]: } | j% j4 | | | d !ƒ } | j5 | j6 | j7 ƒ qÈW| j8 d ƒ st' ‚ t9 j: d t; j< d dód# d ƒ d$ t
 j= t9 j> d% d& d' dôd+ dõƒ t9 j> d% d2 d' död+ d÷ƒ t9 j> d% d< d' død+ dùƒ t9 j> d% dF d' dúd+ dûƒ t9 j> d% dO d' düd+ dýƒ t9 j> d% dY d' dþd+ dÿƒ t9 j> d% db d' d d+ dƒ t9 j> d% dk d' dd+ dƒ t9 j> d% dt d' dd+ dƒ t9 j> d% d} d' dd+ dƒ t9 j> d% d‡ d' dd+ d	ƒ t9 j> d% dŽ d' d
d+ dƒ t9 j> d% d– d' dd+ dƒ t9 j> d% dŸ d' dd+ dƒ t9 j> d% d¨ d' dd+ dƒ t9 j> d% d® d' dd+ dƒ t9 j> d% d¶ d' dd+ dƒ t9 j> d% d¾ d' dd+ dƒ t9 j> d% dÇ d' dd+ dƒ t9 j> d% dÐ d' dd+ dƒ t9 j> d% dÙ d' dd+ dƒ t9 j> d% dâ d' dd+ dƒ t9 j> d% dê d' d d+ d!ƒ t9 j> d% dð d' d"d+ d#ƒ t9 j> d% dö d' d$d+ d%ƒ t9 j> d% dü d' d&d+ d'ƒ t9 j> d% dd' d(d+ d)ƒ t9 j> d% d	d' d*d+ d+ƒ t9 j> d% dd' d,d+ d-ƒ t9 j> d% dd' d.d+ d/ƒ t9 j> d% d!d' d0d+ d1ƒ t9 j> d% d+d' d2d+ d3ƒ t9 j> d% d3d' d4d+ d5ƒ t9 j> d% d<d' d6d+ d7ƒ t9 j> d% dFd' d8d+ d9ƒ t9 j> d% dNd' d:d+ d;ƒ t9 j> d% dVd' d<d+ d=ƒ t9 j> d% d`d' d>d+ d?ƒ t9 j> d% did' d@d+ dAƒ t9 j> d% dsd' dBd+ dCƒ t9 j> d% d|d' dDd+ dEƒ t9 j> d% d„d' dFd+ dGƒ t9 j> d% d�d' dHd+ dIƒ t9 j> d% d•d' dJd+ d™ƒ t9 j> d% dšd' dKd+ džƒ t9 j> d% dŸd' dLd+ d£ƒ t9 j> d% d¤d' dMd+ d¨ƒ t9 j> d% d©d' dNd+ d­ƒ t9 j> d% d®d' dOd+ d²ƒ t9 j> d% d³d' dPd+ d·ƒ t9 j> d% d¸d' dQd+ d¼ƒ t9 j> d% d½d' dRd+ dÁƒ t9 j> d% dÂd' dSd+ dÆƒ t9 j> d% dÇd' dTd+ dËƒ t9 j> d% dÌd' dUd+ dÐƒ t9 j> d% dÑd' dVd+ dÕƒ t9 j> d% dÖd' dWd+ dÚƒ t9 j> d% dÛd' dXd+ dßƒ t9 j> d% dàd' dYd+ däƒ t9 j> d% dåd' dZd+ déƒ t9 j> d% dêd' d[d+ dîƒ g= ƒ ƒ } | j d	 d
 ƒ j ƒ  j ƒ  } | j	 d t
 j | j ƒ  d ƒ ƒ } x<t t? f D].} | j ƒ  } | s>| j@ | jA dïƒ ƒ n  | j ƒ  | j d d ƒ x- | j ƒ  D] } | j j t ƒ j t? ƒ qeWt j | j ƒ  t j d | d g  d t j j | ƒ ƒ d t j ƒ  d t j ƒ} | j ƒ  t  j! | j" ƒ  j# ƒ  ƒ j$ ƒ  }	 t% j& |	 d |	 d ƒ }
 dðdñdòg | |
 f } |  rG| GHn  |
 | k  s_t' | ƒ ‚ | j+ | j, ƒ  | j- ƒ  | j. ƒ  ƒ } | j/ t
 j0 t1 | j ƒ  ƒ ƒ | | j. ƒ  ƒ } | j2 ƒ  } t
 j ƒ  } xT t3 d t1 | ƒ d ƒ D]: } | j% j4 | | | d !ƒ } | j5 | j6 | j7 ƒ qçW| j8 d ƒ st' ‚ qWd  S(\  Niÿÿÿÿ(   t
   covariancei
   t   elementst   Ct   Ot   Nt   use_u_anisoR&   gš™™™™™é?R*   g      ð?RQ   gš™™™™™¹?R-   R   RI   RJ   RK   i    s   light elements: %.1fR+   s   hall: P 2ybt   Zns9   one heavy element + light elements (synthetic data): %.1fi   i   RÜ   RÂ   góÒo_ç @g°çŒ(í @gîZB>èÉ2@iZ   gmçû©ñ:X@RÝ   R/   RÞ   t   ZN1Rà   g�:è’ç¿g–vj.7Ô¿g2“¨|šÏ¿Rá   g=ž–¸Ê3?g¹ŠÅo
+5?gÞ 3ßÁO?g¢&ú|”ç>giUMuï>g�íµ ÷ÆÐ¾t   N3Bg©¾ó‹ç¿gi8en¾Ô¿gapÍý/Á¿g°t><K�1?g×Ù�f/?gK°8œùÕ?gÞ 3ßÁOü¾gñhãˆµøÔ>gTäqs*Ù>t   N3AgØ,—�Îyç¿g¶eÀYJ–Ò¿g­Mc{-èÖ¿gÿz…÷.?gro~ÃDƒ4?grQ-"ŠÉ?g¢&ú|”÷>g?«Ì”Ößò>g?«Ì”Ößò¾t   C9BgÞWåBåŸñ¿gK®bñ›Â¾¿g¦Ñäb¬Á¿gMÛ¿²Ò¤4?g#-•·#œ6?gOÊ¤†6 ?g-Cëâ6
?gfLÁgÓñ¾t   N5Bg:“6U÷Èî¿gÀ&kÔC4Ì¿gÎÂžvøkÌ¿gA¸
õô1?gÀ“.«°9?giUMu?g¢&ú|”ç¾g�íµ ÷Æ°¾g�íµ ÷ÆÀ¾t   N1BgÛßÙ½áß¿gÁp®a†ÆÙ¿g>Ì^¶�¶Ê¿g×3ÂÛƒ0?góuþÓ4?g×3ÂÛƒ?g        g·_>Y1\Ý>t   C3Bg8/N|µ£Ô¿gÈÍp>?Þ¿gê\QJV½¿g&:Ë,B±5?g€Ÿqá@H?g�íµ ÷Æð>g¢'eRCë¾g«ZÒQf?t   C4BgO[#‚qðâ¿gP9&‹û�×¿gÇò®zÀ<¸¿g1zn¡+1?g 7©0¶0?gõ‚Osò"?gfLÁgÓ¿gÞ 3ßÁOü>t   N4Bg;ŒI/ï¿g£ý…1Ê¿g-˜ø£¨3Ã¿gåE&à×H2?gV˜‡Lù0?gÒûÆ×žY?g?«Ì”Ößâ¾g„¹ÝË}r?t   N2Bgª�ajKÞ¿g…–uÿXˆÚ¿g/üà|êXÁ¿g
ÚäðI'2?g®gÇ,{2?gCÅ8
?gTäqs*É>gÉÇî%ö>gTäqs*Ù¾t   C8Agæ}“¦Áå¿g^ÒƒNÄ¿gdèØA%®Ø¿gáiTàd+?g„d3?g„¹ÝË}r?t   N5AgŸŽÇTÆä¿gRcBÌ%U³¿gÔîW¾ÛÐ¿gà+ºõš4?gÜN^ô5?g$Diâ?gTäqs*é¾t   C6Bg"T©Ù­æ¿g? ©MœÜÔ¿gðà' ß‡?gàºbFx{@?gý¡™'×4?g�¾IÓ h¿g�íµ ÷Æ ?g
ØFìó¾t   C10Bg62;‹Þò¿g5ëŒï‹Kµ¿gÙ±ˆ×õÉ¿gÒûÆ×žY2?grQ-"ŠÉ;?gfLÁgÓ!?gç4´;¤?g¢'eRCë>t   N1Agv¥e¤ÞÓê¿g—7‡kµá¿geÅpu ÄÒ¿g„¹ÝË}r4?g�íµ ÷Æà¾t   C3Agž	MKí¿gEó yå¿g´ ”÷q4Ù¿g³B‘îç4?gTäqs*9?g¢'eRC¿gñhãˆµøô¾t   C1Agl#ö	í¿g€bdÉKå¿g8…•
*ªÑ¿gD§çÝXP8?g:‘`ª™µ?g?«Ì”Öß?gúœ»]/M?t   C1Bgv¦Ðy�]×¿gé�
¸çùÜ¿g(š°È¯Í¿gÞ„€|	5?gÅËÓ¹¢”0?gìNwžxÎ?gTäqs*ù¾gç4´;¤?t   C11AgÊPSé'ã¿géðÆO«?g>±N•ïÍ¿gçR\Uö]1?g‡¨ÂŸáÍ:?gÉÇî%?g¢&ú|”?giUMuÿ¾t   C2Agµâ
Ÿ­î¿guYLl>.è¿gœ£ŽŽ«‘Õ¿g›ÿW9Ò9?gÇº¸�ð6?grQ-"ŠÉ?g$Diâ¿gñhãˆµøÔ¾t   C4Ag¯þ·’é¿gH4�"Ú¿gÐÕVì/»Ù¿g³EÒnô1/?g«ZÒQf3?g�íµ ÷Æ?g�íµ ÷ÆÀ>g�íµ ÷Æð¾t   C5Ag¹p $é¿g%ìjò”Ù¿g¢µ¢ÍqnÞ¿g©MœÜïP4?gÅ­‚èÚ7?g!>°ã¿@?g¢&ú|”?t   N4Agc%æYI+ä¿g¹nJy­„¦¿g…y7RÕ¿g/n£¼2?g«ZÒQf?t   C10Ag¿šstá¿gÐ}9³]Å?gäŸÄvÑ¿gi;¦îÊ.8?gF–Ì±¼«?t   C9Agm ]lZ)â¿g6èKo.º?g 
fLÁÕ¿gã5¯ê¬6?g{…÷ø>t   C11Bgé8hpñ¿gX�f,šÎÂ¿gdWZFê=Ð¿g—åë2ü§;?g™ò!¨½?g�¾IÓ hþ>t   N2Ag”ûŠýê¿g,g~5á¿g…”ŸTût×¿gTb.ä1?g»—ûä(@4?t   C7Ag¢&ú|”‘å¿g+Ã¸DkÁ¿gÍä›mnLÝ¿gêAA)Z¹7?gÃ L£ÉÅ8?g6wô¿\‹?gfLÁgÓ?t   C8BgåÐ"Ûùþê¿g¡GŒž[èÐ¿gB—pè-º¿gúœ»]/M1?g?«Ì”Öß?g-Cëâ6ú¾g
ØFìó>t   C6Agø¨¿^aAç¿gÓ¾¹¿Ð¿g-ê“Üaà¿g’éÐéy76?gümO�Øî>?gTäqs*É¾g·_>Y1\ý>t   C5Bg�-Ë×exâ¿grßj�¸Ø¿g”ö_˜L•¿gÚ–?ß6?g�Üšt["7?gúœ»]/M?g]éEí~¿g¢&ú|”÷¾g·_>Y1\í>t   C2Bgö²í´5"Ð¿g·CÃbÔß¿g§Ê÷ŒDhÆ¿gé_’Ês0?g[³ÐÎi6?g³EÒnô1?gñhãˆµøô>t   C7BgMjh°ë¿g
†s34Ñ¿gâÌ¯æ Áœ¿g6wô¿\‹6?gÕê««µ8?g�¾IÓ hþ¾gümO�Øî?g·_>Y1\Ý¾t   F4Bgq:Éå¿gÙêrJ@Læ¿g=e5]Ot½¿gÜN^ôE?g™ò!¨½:?g•Øµ½Ý’?gvk™Çó¿g÷�…è8"?g!>°ã¿@ ¿t   F1BgëýF;nøè¿gd Ï.ßzí¿gŠ‘%s,ï²¿g?$Dù‚F?gF´Swe7?g�íµ ÷Æ ?g
ØFì#¿t   B1Bgü ¤6qré¿gÒÅ¦•Bè¿gà¹÷pÉq³¿g=€E~ý;?gáiTàd;?ga2U0*©?gÖÿ9Ì—?t   F2Bg­†Ä=–>î¿g¨á[X7Þæ¿gžACÿ»¿gõ‚Osò"C?gÍ“k
dvV?gÞ 3ßÁO?g¼yªCn†;?g°t><K�?g°t><K�!?t   F3Bg+ømˆñšè¿gÜ)¬ÿsæ¿g!;oc³#u¿g’éÐéy7F?gfLÁgÓA?g       €gÖÿ9Ì—?gÉÇî%ö¾t   F1AgŸ>øù»¿g«Îj�=&Ð¿g-$`tyÛ¿g;s	ßû;?gM½në[?gü©ñÒMb ?g¬<�°S¬:?g]éEí~?gÒûÆ×žY?t   F4Ag‰xëüÛÕ¿gxíÒ†ÃÒÐ¿gµßÚ‰’à¿gñhãˆµøD?gîêUdt@B?g§@fgÑ;?g«ZÒQf¿gÉÇî%?t   F3AgÕA^&ÅÔ¿gUÀ=ÏŸ6Â¿g&üR?o*Ù¿g¸®˜Þ>?gÔºj¿µS?g¦ÐÒ5?gK°8œùÕ,¿t   F2AgŒ¼¬‰Ô¿gà¡(Ð'òÙ¿g¤ö{b�Ù¿g¯²¶)g?gGWéî:K?g{…÷?g§@fgÑ;E¿gÚæÆô„%?t   B1Ag—=Ô¶aÑ¿g;©/K;5Ñ¿g&Œfeû�Û¿gÕyTüßE?gÒƒN=?gñhãˆµø?g¢'eRC?t   H5Bgô5Ëe£sÞ¿g¸=Ab»{Ú¿gì„—àÔr?g„fÚþ•u?t   H6Bg¬Ç}«ubæ¿gÜx` áÔ¿g²gÏej°?gìi‡¿&k”?t   H3BgÁÿV²c#Ò¿gÞs`9Bß¿gŽ²~31]°¿gKÔÔ²µž?t   H1BgYl“ŠÆÚÖ¿gù‡-=šêÜ¿gnRÑXû;Ò¿gT ŒgÐÐŸ?t   H10Agˆ+gïŒ¶ß¿gŠriüÂ+Ñ?g5Cª(^eÐ¿gÙ”+¼ËEœ?t   H2Bg‡¥�ÕÂ¿g¥õ·àá¿grkÒm‰\Æ¿g@xî=\’?t   H7Agmáy©Ø˜ä¿g¸
õô ¿gÓ-;Ä?lÞ¿gM„O¯”?t   H1Ag>+N5í¿g»&¤5æ¿gOx	N} Í¿gþš¬Q¡?t   H7BgÆ3hèŸàí¿g4Õ“ùGßÎ¿g³ëÞŠÄ…¿gQ OäIÒ•?t   H11Bg4¡IbI¹ñ¿gØ*ÁâpæÃ¿guæ¾÷Ó¿gsh‘í|?¥?t   H9Ag)[$íFá¿g'JB"mãÁ?g’u8ºJwØ¿g£¯ ÍX4}?t   H10Bg+é~NAô¿gÊ‰vRž¿gõ.Þ�Û/Ë¿g‚9züÞ¦Ÿ?t   H3AgÂùÔ±Jéí¿g&8õ�äæ¿g±†‹ÜÓÕÜ¿gÀ[ Añ£?t   H5Ag'¿E'K­ê¿gx'ŸÛ2ß¿gã§qo~Cà¿g½ãÉåŸ?t   H6Ag·²Dg™Åç¿göÔê««Ï¿g4¡lÜá¿gÒŒEÓÙ©?t   H9Bg•Ô	h"ìñ¿glAï�! ¸¿gÃ�'‚8·¿gÆ¿Ï¸p ¤?t   H11AgósCSvúâ¿gÉuSÊk%¬?gƒú–9]Ç¿gl[”Ù “¬?t   H2AgVº»Î†üï¿g”‚Uõòê¿gwþEÐÕ¿gl!ÈA	3­?t   HsA   one heavy element + light elements (real data) %s Hydrogens: %.1ft   withoutt   with(   góÒo_ç @g°çŒ(í @gîZB>èÉ2@iZ   gmçû©ñ:X@iZ   (   g�:è’ç¿g–vj.7Ô¿g2“¨|šÏ¿(   g=ž–¸Ê3?g¹ŠÅo
+5?gÞ 3ßÁO?g¢&ú|”ç>giUMuï>g�íµ ÷ÆÐ¾(   g©¾ó‹ç¿gi8en¾Ô¿gapÍý/Á¿(   g°t><K�1?g×Ù�f/?gK°8œùÕ?gÞ 3ßÁOü¾gñhãˆµøÔ>gTäqs*Ù>(   gØ,—�Îyç¿g¶eÀYJ–Ò¿g­Mc{-èÖ¿(   gÿz…÷.?gro~ÃDƒ4?grQ-"ŠÉ?g¢&ú|”÷>g?«Ì”Ößò>g?«Ì”Ößò¾(   gÞWåBåŸñ¿gK®bñ›Â¾¿g¦Ñäb¬Á¿(   gMÛ¿²Ò¤4?g#-•·#œ6?gOÊ¤†6 ?g-Cëâ6
?gK°8œùÕ?gfLÁgÓñ¾(   g:“6U÷Èî¿gÀ&kÔC4Ì¿gÎÂžvøkÌ¿(   gA¸
õô1?gÀ“.«°9?giUMu?g¢&ú|”ç¾g�íµ ÷Æ°¾g�íµ ÷ÆÀ¾(   gÛßÙ½áß¿gÁp®a†ÆÙ¿g>Ì^¶�¶Ê¿(   g×3ÂÛƒ0?góuþÓ4?g×3ÂÛƒ?g        g·_>Y1\Ý>g?«Ì”Ößò>(   g8/N|µ£Ô¿gÈÍp>?Þ¿gê\QJV½¿(   g=ž–¸Ê3?g&:Ë,B±5?g€Ÿqá@H?g�íµ ÷Æð>g¢'eRCë¾g«ZÒQf?(   gO[#‚qðâ¿gP9&‹û�×¿gÇò®zÀ<¸¿(   g1zn¡+1?g 7©0¶0?gõ‚Osò"?gfLÁgÓ¿gÞ 3ßÁOü>g�íµ ÷ÆÐ¾(   g;ŒI/ï¿g£ý…1Ê¿g-˜ø£¨3Ã¿(   gåE&à×H2?gV˜‡Lù0?gÒûÆ×žY?g?«Ì”Ößâ¾g„¹ÝË}r?g        (   gª�ajKÞ¿g…–uÿXˆÚ¿g/üà|êXÁ¿(   g
ÚäðI'2?g®gÇ,{2?gCÅ8
?gTäqs*É>gÉÇî%ö>gTäqs*Ù¾(   gæ}“¦Áå¿g^ÒƒNÄ¿gdèØA%®Ø¿(   gáiTàd+?g„d3?g„¹ÝË}r?giUMu?gTäqs*Ù>g�íµ ÷Æð>(   gŸŽÇTÆä¿gRcBÌ%U³¿gÔîW¾ÛÐ¿(   gà+ºõš4?gÜN^ô5?g$Diâ?g�íµ ÷ÆÀ¾g�íµ ÷Æð>gTäqs*é¾(   g"T©Ù­æ¿g? ©MœÜÔ¿gðà' ß‡?(   gàºbFx{@?gý¡™'×4?grQ-"ŠÉ?g�¾IÓ h¿g�íµ ÷Æ ?g
ØFìó¾(   g62;‹Þò¿g5ëŒï‹Kµ¿gÙ±ˆ×õÉ¿(   gÒûÆ×žY2?grQ-"ŠÉ;?gfLÁgÓ!?gç4´;¤?gTäqs*Ù>g¢'eRCë>(   gv¥e¤ÞÓê¿g—7‡kµá¿geÅpu ÄÒ¿(   g„¹ÝË}r4?g¹ŠÅo
+5?giUMu?g?«Ì”Ößò>g¢&ú|”ç>g�íµ ÷Æà¾(   gž	MKí¿gEó yå¿g´ ”÷q4Ù¿(   g³B‘îç4?gTäqs*9?g„¹ÝË}r?g¢'eRC¿g�íµ ÷Æ°¾gñhãˆµøô¾(   gl#ö	í¿g€bdÉKå¿g8…•
*ªÑ¿(   gD§çÝXP8?gMÛ¿²Ò¤4?g:‘`ª™µ?gTäqs*Ù>g?«Ì”Öß?gúœ»]/M?(   gv¦Ðy�]×¿gé�
¸çùÜ¿g(š°È¯Í¿(   gÞ„€|	5?gÅËÓ¹¢”0?gìNwžxÎ?gTäqs*ù¾gç4´;¤?gfLÁgÓ¿(   gÊPSé'ã¿géðÆO«?g>±N•ïÍ¿(   gçR\Uö]1?g‡¨ÂŸáÍ:?gÉÇî%?g¢&ú|”?g?«Ì”Ößò¾giUMuÿ¾(   gµâ
Ÿ­î¿guYLl>.è¿gœ£ŽŽ«‘Õ¿(   g›ÿW9Ò9?gÇº¸�ð6?grQ-"ŠÉ?g$Diâ¿gÞ 3ßÁOü>gñhãˆµøÔ¾(   g¯þ·’é¿gH4�"Ú¿gÐÕVì/»Ù¿(   g³EÒnô1/?g«ZÒQf3?g�íµ ÷Æ?g�íµ ÷ÆÀ>g¢&ú|”ç>g�íµ ÷Æð¾(   g¹p $é¿g%ìjò”Ù¿g¢µ¢ÍqnÞ¿(   g©MœÜïP4?gÅ­‚èÚ7?g!>°ã¿@?g¢&ú|”?g¢&ú|”ç¾gfLÁgÓñ¾(   gc%æYI+ä¿g¹nJy­„¦¿g…y7RÕ¿(   g„d3?g/n£¼2?g«ZÒQf?gÉÇî%ö>gÞ 3ßÁOü>g¢'eRCë>(   g¿šstá¿gÐ}9³]Å?gäŸÄvÑ¿(   gi;¦îÊ.8?gÅËÓ¹¢”0?gF–Ì±¼«?giUMuï>g�íµ ÷ÆÀ¾g�íµ ÷Æà¾(   gm ]lZ)â¿g6èKo.º?g 
fLÁÕ¿(   gã5¯ê¬6?gÜN^ô5?gOÊ¤†6 ?g�íµ ÷Æð¾g«ZÒQf?g{…÷ø>(   gé8hpñ¿gX�f,šÎÂ¿gdWZFê=Ð¿(   g1zn¡+1?g—åë2ü§;?g™ò!¨½?g?«Ì”Ößò¾g�íµ ÷ÆÀ¾g�¾IÓ hþ>(   g”ûŠýê¿g,g~5á¿g…”ŸTût×¿(   gTb.ä1?g»—ûä(@4?gK°8œùÕ?gTäqs*é¾gñhãˆµøÔ¾g?«Ì”Ößò¾(   g¢&ú|”‘å¿g+Ã¸DkÁ¿gÍä›mnLÝ¿(   gêAA)Z¹7?gÃ L£ÉÅ8?g«ZÒQf?g6wô¿\‹?gfLÁgÓ?g�íµ ÷Æð>(   gåÐ"Ûùþê¿g¡GŒž[èÐ¿gB—pè-º¿(   gúœ»]/M1?g/n£¼2?g?«Ì”Öß?g-Cëâ6ú¾g
ØFìó>gñhãˆµøÔ¾(   gø¨¿^aAç¿gÓ¾¹¿Ð¿g-ê“Üaà¿(   g’éÐéy76?gümO�Øî>?g�íµ ÷Æ?g!>°ã¿@?gTäqs*É¾g·_>Y1\ý>(   g�-Ë×exâ¿grßj�¸Ø¿g”ö_˜L•¿(   gÚ–?ß6?g�Üšt["7?gúœ»]/M?g]éEí~¿g¢&ú|”÷¾g·_>Y1\í>(   gö²í´5"Ð¿g·CÃbÔß¿g§Ê÷ŒDhÆ¿(   gé_’Ês0?g[³ÐÎi6?g³EÒnô1?gñhãˆµøô>gfLÁgÓ?g?«Ì”Ößò¾(   gMjh°ë¿g
†s34Ñ¿gâÌ¯æ Áœ¿(   g6wô¿\‹6?gÕê««µ8?g„¹ÝË}r?g�¾IÓ hþ¾gümO�Øî?g·_>Y1\Ý¾(   gq:Éå¿gÙêrJ@Læ¿g=e5]Ot½¿(   gÜN^ôE?g™ò!¨½:?g•Øµ½Ý’?gvk™Çó¿g÷�…è8"?g!>°ã¿@ ¿(   gëýF;nøè¿gd Ï.ßzí¿gŠ‘%s,ï²¿(   g?$Dù‚F?gF´Swe7?g�íµ ÷Æ ?g
ØFì#¿g¢&ú|”ç¾gÉÇî%ö>(   gü ¤6qré¿gÒÅ¦•Bè¿gà¹÷pÉq³¿(   g=€E~ý;?gáiTàd;?ga2U0*©?gÞ 3ßÁO?gÖÿ9Ì—?g{…÷ø>(   g­†Ä=–>î¿g¨á[X7Þæ¿gžACÿ»¿(   gõ‚Osò"C?gÍ“k
dvV?gÞ 3ßÁO?g¼yªCn†;?g°t><K�?g°t><K�!?(   g+ømˆñšè¿gÜ)¬ÿsæ¿g!;oc³#u¿(   g’éÐéy7F?gfLÁgÓA?g:‘`ª™µ?g       €gÖÿ9Ì—?gÉÇî%ö¾(   gŸ>øù»¿g«Îj�=&Ð¿g-$`tyÛ¿(   g;s	ßû;?gM½në[?gü©ñÒMb ?g¬<�°S¬:?g]éEí~?gÒûÆ×žY?(   g‰xëüÛÕ¿gxíÒ†ÃÒÐ¿gµßÚ‰’à¿(   gñhãˆµøD?gîêUdt@B?g§@fgÑ;?g«ZÒQf¿gÉÇî%?g¢'eRC¿(   gÕA^&ÅÔ¿gUÀ=ÏŸ6Â¿g&üR?o*Ù¿(   g¸®˜Þ>?gÔºj¿µS?g°t><K�!?g¦ÐÒ5?g$Diâ¿gK°8œùÕ,¿(   gŒ¼¬‰Ô¿gà¡(Ð'òÙ¿g¤ö{b�Ù¿(   g¯²¶)g?gGWéî:K?g{…÷?g§@fgÑ;E¿gÚæÆô„%?gÞ 3ßÁOü>(   g—=Ô¶aÑ¿g;©/K;5Ñ¿g&Œfeû�Û¿(   gÕyTüßE?gÒƒN=?g:‘`ª™µ?gñhãˆµø?g¢'eRC?gfLÁgÓ¿(   gô5Ëe£sÞ¿g¸=Ab»{Ú¿gì„—àÔr?(   g¬Ç}«ubæ¿gÜx` áÔ¿g²gÏej°?(   gÁÿV²c#Ò¿gÞs`9Bß¿gŽ²~31]°¿(   gYl“ŠÆÚÖ¿gù‡-=šêÜ¿gnRÑXû;Ò¿(   gˆ+gïŒ¶ß¿gŠriüÂ+Ñ?g5Cª(^eÐ¿(   g‡¥�ÕÂ¿g¥õ·àá¿grkÒm‰\Æ¿(   gmáy©Ø˜ä¿g¸
õô ¿gÓ-;Ä?lÞ¿(   g>+N5í¿g»&¤5æ¿gOx	N} Í¿(   gÆ3hèŸàí¿g4Õ“ùGßÎ¿g³ëÞŠÄ…¿(   g4¡IbI¹ñ¿gØ*ÁâpæÃ¿guæ¾÷Ó¿(   g)[$íFá¿g'JB"mãÁ?g’u8ºJwØ¿(   g+é~NAô¿gÊ‰vRž¿gõ.Þ�Û/Ë¿(   gÂùÔ±Jéí¿g&8õ�äæ¿g±†‹ÜÓÕÜ¿(   g'¿E'K­ê¿gx'ŸÛ2ß¿gã§qo~Cà¿(   g·²Dg™Åç¿göÔê««Ï¿g4¡lÜá¿(   g•Ô	h"ìñ¿glAï�! ¸¿gÃ�'‚8·¿(   gósCSvúâ¿gÉuSÊk%¬?gƒú–9]Ç¿(   gVº»Î†üï¿g”‚Uõòê¿gwþEÐÕ¿(B   Rý   RK  t   scitbx.mathR   R9   R5   t   structure_factorsR<   R=   R>   R   R?   R@   Rv   RÈ   Rz   R/   R0   R4   R¼   R   RX   RW   R   RV   RT   RU   RI   RY   R   Rw   R\   R   R`   R]   Ra   Rb   R   t   log10R_   R   R+   t   mainstream_shelx_weightingt   orthogonalize_covariance_matrixR?  RÂ   t   parameter_mapt#   extract_covariance_matrix_for_sitest   size_t_rangeR^   t   matrix_packed_u_diagonalR   t   basic_statisticst   appendt!   bias_corrected_standard_deviationRy   t   all_ltR   R-   R   Rõ   Rö   RÐ   R2   t   select_inplacet   element_selection(   t   verboseRK  t   scitbxt!   worst_condition_number_acceptableR  RA   RD   RE   Rƒ   t   lambdast   condt   msgt   var_cartt   var_site_cartt	   site_esdst
   indicatorsRÅ   t   statst   hydrogen_flag(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyt*   exercise_floating_origin_dynamic_weightingµ  s$   	$
		

 		$
		

 						 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 																		$
		
 		c          C   s  t  j j ƒ  d d  l }  d d l m } | ƒ  j d  d d d d t ƒj d  d d d	 d d
 ƒj d  d d d d t ƒj	 d |  j
 d
 ƒ } | j j r¶ t j d
 ƒ t j d ƒ n  | j j } | d
 k rÚ | t _ n  t ƒ  t | j j ƒ t | ƒ j ƒ  t ƒ  j ƒ  d  S(   Niÿÿÿÿ(   t   option_parsers   --fix_random_seedst   actiont
   store_truet   defaults   --runst   typet   inti   s	   --verboset   argsi   (   R"  RU   t   show_times_at_exitR   t   libtbx.option_parserR®  t   optionR~   R2   t   processt   argvt   optionst   fix_random_seedsR   t   set_random_seedR)  t   seedt   runsR   R   R  R­  R¡  R  R    RÛ   (   R   R®  t   command_lineR$  (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyR    \  s0    						 t   __main__(>   t
   __future__R    R"  R   RZ   t   scitbx.linalgR   R   R¢  R   t   scitbx.lstbxR   Rý   R   R   R   R	   R
   R   R«   t   cctbx.array_familyR   t
   cctbx.xrayR   t   cctbx.developmentR   t   smtbx.refinementR   R   t   smtbx.refinement.restraintsR   t   smtbx.utilsRT   t   libtbx.test_utilsR   t   libtbx.utilst   stdlibR   R   R)  t   objectR   R#   R¹   RÌ   RÑ   RÒ   RÓ   RÛ   R  R  R  R  R  R  R  R  R  R2   R­  R    R!   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/smtbx/refinement/tests/tst_least_squares.pyt   <module>   sR   (Ï7ª	
‹ÿ ¨	