ó
.™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
 Z
 d  d l m Z e	 j d ƒ e j d ƒ d	 „  Z d
 „  Z d d „ Z d „  Z e d k rÔ e ƒ  d GHn  d S(   iÿÿÿÿ(   t   division(   t   flex(   t   xray(   t   sgtbx(   t   approx_equalN(   t   random_structurei    c         C   sÊ   t  |  j ƒ  | j ƒ  ƒ s! t ‚ t  |  j ƒ  | j ƒ  ƒ sB t ‚ t  |  j ƒ  | j ƒ  ƒ sc t ‚ t  |  j ƒ  | j ƒ  ƒ s„ t ‚ t  |  j ƒ  | j ƒ  ƒ s¥ t ‚ t  |  j ƒ  | j ƒ  ƒ sÆ t ‚ d  S(   N(   R   t   ksolt   AssertionErrort   usolt   kpartt   upartt   koverallt   ustar(   t   tmp1t   tmp2(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_f_model.pyt   compare_all   s    !!!!!c          C   s  t  j ƒ  }  |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d ƒ |  j d d d d d d g ƒ |  j |  ƒ |  j ƒ  d k s‘ t	 ‚ |  j ƒ  d k s© t	 ‚ |  j ƒ  d k sÁ t	 ‚ |  j ƒ  d k sÙ t	 ‚ |  j ƒ  d k sñ t	 ‚ |  j ƒ  d k s	t	 ‚ d  S(   Ni   i   (   i   i   i   i   i   i   (
   R   t#   f_model_core_data_derivative_holderR   R   R	   R
   R   R   t
   accumulateR   (   t   dinfo(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_f_model.pyt   tst_f_model_derivative_holder   s    i{   c         C   sï  t  j t j d ƒ d d g d d d ƒ} | j t d ƒ j ƒ  } t j d | j	 ƒ  d | j
 ƒ  d	 | j
 ƒ  d
 | j ƒ  d d d d! d d d d d | j
 ƒ  d d d d ƒ } | j
 ƒ  |  } | j	 ƒ  |  } | j ƒ  |  } | j ƒ  |  } | j ƒ  |  } | j ƒ  |  }	 t |	 | | | ƒ s,t ‚ | j ƒ  }
 t j ƒ  } t j ƒ  } t j ƒ  } x\ |
 D]T } | j } | j } | j t j | | | | ƒ ƒ | j | ƒ | j | ƒ qcWd | } d | } d | } t j t t t t t t g ƒ } | j | | ƒ } | j | | | ƒ } t | | ƒ t j d | j	 ƒ  d | j
 ƒ  d	 | j
 ƒ  d d
 | j ƒ  d d d d" d d d d d | j
 ƒ  d d d d d ƒ } | j ƒ  | j d d |  | ƒ } t | j ƒ  | j ƒ  |  j | j ƒ  ƒ söt ‚ d } | d } | d } | d } t d | | | | j ƒ  |  j | j ƒ  d ƒ sVt ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ s’t ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ sÎt ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ s
t ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ sFt ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ s‚t ‚ | j d d |  | ƒ } t | j ƒ  | j ƒ  |  j | j ƒ  ƒ sÌt ‚ d } | d } | d } | d } t d | | | | j ƒ  |  j | j ƒ  d ƒ s,t ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ sht ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ s¤t ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ sàt ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ st ‚ t d | | | | j ƒ  |  j | j ƒ  d ƒ sXt ‚ t j d | j	 ƒ  d | j
 ƒ  d	 | j
 ƒ  d d
 | j ƒ  d d d d# d d d d d | j
 ƒ  d d d d d ƒ } d } t j d | j	 ƒ  d | j
 ƒ  d	 | j
 ƒ  d d
 | j ƒ  d d d d$ d d d d d | j
 ƒ  d d d d d ƒ } | j  d | d% ƒ | j ƒ  | j d d |  | ƒ j ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsÃt ‚ | j  d d& ƒ | j! d | d ƒ | j d d |  | ƒ j" ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsFt ‚ | j! d d ƒ | j! d d | ƒ | j d d |  | ƒ j# ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsÉt ‚ | j! d d ƒ | j! d | d ƒ | j d d |  | ƒ j" ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsL	t ‚ | j! d d ƒ | j! d d | ƒ | j d d |  | ƒ j# ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsÏ	t ‚ | j! d d ƒ | j$ d | d ƒ | j d d |  | ƒ j% ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsR
t ‚ | j! d d ƒ | j$ d d | ƒ | j d d |  | ƒ j& ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsÕ
t ‚ | j! d d ƒ | j$ d | d ƒ | j d d |  | ƒ j% ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsXt ‚ | j! d d ƒ | j$ d d | ƒ | j d d |  | ƒ j& ƒ  } | j ƒ  |  | j ƒ  |  | j } t | | d d  ƒsÛt ‚ | j! d d ƒ d  S('   Nt   P1t   elementst   Ci6  t   n_scatterersg      @t   hklt   f_atomst   f_maskt	   unit_cellt	   k_overallg      ð?t   u_stari    t   k_solt   u_solt   f_partt   k_partt   u_partg       @g        i   gXê´É<½3@i   iþÿÿÿiüÿÿÿi   i   i   g-Cëâ6?t   epsg{®Gáz„?(   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    ('   t   rst   xray_structureR   t   space_group_infot   structure_factorst   Falset   f_calcR   t   f_model_core_datat   indicest   dataR   t   f_bulkR   R    t   f_modelR   R   R   t   doublet   realt   imagt   appendt   matht   sqrtt   boolt   Truet   d_target_d_allR   t   refreshR   R   t   renew_overall_scale_parameterst#   renew_bulk_solvent_scale_parametersR   R   t(   renew_partial_structure_scale_parametersR	   R
   (   t   this_hklt   tmpt   sfst   f_modt   data1t   hkl1t   fbulkt   fatomst   fpartt   fmodt   f_model_data_complext   fmt   at   bt   cmplxt   tmp_at   tmp_bt   dtdft   dtdat   dtdbt   gradient_flagst   grads_ft   grads_abt   grad_123t   tpst   ht   kt   lt   oldfmt   newfmt   tmp_d(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_f_model.pyt   tst_f_model)   s@   				"


	
&


######&


######		
&&&&&&&&&c           C   s=   t  d ƒ t  d ƒ t  d ƒ t  d ƒ t  d ƒ t ƒ  d  S(   Ni{   i,   i2   i–   i™   (   R[   R   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_f_model.pyt   runð   s    




t   __main__t   OK(   t
   __future__R    t   cctbx.array_familyR   t   cctbxR   R   t   libtbx.test_utilsR   t   randomR3   t   cctbx.developmentR   R$   t   seedt   set_random_seedR   R   R[   R\   t   __name__(    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/boost_python/tst_f_model.pyt   <module>   s    		Ç		