ó
ZxTc           @   sq   d  d l  m Z d  d l Z d  d l m Z d  d l Z d e f d     YZ d   Z	 e
 d k rm e	   n  d S(   i˙˙˙˙(   t   divisionN(   t   flext   linear_least_squares_fitc           B   s   e  Z d    Z d   Z RS(   c         C   sl   | |  _  | |  _ t j d d g  |  _ t j j d |   |  _ |  j d |  _	 |  j d |  _
 |  ` d  S(   Ni   i    t   target_evaluator(   t   x_obst   y_obsR   t   doublet   xt   scitbxt   lbfgst   runt	   minimizert   slopet   y_intercept(   t   selfR   R   (    (    s\   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/lbfgs_linear_least_squares_fit.pyt   __init__   s    		c         C   s   |  j  d } |  j  d } | |  j | } |  j | } t j t j |   } t j t j d | |  j  t j d |  g  } | | f S(   Ni    i   iţ˙˙˙(   R   R   R   R   t   sumt   pow2R   (   R   R   R   t   y_calct   y_difft   ft   g(    (    s\   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/lbfgs_linear_least_squares_fit.pyt    compute_functional_and_gradients   s    (   t   __name__t
   __module__R   R   (    (    (    s\   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/lbfgs_linear_least_squares_fit.pyR      s   		c    
      C   sý   t  j d d d d d d d d d	 d
 g
  }  t j } t j d  } | |  | } | t  j d |  j    d } t d |  d |  } d G| j GHd G| j	 GH| j |  | j	 } d GHx< t
 |  | |  D]( \ } } }	 d | | |	 | |	 f GHqÍ Wd  S(   Ni   i   i   i   i   i   i   i   i	   i
   t   sizegš?R   R   s
   fit.slope:s   fit.y_intercept:s    x_obs  y_obs y_calc  diffs   %6.2f %6.2f %6.2f %6.2f(   R   R   t   matht   pit   sqrtt   random_doubleR   R   R   R   t   zip(
   R   R   R   t   y_idealR   t   fitR   t   xot   yot   yc(    (    s\   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/lbfgs_linear_least_squares_fit.pyt   example   s    -
 "t   __main__(   t
   __future__R    t   scitbx.lbfgsR   t   scitbx.array_familyR   R   t   objectR   R$   R   (    (    (    s\   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/examples/lbfgs_linear_least_squares_fit.pyt   <module>   s   	