ó
_™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	 m
 Z
 d  d l m Z d  d l Z d  d l m Z d  d l Z d  d l Z d	 d
 „ Z d d d „ Z d d d „ Z d	 d „ Z d d d „ Z d „  Z d „  Z d d „ Z d d „ Z d „  Z d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dZ d[ d\ d] d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do dp d dq dr ds dt du dv dw dx dy dz d{ d| d} d~ d d€ d� d‚ dƒ d„ d… d† d‡ dˆ d1 d‰ dŠ d‹ dŒ d� dŽ d d� g| Z d� dÕ d‘ „  ƒ  YZ e d d’ d“ d” d• d– d— d˜ d™ dš d› dœ d� g ƒ Z e d dž dŸ d  d¡ d¢ d£ d¤ d¥ d¦ d§ g
 ƒ Z e dˆ d¨ d© dª d« d¬ d­ d® d¯ g ƒ Z  e dx d° d± d² d³ d´ dµ g ƒ Z! e dc d¶ d· d¸ d¹ g ƒ Z" e d5 dº d» g ƒ Z# e d„ d¼ d½ d¾ d¿ dÀ dÁ dÂ dÃ dÄ g	 ƒ Z$ e d dÅ dÆ dÇ dÈ dÉ dÊ dË dÌ dÍ dÎ dÏ g ƒ Z% dÐ e j& f dÑ „  ƒ  YZ' dÒ „  Z( dÓ „  Z) e* dÔ k re) ƒ  n  d S(Ö   iÿÿÿÿ(   t   division(   t   immoptibox_ports(   t   gaussian(   t   flex(   t   approx_equalt   eps_eq(   t   format_cpu_timesN(   t   StringIOgñhãˆµøä>c         C   sX   | d k r d S| | k s" t  ‚ |  j | | ƒ } |  j | | ƒ } | | d | S(   Ni    i   (   t   AssertionErrort   at_x(   R   t   xt   epst   tmt   tp(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   finite_gradient_dx_at_x   s     g      ð?i2   c         C   s`   xY t  | d ƒ D]G } | | | } t |  | ƒ } |  j | ƒ } t | | ƒ s t ‚ q Wd  S(   Ni   (   t   xrangeR   t   gradient_dx_at_xR   R   (   R   t   x_maxt   n_pointst   iR
   t   grad_finitet   grad_analytical(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   exercise_gradient_dx   s
    iè  c   
      C   s¼   d } | | } x¥ t  | d ƒ D]“ } | | | } |  j | ƒ } | r_ | | | d 7} n  | } |  j | d ƒ }	 t |	 |  j | ƒ ƒ s• t ‚ t | | |	 d d ƒs! t ‚ q! Wd  S(   Ni    i   g      à?gü©ñÒMbP?R   gñhãˆµøä>(   R   R	   t   integral_dx_at_xR   R   (
   R   R   R   t   numerical_integralt   x_stepR   R
   t	   new_valuet
   prev_valuet   analytical_integral(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   exercise_integral_dx   s    
c         C   sÈ   t  j |  j | |  j ƒ j | ƒ } t  j |  j | |  j ƒ j | ƒ } | | d | } t  j |  j |  j | ƒ j | ƒ } t  j |  j |  j | ƒ j | ƒ } | | d | } t  j | | ƒ S(   Ni   (   R   t   termt   at   bR	   (   R   R
   R   R   R   t   gr_at   gr_b(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   term_finite_gradient_d_ab_at_x'   s    %%%%c         C   s…   x~ t  | d ƒ D]l } | | | } t |  | ƒ } |  j | | ƒ } t | j | j ƒ sb t ‚ t | j | j ƒ s t ‚ q Wd  S(   Ni   (   R   R#   t   gradients_d_ab_at_x_sqR   R   R   R    (   R   R   R   R   R
   R   R   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   exercise_term_gradients_d_ab0   s    c          C   s™  t  j d d ƒ }  t |  j d ƒ s* t ‚ t |  j d ƒ sB t ‚ t |  j d ƒ d t j d ƒ ƒ sm t ‚ t |  j	 d ƒ d t j d ƒ ƒ s˜ t ‚ d } xb t
 d ƒ D]T } | d } t |  j	 | | ƒ |  j	 | | ƒ d | |  j | ƒ ƒ s« t ‚ q« Wx� d d	 g D]� } xx t  j | d d ƒ t  j | d d
 ƒ t  j | d d ƒ t  j | d d	 ƒ g D]$ }  t |  ƒ t |  ƒ t |  ƒ qiWqWd  S(   Ni   i   i   iýÿÿÿgñhãˆµøä>i
   g      $@i   iÿÿÿÿi    g-Cëâ6?i   iôÿÿÿiôÿÿÿ(   R   R   R   R   R   R    t   at_x_sqt   matht   expR	   R   R   R   R   R   R%   (   t   tR   t   ixR
   t   f(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   exercise_term8   s"    ++
H

c          C   sŠ	  t  j d ƒ }  |  j ƒ  d k s' t ‚ |  j ƒ  d" k s? t ‚ |  j ƒ  d# k sW t ‚ t |  j ƒ  d ƒ sr t ‚ |  j ƒ  s„ t ‚ |  j	 ƒ  d k sœ t ‚ t |  j
 ƒ  d g ƒ sº t ‚ t  j d t ƒ }  |  j ƒ  sÞ t ‚ t  j d t ƒ }  |  j ƒ  st ‚ t  j d ƒ }  |  j ƒ  d k s*t ‚ |  j ƒ  d$ k sBt ‚ |  j ƒ  d% k sZt ‚ t |  j ƒ  d ƒ sut ‚ |  j ƒ  s‡t ‚ |  j	 ƒ  d k sŸt ‚ t |  j
 ƒ  d g ƒ s½t ‚ t  j d& d' ƒ }  |  j ƒ  d k sçt ‚ |  j ƒ  d( k sÿt ‚ |  j ƒ  d) k st ‚ |  j ƒ  d k s/t ‚ |  j ƒ  sBt ‚ |  j	 ƒ  d k sZt ‚ |  j
 ƒ  j ƒ  d k sxt ‚ t  j d* d+ d ƒ }  |  j ƒ  d k s¥t ‚ |  j ƒ  d, k s½t ‚ |  j ƒ  d- k sÕt ‚ t |  j ƒ  d ƒ sðt ‚ t  j t j d. ƒ ƒ }  t |  j ƒ  d/ ƒ s#t ‚ t |  j ƒ  d0 ƒ s>t ‚ t |  j ƒ  d ƒ sYt ‚ |  j ƒ  slt ‚ t |  j
 ƒ  d d d d g ƒ s“t ‚ t  j t j d1 ƒ d t ƒ }  t |  j ƒ  d ƒ sÌt ‚ |  j ƒ  sÞt ‚ t  j t j d2 ƒ d ƒ }  t |  j ƒ  d ƒ st ‚ |  j ƒ  s&t ‚ t |  j
 ƒ  d d d d d g ƒ sPt ‚ t  j t j d3 ƒ ƒ }  t |  j ƒ  d ƒ sƒt ‚ |  j ƒ  s•t ‚ t |  j
 ƒ  d d d d d g ƒ s¿t ‚ t  j d4 d5 d ƒ }  |  j ƒ  d k sìt ‚ t |  j ƒ  d6 ƒ st ‚ t |  j ƒ  d7 ƒ s"t ‚ t |  j ƒ  d ƒ s=t ‚ t |  j d8 ƒ d ƒ s[t ‚ t |  j t j d9 d: g ƒ ƒ d d g ƒ sŽt ‚ t |  j t j d; ƒ ƒ d ƒ sµt ‚ t |  j t j t j d< d= g ƒ ƒ ƒ d d g ƒ sñt ‚ t j |  ƒ } t j | ƒ } | j ƒ  |  j ƒ  k s-t ‚ t | j ƒ  |  j ƒ  ƒ sNt ‚ t | j ƒ  |  j ƒ  ƒ sot ‚ t | j ƒ  |  j ƒ  ƒ s�t ‚ | j ƒ  s¢t ‚ t j t  j d> d? ƒ ƒ } t j | ƒ } | j ƒ  sßt ‚ t t  j d g d g d ƒ ƒ t t  j d d d d d g d d d d d g d ƒ ƒ t t  j d g d g ƒ ƒ t t  j d g d g d ƒ ƒ t t  j d g d g d ƒ ƒ t t  j d g d g ƒ ƒ t t  j d d d d d g d d d d d g d ƒ ƒ t  j d@ dA d ƒ }  t ƒ  } |  j | ƒ t | j ƒ  j ƒ  ƒ d  k s1t ‚ t  j dB dC ƒ }  t ƒ  } |  j | ƒ t | j ƒ  j ƒ  ƒ d! k s}t ‚ t |  j ƒ  t  j ƒ s›t ‚ t |  j ƒ  j ƒ  dD ƒ s¼t ‚ t |  j ƒ  j ƒ  dE ƒ sÝt ‚ |  j ƒ  j ƒ  söt ‚ t  j dF dG d ƒ }  t |  j ƒ  j ƒ  dH ƒ s,	t ‚ t |  j ƒ  j ƒ  dI ƒ sM	t ‚ t |  j ƒ  j ƒ  d ƒ sn	t ‚ |  j ƒ  j ƒ  s†	t ‚ d  S(J   Ni    i   iþÿÿÿi   i   i   i   iüÿÿÿgš™™™™™¹¿gš™™™™™É?g333333Ó¿gš™™™™™Ù?g      à¿i   g      @g8¶Ch©Ù*@gfƒž¾'@gþÔxé&1@gšwœ¢#Ù$@gåcw�’B@gõøÃÏ?ñ?g7þDeÃÚ÷?g×/ØÛöÀg{»%9`×æ?gE.8ƒ¿�-@gz6«>WÛè?g©õ~£E@gÐî�b€D3¿g~©Ÿ7©Î?gNŸt"1@g{®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   (   gš™™™™™¹¿gš™™™™™É?g333333Ó¿gš™™™™™Ù?g      à¿(   i   iþÿÿÿi   iüÿÿÿi   (   gš™™™™™¹¿gš™™™™™É?g333333Ó¿gš™™™™™Ù?g      à¿g      è?g      à?g      è?g      è?g      à?g      è?(    (    (   i   iþÿÿÿi   iüÿÿÿi   (   gš™™™™™¹¿gš™™™™™É?g333333Ó¿gš™™™™™Ù?g      à¿(   i   iþÿÿÿi   iüÿÿÿi   (   g333333Ó¿gš™™™™™É?gš™™™™™¹¿gš™™™™™Ù?g      à¿(   i   iüÿÿÿi   iþÿÿÿi   (   g      à¿gš™™™™™Ù?g333333Ó¿gš™™™™™É?gš™™™™™¹¿(   i   i   (   i   i   (   i   i   (   i   i   (    R   t   sumt   n_termsR   t
   array_of_at
   array_of_bR   t   ct   use_ct   n_parameterst
   parameterst   Truet   Falset   sizeR   t   doubleR&   R	   R'   t   sqrtt   picklet   dumpst   loadsR   R   R   t   showt   lent   getvaluet   splitt
   isinstancet   sort(   t   gt   st   l(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   exercise_sumK   sÌ    '**''!!!		
	
	$	$!!!!!g{®Gáz„?c         C   sã  t  j ƒ  } |  j ƒ  } |  j ƒ  } x8t |  j ƒ  ƒ D]$} g  } xe | | f D]V } t |  j ƒ  ƒ }	 |	 | c | 7<| j t	 j
 |	 |  j ƒ  | | ƒ j | ƒ ƒ qQ W| j | d | d d | ƒ g  } xe | | f D]V } t |  j ƒ  ƒ }
 |
 | c | 7<| j t	 j
 |  j ƒ  |
 | | ƒ j | ƒ ƒ qà W| j | d | d d | ƒ q7 W| rßg  } xM | | f D]> } | j t	 j
 |  j ƒ  |  j ƒ  | | | ƒ j | ƒ ƒ qyW| j | d | d d | ƒ n  | S(   Ni    i   i   (   R   R8   R1   R2   R   R.   t   listR/   t   appendR   R-   R0   R	   (   t   gfitR
   R   t   grR1   R2   R   R)   t   sepsR   R    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   fit_finite_diff_gradients³   s4    ,!,%0$c         C   s»  |  j  ƒ  j ƒ  d k s t ‚ d |  j ƒ  d d } t j ƒ  } |  j ƒ  } |  j ƒ  } x¤t |  j	 ƒ  ƒ D]�} g  }	 x› | | f D]Œ }
 t
 |  j ƒ  ƒ } | | c |
 7<t j |  j  ƒ  |  j ƒ  |  j ƒ  t j | |  j ƒ  | | ƒ ƒ } |	 j | j | | | j ƒ  ƒ ƒ q‡ W| j |	 d |	 d d | ƒ g  }	 x› | | f D]Œ }
 t
 |  j ƒ  ƒ } | | c |
 7<t j |  j  ƒ  |  j ƒ  |  j ƒ  t j |  j ƒ  | | | ƒ ƒ } |	 j | j | | | j ƒ  ƒ ƒ qLW| j |	 d |	 d d | ƒ qm W| r·g  }	 xƒ | | f D]t }
 t j |  j  ƒ  |  j ƒ  |  j ƒ  t j |  j ƒ  |  j ƒ  | |
 | ƒ ƒ } |	 j | j | | | j ƒ  ƒ ƒ qW| j |	 d |	 d d | ƒ n  | S(   Ni   i    i   (   t   table_xR7   R   t   table_sigmasR   R8   R1   R2   R   R.   RG   R/   R   t   fitt   table_yR-   R0   RH   t   target_functiont   differences(   RI   t   powert
   use_sigmasR   t   weightRJ   R1   R2   R   R)   RK   R   t   gfR    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt    fit_finite_diff_target_gradientsÏ   sN    			!&!			!&%			+&$c       
   C   s¨  t  j dn ƒ }  t  j do ƒ } t  j dp ƒ } t j |  | | t j dq dr ƒ ƒ } t | j ƒ  ds ƒ sl t ‚ t | j ƒ  dt ƒ s‡ t ‚ t | j	 ƒ  d ƒ s¢ t ‚ | j
 ƒ  sµ t ‚ t | j ƒ  |  ƒ sÐ t ‚ t | j ƒ  | ƒ së t ‚ t | j ƒ  | ƒ st ‚ t | j ƒ  d d d g ƒ s*t ‚ t j du dv ƒ } t j |  | | t j dw dx ƒ ƒ } t | j ƒ  dy ƒ s{t ‚ t | j ƒ  dz ƒ s–t ‚ t | j	 ƒ  d ƒ s±t ‚ t | j ƒ  |  ƒ sÌt ‚ t | j ƒ  | j |  ƒ ƒ sðt ‚ t | j ƒ  | ƒ st ‚ t | j ƒ  t j ƒ s)t ‚ | j ƒ  j ƒ  | j ƒ  k sMt ‚ | j ƒ  j ƒ  | j ƒ  k sqt ‚ | j ƒ  j ƒ  | j ƒ  k s•t ‚ t | j ƒ  | j |  ƒ | j |  ƒ ƒ sÆt ‚ t j t  j d d d d d g ƒ t j d{ d| d ƒ t  j d d  ƒ t j d} d~ ƒ ƒ } t  j d' d( d) d* d+ g ƒ } t | j ƒ  | ƒ sVt ‚ t | j ƒ  d, d- d. d/ d0 g ƒ s€t ‚ t j |  | t  j |  j ƒ  d ƒ t j d d€ ƒ ƒ } t | j t t ƒ ƒ t t t t g k sæt ‚ t | j t t ƒ ƒ t t t t g k st ‚ t | j t t ƒ ƒ t t t t g k sFt ‚ | j t  j d� ƒ t ƒ } t | j ƒ  d‚ dƒ f ƒ s‚t ‚ t | j ƒ  t j d
 ƒ d d t j d ƒ d d f ƒ sÅt ‚ t | j	 ƒ  d ƒ sàt ‚ | j
 ƒ  sót ‚ | j t  j d„ ƒ t ƒ } t | j ƒ  d… d† f ƒ s/t ‚ t | j ƒ  d‡ dˆ f ƒ sPt ‚ t | j	 ƒ  d ƒ skt ‚ | j
 ƒ  s~t ‚ | j ƒ  } xŒ t t g D]~ } t | j d | | ƒ d2 ƒ sÁt ‚ t | j d
 | | ƒ d3 ƒ såt ‚ t | j d | | ƒ d4 d5 d6 d7 g ƒ s—t ‚ q—Wt j |  | t  j |  j ƒ  d ƒ t j d‰ dŠ d ƒ ƒ }	 t |	 j t t ƒ ƒ t t t t t g k s…t ‚ t |	 j t t ƒ ƒ t t t t t g k s¸t ‚ t |	 j t t ƒ ƒ t t t t t g k sët ‚ |	 j t  j d‹ ƒ t ƒ }
 t |
 j ƒ  dŒ d� f ƒ s't ‚ t |
 j ƒ  t j d
 ƒ d d t j d ƒ d d f ƒ sjt ‚ t |
 j	 ƒ  dŽ ƒ s…t ‚ |
 j
 ƒ  s—t ‚ |	 j t  j d� ƒ t ƒ }
 t |
 j ƒ  d� d‘ f ƒ sÓt ‚ t |
 j ƒ  d’ d“ f ƒ sôt ‚ t |
 j	 ƒ  d” ƒ st ‚ |
 j
 ƒ  s!t ‚ |
 j ƒ  } x� t t g D]� } t |
 j d | | ƒ d9 ƒ sdt ‚ t |
 j d
 | | ƒ d: ƒ sˆt ‚ t |
 j d | | ƒ d; d< d= d> d? g ƒ s:t ‚ q:W| j ƒ  } | j d t | ƒ } t | d@ dA dB dC dD dE g ƒ s	t ‚ t | j t  j d• ƒ | ƒ dI dJ dK dL dM dN g ƒ sC	t ‚ t j d– d— dY ƒ } xIt t f D];} t  j | j ƒ  ƒ } t  j | j ƒ  ƒ } t  j dZ t  j  | ƒ d[ t ƒ d
  } t j t  j d g ƒ | t  j d d ƒ t j t! | j" | ƒ ƒ t! | j" | ƒ ƒ d | ƒ ƒ } t | j ƒ  d\ g ƒ s8
t ‚ t  j d] d^ ƒ } | r`
| j# d_ ƒ n  | j | t ƒ } t | j ƒ  d` da db dc g ƒ s™
t ‚ t | j ƒ  dd de df dg g ƒ sÀ
t ‚ | rä
t | j	 ƒ  d_ ƒ sä
t ‚ n  d d d d d d d d g } | r| j# d ƒ n  t t$ | d ƒ | dh di ƒs<t ‚ xat% dj ƒ D]S} t j t  j | dk g ƒ | t  j d d ƒ | ƒ } t  j d g ƒ } t | j d t | ƒ t$ | | j ƒ  d ƒ dh dl ƒsÒt ‚ xÇ d d d	 g D]¶ } t j t  j | dm g ƒ | t  j | g ƒ | ƒ } xy d d
 g D]k } xb t t g D]T } | j ƒ  } | j | | | ƒ } t& | | | ƒ } t' | | dh dl ƒs<t ‚ q<Wq)WqâWqIWqe	Wd  S(˜   Ngš™™™™™¹?gš™™™™™É?g      à?i   i   i   g{®Gáz¤?g{®Gáz”?g{®Gáz„?i   i   i    g6–ï·îç@g@üS.¶ê@gëÏ@RÃî?i   g        g±?gÁ?gÑ?gåcw�’B@gõøÃÏ?ñ?g7þDeÃÚ÷?gŠ6l ÛöÀg4„>`×æ?gE.8ƒ¿�-@gz6«>WÛè?g©õ~£E@gÐî�b€D3¿g~©Ÿ7©Î?g›‚"1@gü©ñÒMb@?gšj<Gò?g~oÓŸý°@gÛïáÔ¿ã?g@¤ß¾<à?gò±»@I,@gÁ‘@ƒMýD@g    �–°¿g  ¬w•�m?g€ÜÂõ ¹?g€‚NÝ>¯?g@y°Ê�»¿gH²ýÿô…?gÊ»Ÿ®IB?ga-ˆ’ÚÕ•?g]˜;é3V‘?gûÜ"¸£?iýÿÿÿgf–N59@g‚V`ÈJp@g®ïhˆÏN/@g��7¯ oÀgqÞ¤—é$@g¶Žóí3ú¿iûÿÿÿgé³¨ô¸hF@g®ÏA<‡ª‡@gÍ,ø#û5@gA¡GŒ6ÀgŸ`Z/áS+@g“…TöøÀg ‚™<É6@gÆAæ>ì�¿gÊ»}?€~?gv¨{‡‰”?g5XÕ�ôA?g~Ï-f@4“¿g «<WR¿gš™™™™™Ù?g333333Ó?g333333ã?g™6Òì�¿gãžbrö�?gü^ªˆ‰”?göGs¿ž
s?g’>­¢?4“¿g²ˆ¼@¤:�¿g   €’B@g   ÀÏ?ñ?g   `ÃÚ÷?g    ÛöÀg   @`×æ?g   €¿�-@g   @WÛè?g    E@g   `€D3¿g   @©Î?g   €"1@t   datat   reverseg” ˆÀi   iÿÿÿÿgš™™™™™É¿gŠ6l ÛöÀgÉÇî%…ú?gùiškß?g©rÿûü³?g)H4ð¿gE.8ƒ¿�+@g©õ~£‹D@g&S£’Ì¿R   g-Cëâ6?i
   g      $@gü©ñÒMbP?g      4@(   gš™™™™™¹?gš™™™™™É?g      à?(   i   i   i   (   g{®Gáz¤?g{®Gáz”?g{®Gáz„?(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   gåcw�’B@gõøÃÏ?ñ?g7þDeÃÚ÷?gŠ6l ÛöÀg4„>`×æ?(   gE.8ƒ¿�-@gz6«>WÛè?g©õ~£E@gÐî�b€D3¿g~©Ÿ7©Î?(   gšj<Gò?g~oÓŸý°@gÛïáÔ¿ã?(   g@¤ß¾<à?gò±»@I,@gÁ‘@ƒMýD@(   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   i   i   i   i   (   gš™™™™™¹?gš™™™™™Ù?gš™™™™™É?g      à?g333333Ó?g333333ã?(   g   €’B@g   ÀÏ?ñ?g   `ÃÚ÷?g    ÛöÀg   @`×æ?(   g   €¿�-@g   @WÛè?g    E@g   `€D3¿g   @©Î?((   R   R8   R   RO   R-   R   R/   R   R0   R1   R2   RM   RP   RN   t   fitted_valuesR	   RA   RB   RR   t   significant_relative_errorsR7   RG   t   bound_flagsR6   R5   t   apply_shiftsR'   R9   RQ   t   gradients_d_abct   gradients_d_shiftst   sort_permutationt   abst   itert   selectRH   RL   R   RW   R   (   R
   t   yt   sigmasRV   t   reference_gaussiant   c_fitRR   t   sgfRT   t   gfct   sgfct   gabct   g5ct   include_constant_termR   R    t   permutationt   shiftst   expected_gradientsR   t   sigmaRS   t   ant   fi(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   exercise_fitø   sJ   		$$$$1000!7!!333!7!!"	!  	%!  		g        g      @gö(\�Âõ@g{®Gáz”?g¢E¶óýÔ@g¸…ëQ¸ž?gTã¥›Ä @g{®Gáz¤?g+‡Y@gš™™™™™©?gåÐ"Ûùþ@g¸…ëQ¸®?g®Gáz”@gìQ¸…ë±?g´Èv¾Ÿ@g{®Gáz´?g/Ý$�•@g
×£p=
·?g…ëQ¸@gš™™™™™¹?g!°rh‘m@g)\�Âõ(¼?g+‡ÙÎ@g¸…ëQ¸¾?g“V-@g¤p=
×£À?gÕxé&1ˆ@gìQ¸…ëÁ?gÙÎ÷Sã@g333333Ã?gX9´Èv>@g{®GázÄ?gé&1¬œ@gÃõ(\�ÂÅ?g–C‹lçû@g
×£p=
Ç?g-²�ï§Æ@gR¸…ëQÈ?gÏ÷Sã¥›@gš™™™™™É?g{®Gáz@g)\�Âõ(Ì?gÇK7‰A`
@g¸…ëQ¸Î?gX9´Èv@g      Ð?gd;ßO�—@g¤p=
×£Ð?gøSã¥›Ä@gìQ¸…ëÑ?gÝ$�•C@g333333Ó?gÁÊ¡E¶ó@g{®GázÔ?g+‡ÙÎ@gÃõ(\�ÂÕ?g7‰A`åÐ@gffffffÖ?g‘í|?5^@g
×£p=
×?gö(\�Âõ @gR¸…ëQØ?gÓMbX9 @gš™™™™™Ù?g^ºI+ÿ?gáz®GáÚ?g®Gázþ?g)\�Âõ(Ü?g‰A`åÐ"ý?gÍÌÌÌÌÌÜ?gNbX9´ü?gq=
×£pÝ?gR¸…ëQü?g¸…ëQ¸Þ?gš™™™™™û?g      à?gö(\�Âõú?gš™™™™™á?gÙÎ÷Sã¥ù?g333333ã?gd;ßO�—ø?gÍÌÌÌÌÌä?gD‹lçû©÷?gffffffæ?g7‰A`åÐö?gš™™™™™é?gôýÔxé&õ?gÍÌÌÌÌÌì?g/Ý$�ó?gmçû©ñÒñ?gš™™™™™ñ?gþÔxé&1ð?g333333ó?gsh‘í|?í?gÍÌÌÌÌÌô?gçû©ñÒMê?gffffffö?gZd;ßO�ç?g      ø?gJ+‡å?gš™™™™™ù?g7‰A`åÐâ?g333333û?gÍÌÌÌÌÌà?gÍÌÌÌÌÌü?gÁÊ¡E¶óÝ?gffffffþ?g�—nƒÀÚ?g       @g¬Zd;ß×?g      @gÙÎ÷Sã¥Ë?g      @g      @g#Ûù~j¼´?g      @g‰A`åÐ"«?g      @gš™™™™™™?g9´Èv¾ŸŠ?t   tabulated_fitc           B   s   e  Z d  „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   limitt   coefficients(   t   selfRv   Rw   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   __init__¬  s    	(   t   __name__t
   __module__Ry   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyRu   ª  s   gÓËMz€t@g-¬Ç8 è*@gšãÓÃ kü?gä�¦J@@gn…†4Mgñ?gi–{�Óéç?gÒ:­2Ù†ä?gcãî)�Ð?geS»œÊ?güâ1·>T@gŽ^ü¤ïº?gÉhCÕ®?g¦ê°<@gTQù-sˆ-@g%’íAè÷?gÞÝ¥¹>E@gß¿©~Þãð?g¨Ý;ÅÆüè?gîä$»Eæ?g0˜g¼Ý’Ð?g# ˆâcÌº?g÷@Nò+«­?g5
Ï¹@g¦ƒâw-�)@gsÆÒ�ºÿ?g;Á©É>B@gøXV$×õ?gúýô@ä?gšqD÷ŸÅÞ?gÇ¢±AôÂ?gá•Y r@gë¢¯û*Î?@gQ´ñ˜�úû?gkÉUîÌ„Ü?gJP¡,n•û?g_�(ý”*%@g¡I/¡3Y@g‡DPg½Ÿ9@gDK­h@g Íð¥íø?gd�ˆ(ß@g�kw$¢Ê-@g{®Gáz@g+•Ô	Ø4@gR¸…ëQð?g
×£p=j$@gBÏfÕçjù?gÂ†§WÊ2â?g®Gáz®ë?gÞ“‡…ZÓI@g¸@‚âÇ˜Ë?gåcw�’B@gE.8ƒ¿�-@gõøÃÏ?ñ?gz6«>WÛè?g7þDeÃÚ÷?g©õ~£E@g×/ØÛöÀgÐî�b€D3¿g{»%9`×æ?g~©Ÿ7©Î?gNŸt"1@t
   carbon_fitc           B   sJ   e  Z d  „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z RS(   c      
   C   s  | |  _  | |  _ | |  _ t j t ƒ d d  d … } t j t ƒ d d  d … } | | j d k } t j | j	 | ƒ | j	 | ƒ t j | j
 t ƒ d ƒ t j t j | j ƒ ƒ ƒ |  _ |  j j ƒ  } t j j |  d |  j j ƒ  j ƒ  d | d | d k p| d	 k d
 | ƒd  S(   Ni    i   i   gü©ñÒMbP?t   mt   nt   check_with_finite_differencesi   i	   t   verbose(   t   tab_fitt   perturbR€   R   R8   t   carbon_s_y_tableRv   R   RO   Rc   t   countR5   R-   Rw   R3   R   t   test_functionRy   RM   R7   (   Rx   R�   R‚   R€   t	   carbon_sst	   carbon_yst	   selectionR~   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyRy   â  s"    			!c         C   s£   |  j  j ƒ  |  _ d |  j d |  j ƒ j ƒ  d |  _ |  j r„ t j d d ƒ } |  j d | j	 d |  j j
 ƒ  d d	 ƒ 9_ n  d
 |  _ d |  _ d  |  _ d  S(   Ng      à?R
   i   t   seedi    i   R7   t   factorg{®Gáz„?g:Œ0âŽyE>i
   (   RO   R4   t   x0R+   t   normt   capital_f_x_starR‚   R   t   mersenne_twistert   random_doubleR7   t   tau0t   delta0t   Nonet   x_star(   Rx   RŽ   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   initializationõ  s    &			c         C   s    d |  j  j ƒ  t |  j ƒ f S(   Ns   carbon_fit(n=%d, perturb=%s)(   RO   R3   t   strR‚   (   Rx   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   label   s    gü©ñÒMbP?c         C   s{   d | j  ƒ  d } | |  j k rw | | k  sD t | |  j f ƒ ‚ |  j re d Gd GHd G|  j GHn  |  j sw t ‚ n  d  S(   Ng      à?i   s4     WARNING: minimization converged to larger residuals   than original solution:s       original:(   RŒ   R�   R   R€   R‚   (   Rx   t   f_x_start	   toleranceR�   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt    check_minimized_capital_f_x_star  s    	c         C   sF   t  j |  j j ƒ  |  j j ƒ  |  j j ƒ  t  j | ƒ ƒ } | j ƒ  S(   N(   R   RO   RM   RP   RN   R-   RR   (   Rx   R
   RO   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyR+     s    $c         C   sF   t  j |  j j ƒ  |  j j ƒ  |  j j ƒ  t  j | ƒ ƒ } | j ƒ  S(   N(   R   RO   RM   RP   RN   R-   t   least_squares_jacobian_abc(   Rx   R
   RO   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   jacobian_analytical  s    $c         C   s^   |  j  d | ƒ } t j |  j j ƒ  |  j j ƒ  |  j j ƒ  t j | ƒ ƒ } | j ƒ  j ƒ  S(   NR
   (	   R›   R   RO   RM   RP   RN   R-   t%   least_squares_hessian_abc_as_packed_ut   matrix_packed_u_as_symmetric(   Rx   R
   t   jRO   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   hessian_analytical  s
    $(	   Rz   R{   Ry   R”   R–   R™   R+   R›   RŸ   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyR|   à  s   					c      	   C   s]   xV t  t t t t t t t g D]6 } x- t t	 g D] } t
 d | d | d |  ƒ q2 Wq Wd  S(   NR�   R‚   R€   (   t   carbon_fit_1t   carbon_fit_2t   carbon_fit_3t   carbon_fit_4t   carbon_fit_5t   carbon_fit_6t   carbon_it1992t   carbon_wk1995R6   R5   R|   (   R€   R�   R‚   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt!   exercise_fit_jacobian_and_hessian#  s
    	c           C   s;   t  ƒ  t ƒ  t ƒ  t d d t j d k ƒ t ƒ  GHd  S(   NR€   s	   --verbosei   (   R,   RF   Rt   R¨   t   syst   argvR   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   run*  s
    t   __main__(    (+   t
   __future__R    t   scitbx.examplesR   t   scitbx.mathR   t   scitbx.array_familyR   t   libtbx.test_utilsR   R   t   libtbx.utilsR   R:   t	   cStringIOR   R'   R©   R   R   R   R#   R%   R,   RF   RL   RW   Rt   Rƒ   Ru   R¥   R¤   R£   R¢   R¡   R    R¦   R§   R…   R|   R¨   R«   Rz   (    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_gaussian.pyt   <module>   s˜   			h)	¦$$$$$$$$$$C		