ó
E™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 „  Z d „  Z e d k rÎ d 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(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/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(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_f_model.pyt   tst_f_model_derivative_holder   s    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
 ƒ  d } | j	 ƒ  d } | j ƒ  d } | j ƒ  d } | j ƒ  d } | j ƒ  d } t | | | | ƒ s6t ‚ | j ƒ  }	 t j ƒ  }
 t j ƒ  } t j ƒ  } x\ |	 D]T } | j } | j } |
 j t j | | | | ƒ ƒ | j | ƒ | j | ƒ qm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 d | ƒ } t | j ƒ  | j ƒ  d j | j ƒ  ƒ s t ‚ d } | d } | d } | d } t d | | | | j ƒ  d j | j ƒ  d ƒ s`t ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ sœt ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ sØt ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ st ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ sPt ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ sŒt ‚ | j d d d | ƒ } t | j ƒ  | j ƒ  d j | j ƒ  ƒ sÖt ‚ d } | d } | d } | d } t d | | | | j ƒ  d j | j ƒ  d ƒ s6t ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ srt ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ s®t ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ sêt ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ s&t ‚ t d | | | | j ƒ  d j | j ƒ  d ƒ sb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 d | ƒ j ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d  ƒsÍt ‚ | j  d d( ƒ | j! d | d ƒ | j d d d | ƒ j" ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒsPt ‚ | j! d d ƒ | j! d d | ƒ | j d d d | ƒ j# ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒsÓt ‚ | j! d d ƒ | j! d | d ƒ | j d d d | ƒ j" ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒsV	t ‚ | j! d d ƒ | j! d d | ƒ | j d d d | ƒ j# ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒsÙ	t ‚ | j! d d ƒ | j$ d | d ƒ | j d d d | ƒ j% ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒs\
t ‚ | j! d d ƒ | j$ d d | ƒ | j d d d | ƒ j& ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒsß
t ‚ | j! d d ƒ | j$ d | d ƒ | j d d d | ƒ j% ƒ  }  | j ƒ  d | j ƒ  d | j } t |  | d! d" ƒsbt ‚ | j! d d ƒ | j$ d d | ƒ | j d d d | ƒ j& ƒ  }  | j ƒ  d | j ƒ  d | 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_solgš™™™™™¹?t   f_partt   k_partt   u_parti{   g       @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   refresht   f_bulkR   R    t   f_modelR   R   R   t   doublet   realt   imagt   appendt   matht   sqrtt   boolt   Truet   d_target_d_allR   R   R   t   renew_overall_scale_parameterst#   renew_bulk_solvent_scale_parametersR   R   t(   renew_partial_structure_scale_parametersR	   R
   (   t   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(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_f_model.pyt   tst_f_model)   sB   		
		"


	
&


######&


######		
&&&&&&&&&c           C   s   t  ƒ  t ƒ  d  S(   N(   RZ   R   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/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   randomR4   t   cctbx.developmentR   R$   t   seedt   set_random_seedR   R   RZ   R[   t   __name__(    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_f_model.pyt   <module>   s    			Í	