ó
j™xTc           @   sJ   d  d l  m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   division(   t   lbfgs(   t   flext   fit_quadratic_function_2d_datac           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sF    Fitting the function y=a(x1-x1m)^2 +b(x2-x2m)^2 + 2c(x1-x1m)(x2-x2m) c         C   s«   | |  _  | |  _ | |  _ t j d d d d d g ƒ |  _ t j d |  ƒ |  _ |  j d |  _	 |  j d |  _
 |  j d |  _ |  j d |  _ |  j d |  _ |  ` d  S(   Ni    t   target_evaluatori   i   i   i   (   t   x1_obst   x2_obst   y_obsR   t   doublet   xR   t   runt	   minimizert   x1mt   x2mt   at   bt   c(   t   selfR   R   R   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyt   __init__   s    			!c         C   s…   |  j  | |  j d } |  j | |  j d } |  j d } |  j d } |  j d } | | | | | | d | | | } | S(   Ni    i   i   i   i   g       @(   R   R	   R   (   R   t   observation_kR	   t   yR   R   R   t   result(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyt   calc_predict_function_values   s    *c         C   sR   d } xE t  t |  j ƒ ƒ D]. } |  j | ƒ } | | |  j | d 7} q W| S(   Ni    g       @(   t   ranget   lenR   R   R   (   R   R   t   iit   tmp(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyt   calc_f"   s
    c      	   C   sŽ  d d d d d g } |  j  d } |  j  d } |  j  d } |  j  d } |  j  d } x(t t |  j ƒ ƒ D]} |  j | } |  j | }	 |  j | }
 | d c d d | | | d | |	 | | | | d d | | | |	 | | |	 | d |
 7<| d c d d | | | d | |	 | | | | d d | | | |	 | | |	 | d |
 7<| d c d | | d | | | d d | | | |	 | | |	 | d |
 7<| d c d |	 | d | | | d d | | | |	 | | |	 | d |
 7<| d c d |	 | | | | | | d d | | | |	 | | |	 | d |
 7<ql Wt j | ƒ S(	   Ni    i   i   i   i   g       @g       Àg      @(   R	   R   R   R   R   R   R   R   (   R   t   gt   xmt   ymR   R   R   t   jjR	   R   t   yobs(    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyt   calc_g)   s$    -?-?XX`c         C   s"   |  j  ƒ  } |  j ƒ  } | | f S(   N(   R   R!   (   R   t   fR   (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyt    compute_functional_and_gradientsC   s    (   t   __name__t
   __module__t   __doc__R   R   R   R!   R#   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyR      s   					N(   t
   __future__R    t   scitbxR   t   scitbx.array_familyR   t   objectR   (    (    (    sP   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/fit_quadratic_function.pyt   <module>   s   