ó
[™xTc           @   s—   d  d l  m Z d  d l Z e j j d ƒ d  d l Z d  d l Td e f d „  ƒ  YZ	 d e j j
 e f d „  ƒ  YZ d	 e j e	 f d
 „  ƒ  YZ d S(   iÿÿÿÿ(   t   divisionNt!   scitbx_lstbx_normal_equations_ext(   t   *t   non_linear_ls_mixinc           B   sk   e  Z d  Z d „  Z e d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z RS(   sÕ   Synopsis:

  Either of

  class non_linear_ls_xxx(core_non_linear_ls_xxx,
                          non_linear_ls_mixin):
    pass

  class non_linear_ls_xxx(non_linear_ls_mixin):

    # define required methods

  This class is a mixin to be inherited as shown. It requires
  core_non_linear_ls_xxx to provide some methods in the first case,
  or those methods to be defined directly in the heir in the second case:
  those that this mixin marks as not-implemented.
  c         C   s   t  ƒ  ‚ d  S(   N(   t   NotImplementedError(   t   self(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   parameter_vector_norm   s    c         C   s   t  ƒ  ‚ d  S(   N(   R   (   R   t   objective_only(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   build_up   s    c         C   s   t  ƒ  ‚ d  S(   N(   R   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   step_equations    s    c         C   s   t  ƒ  ‚ d  S(   N(   R   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt	   objective#   s    c         C   s   t  ƒ  ‚ d  S(   N(   R   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   step_forward&   s    c         C   s   |  j  ƒ  j ƒ  S(   N(   R	   t   right_hand_side(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   opposite_of_gradient)   s    c         C   s   |  j  ƒ  j ƒ  S(   N(   R	   t   normal_matrix_packed_u(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyR   ,   s    c         C   s   |  j  ƒ  j ƒ  d  S(   N(   R	   t   solve(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyR   /   s    c         C   s   |  j  ƒ  |  j ƒ  d  S(   N(   R   R   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   solve_and_step_forward2   s    
c         C   s   |  j  ƒ  j ƒ  S(   N(   R	   t   solution(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   step6   s    (   t   __name__t
   __module__t   __doc__R   t   FalseR   R	   R
   R   R   R   R   R   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyR      s   								t   _c           B   s   e  Z d  „  Z RS(   c         c   s   |  j  ƒ  V|  j ƒ  Vd  S(   N(   R   R   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   __iter__<   s    (   R   R   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyR   :   s   t)   non_linear_ls_with_separable_scale_factorc           B   s   e  Z RS(    (   R   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyR   A   s   (   t
   __future__R    t   boost.pythont   boostt   pythont
   import_extR   t   extt   objectR   t   injectort	   linear_lsR   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/lstbx/normal_eqns.pyt   <module>   s   
3