ó
6™xTc           @   sÅ   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l Z d  d l Z d  d l	 m
 Z
 d  d l Z e j d ƒ d d „ Z d d	 „ Z d
 „  Z d „  Z e d k rÁ e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   least_squarest   exp_i_alpha_sum(   t   approx_equalN(   t   StringIOi    g:Œ0âŽyE>c   
      C   sÁ   g  } x´ t  t | ƒ ƒ D]  } t | ƒ } g  } xd | | g D]U } | | | | | <t d | ƒ } t d |  d | j ƒ  ƒ }	 | j |	 j ƒ  ƒ q? W| j | d | d d | ƒ q W| S(   Nt   alphast   obst   calci    i   i   (   t   xranget   lent   listR   R   t   ft   append(
   R   R   t   epst   resultt   i_alphat
   alphas_epst   tst
   signed_epst   exp_sumt   target(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/tst_exp_i_alpha_derivatives.pyt   d_target_d_alphas_finite   s    %c         C   sï   g  } xâ t  t | ƒ ƒ D]Î } t | ƒ } g  } xp | | g D]a } | | | | | <t d | ƒ } t d |  d | j ƒ  ƒ }	 | j d |	 ƒ }
 | j |
 ƒ q? W| j g  t | d | d ƒ D] \ } } | | d | ^ qÂ ƒ q W| S(   NR   R   R   R   i    i   i   (	   R   R	   R
   R   R   R   t   d_target_d_alphasR   t   zip(   R   R   R   R   R   R   t   gsR   R   R   t   dalphast   gpt   gm(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/tst_exp_i_alpha_derivatives.pyt   d2_target_d_alphas_finite   s    Gc   	      C   sê   t  d |  d | ƒ } | d I| IJt d | ƒ } t d |  d | j ƒ  ƒ } | j d | ƒ } | d I| IJt | | ƒ s† t ‚ t d |  d | ƒ } | d I| IJ| j d | ƒ } | d I| IJt | | ƒ sâ t ‚ | Jd  S(	   NR   R   s
   grads_fin:R   R   s
   grads_ana:s
   curvs_fin:s
   curvs_ana:(	   R   R   R   R   R   R   t   AssertionErrorR   t   d2_target_d_alphas(	   R   R   t   outt	   grads_finR   R   t	   grads_anat	   curvs_fint	   curvs_ana(    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/tst_exp_i_alpha_derivatives.pyt   compare_analytical_and_finite'   s    c      	   C   s”  d |  k } | s t  ƒ  } n	 t j } x¿ t d d ƒ D]® } x¥ t d ƒ D]— } g  t | ƒ D] } d t j t j ƒ  ^ q] } t d | ƒ } t | j	 ƒ  ƒ } t
 d | d | d | ƒ t
 d | t j ƒ  d d | d | ƒ qJ Wq7 WxŸd d	 g D]‘} xd
 d g D]}	 t d | d |	 ƒ }
 |
 j	 ƒ  | d k s@t ‚ |
 j ƒ  d k sXt ‚ |
 j ƒ  d k spt ‚ | d k rÇ|
 j ƒ  d k s”t ‚ |
 j ƒ  d k s¬t ‚ |
 j ƒ  d k st ‚ q	|
 j ƒ  d k sßt ‚ |
 j ƒ  d k s÷t ‚ |
 j ƒ  d k s	t ‚ q	Wd }	 xk |	 d k r†t d | d |	 ƒ }
 |
 j	 ƒ  |
 j ƒ  |
 j ƒ  |
 j ƒ  |
 j ƒ  |
 j ƒ  |	 d }	 qWqö Wd GHd  S(   Ns	   --verbosei   i   R   R   R   g      à?i    gš™™™™™¹?y                y        ¬÷N’~hR   gÃüo%ÔÂ&ágÃüo%ÔÂ&ai   y              ð?t   OKy      ð?      ð?(   R   t   syst   stdoutR   t   matht   pit   randomR   t   absR   R$   R   R   t   dat   dbt   daat   dbbt   dab(   t   argst   verboseR   t   n_alphast   i_trialt   iR   R   R   R   R   (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/tst_exp_i_alpha_derivatives.pyt   exercise6   sR    	0





t   __main__i   (   t
   __future__R    t&   cctbx.examples.exp_i_alpha_derivativesR   R   t   libtbx.test_utilsR   R*   R(   t	   cStringIOR   R&   t   seedR   R   R$   R6   t   __name__t   argv(    (    (    sX   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/examples/tst_exp_i_alpha_derivatives.pyt   <module>   s   		.