ó
B™xTc           @   sŽ   d  d l  m Z d  d l m Z d  d l m Z m Z m Z d  d l m	 Z	 m
 Z
 d  d l m Z d „  Z d „  Z e d k rŠ e ƒ  n  d	 S(
   iÿÿÿÿ(   t   division(   t   flex(   t
   covariancet   crystalt   xray(   t   approx_equalt   Exception_expected(   t   matrixc          C   s  t  j d t j d d ƒ d t j t  j d d d d  f ƒ t  j d d! ƒ g ƒ ƒ }  |  j ƒ  } |  j ƒ  } x | D] } | j	 t
 ƒ qs W|  j | ƒ t j d" ƒ } |  j ƒ  } t | t j t j d d	 g ƒ | | ƒ ƒ så t ‚ t j | | | ƒ } t j | j ƒ  ƒ } xš t | j ƒ D]‰ } t j t j | g ƒ | | ƒ }	 t j t j | g ƒ | | ƒ }
 t | t j d |	 ƒ | j ƒ  t j d |
 ƒ j ƒ  ƒ st ‚ qWx | D] } | j t ƒ q³W| d j t
 ƒ | d j t
 ƒ | d	 j  t
 ƒ | d	 j! t
 ƒ |  j | ƒ |  j ƒ  } t j d# d ƒ } | j" t j# d d ƒ ƒ | j$ t j g  t d ƒ D] } | ^ qkƒ ƒ | j% ƒ  } t g  t d ƒ D] } | ^ q�t j& d | | ƒ j' ƒ  ƒ sÐt ‚ t j( d	 | | ƒ d k sñt ‚ y t j( d | | ƒ Wn t) k
 rn Xt* ‚ y t j& d	 | | ƒ Wn t) k
 rLn Xt* ‚ t t j t j d	 g ƒ | | ƒ d$ ƒ d  S(%   Nt   crystal_symmetryg
×£p=
@gáz®Gá@iZ   ix   t   P6222t
   scattererst   Sii   g       @g      @t   Ogžï§ÆK7É?gžï§ÆK7É¿g_Ò­£ªê?g:Œ0âŽyE>g•Ö&è.>g•Ö&è.!>gßA:ÜÅ)>g•Ö&è.1>g:Œ0âŽy5>g:Œ0âŽyU>g+i¤)+`>g:Œ0âŽye>i    t   sym_mat3i   i   (   g
×£p=
@g
×£p=
@gáz®Gá@iZ   iZ   ix   g      à?g      à?gUUUUUUÕ?(   gžï§ÆK7É?gžï§ÆK7É¿g_Ò­£ªê?(   g:Œ0âŽyE>g•Ö&è.>g•Ö&è.!>gßA:ÜÅ)>g•Ö&è.1>g:Œ0âŽy5>g:Œ0âŽyU>g•Ö&è.>g•Ö&è.!>gßA:ÜÅ)>g•Ö&è.1>g+i¤)+`>g•Ö&è.>g•Ö&è.!>gßA:ÜÅ)>g:Œ0âŽyU>g•Ö&è.>g•Ö&è.!>g+i¤)+`>g•Ö&è.>g:Œ0âŽye>i1   (   i    i    i    i    i    i    (+   R   t	   structureR   t   symmetryR   t   xray_scatterert	   scatterert	   unit_cellt   scatterer_flagst   set_grad_sitet   Truet   set_scatterer_flagst   doublet   parameter_mapR   R   t#   extract_covariance_matrix_for_sitest   size_tt   AssertionErrort   orthogonalize_covariance_matrixR   t   sqrt   orthogonalization_matrixt   ranget   n_scattererst   symt	   transposet   as_mat3t	   set_gradst   Falset   set_grad_u_anisot   set_use_u_anisot   set_grad_u_isot   set_use_u_isot   reshapet   gridt   matrix_diagonal_set_in_placet   matrix_symmetric_as_packed_ut%   extract_covariance_matrix_for_u_anisot   matrix_packed_u_diagonalt   variance_for_u_isot   RuntimeErrorR   (   t   xst   uct   flagst   ft   covt	   param_mapt   cov_cartR   t   it   cov_it
   cov_i_cart(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/covariance/tests/tst_covariance.pyt   exercise_covariance   sp    	    	-!!% /!    	c           C   s   t  ƒ  d GHd  S(   Nt   OK(   R<   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/covariance/tests/tst_covariance.pyt   run<   s    t   __main__N(   t
   __future__R    t   cctbx.array_familyR   t   cctbxR   R   R   t   libtbx.test_utilsR   R   t   scitbxR   R<   R>   t   __name__(    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/covariance/tests/tst_covariance.pyt   <module>   s   	5	