ó
Ë˝÷Xc           @` sň  d  Z  d d l m Z m Z m Z d d l Z d d l m Z d d d d d	 d
 g Z	 d   Z
 d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e e
 d e d e d e d i d d 6d d 6d d 6Z d    Z e e d e d e d e d i d! d 6d" d 6d# d 6Z d$   Z d%   Z d&   Z d'   Z d(   Z d)   Z d*   Z d+   Z e e d e d e d e d i d, d 6d- d 6d. d 6Z  e e d e d e d e d i d/ d 6d0 d 6d1 d 6Z! d S(2   sI    Collection of Model instances for use with the odrpack fitting package.
i    (   t   divisiont   print_functiont   absolute_importN(   t   ModelR   t   exponentialt   multilineart	   unilineart	   quadratict
   polynomialc         C` sC   |  d |  d } } | j  d d f | _  | | | j d d  S(   Ni    i   t   axis(   t   shapet   sum(   t   Bt   xt   at   b(    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _lin_fcn   s    c         C` sU   t  j | j d t  } t  j | | j   f  } |  j d | j d f | _ | S(   Ni˙˙˙˙(   t   npt   onesR
   t   floatt   concatenatet   ravel(   R   R   R   t   res(    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _lin_fjb   s    c         C` sG   |  d } t  j | | j d f | j d d d } | j | _ | S(   Ni   i˙˙˙˙R	   i    (   R   t   repeatR
   (   R   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _lin_fjd   s    
-c         C` sH   t  |  j j  d k r+ |  j j d } n d } t j | d f t  S(   Ni   i    i   (   t   lenR   R
   R   R   R   (   t   datat   m(    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _lin_est!   s    c         C` sR   |  d |  d } } | j  d d f | _  | t j | t j | |  d d S(   Ni    i   R	   (   R
   R   R   t   power(   R   R   t   powersR   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt	   _poly_fcn.   s    c         C` sX   t  j t  j | j d t  t  j | |  j f  } |  j d | j d f | _ | S(   Ni˙˙˙˙(   R   R   R   R
   R   R   t   flat(   R   R   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _poly_fjacb5   s    %c         C` sQ   |  d } | j  d d f | _  | | } t j | t j | | d  d d S(   Ni   i    R	   (   R
   R   R   R   (   R   R   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _poly_fjacd<   s    

c         C` s   |  d t  j |  d |  S(   Ni    i   (   R   t   exp(   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _exp_fcnE   s    c         C` s   |  d t  j |  d |  S(   Ni   (   R   R$   (   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _exp_fjdI   s    c         C` sW   t  j t  j | j d t  | t  j |  d |  f  } d | j d f | _ | S(   Ni˙˙˙˙i   i   (   R   R   R   R
   R   R$   (   R   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _exp_fjbM   s    =c         C` s   t  j d d g  S(   Ng      đ?(   R   t   array(   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _exp_estS   s    t   fjacbt   fjacdt   estimatet   metas   Arbitrary-dimensional Lineart   names    y = B_0 + Sum[i=1..m, B_i * x_i]t   equs&   $y=\beta_0 + \sum_{i=1}^m \beta_i x_i$t   TeXequc         C` s¸   t  j |   } | j d k r7 t  j d | d  } n  t |  d f | _ t |  d } | d  } t t d t d t d | d | f d i d d	 6d
 | d d 6d | d d 6S(   s˙  
    Factory function for a general polynomial model.

    Parameters
    ----------
    order : int or sequence
        If an integer, it becomes the order of the polynomial to fit. If
        a sequence of numbers, then these are the explicit powers in the
        polynomial.
        A constant term (power 0) is always included, so don't include 0.
        Thus, polynomial(n) is equivalent to polynomial(range(1, n+1)).

    Returns
    -------
    polynomial : Model instance
        Model instance.

    i   c         S` s   t  j | f t  S(   N(   R   R   R   (   R   t   len_beta(    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt	   _poly_estz   s    R+   R*   R,   t
   extra_argsR-   s   Sorta-general PolynomialR.   s$   y = B_0 + Sum[i=1..%s, B_i * (x**i)]R/   s)   $y=\beta_0 + \sum_{i=1}^{%s} \beta_i x^i$R0   (    (	   R   t   asarrayR
   t   arangeR   R   R    R#   R"   (   t   orderR   R1   R2   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyR   ^   s    
t   Exponentials   y= B_0 + exp(B_1 * x)s   $y=\beta_0 + e^{\beta_1 x}$c         C` s   | |  d |  d S(   Ni    i   (    (   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _unilin   s    c         C` s   t  j | j t  |  d S(   Ni    (   R   R   R
   R   (   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _unilin_fjd   s    c         C` s8   t  j | t  j | j t  f  } d | j | _ | S(   Ni   (   i   (   R   R   R   R
   R   (   R   R   t   _ret(    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _unilin_fjb   s    $c         C` s   d S(   Ng      đ?(   g      đ?g      đ?(    (   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   _unilin_est   s    c         C` s    | | |  d |  d |  d S(   Ni    i   i   (    (   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt
   _quadratic   s    c         C` s   d | |  d |  d S(   Ni   i    i   (    (   R   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt	   _quad_fjd˘   s    c         C` s?   t  j | | | t  j | j t  f  } d | j | _ | S(   Ni   (   i   (   R   R   R   R
   R   (   R   R   R:   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt	   _quad_fjbŚ   s    +c         C` s   d S(   Ng      đ?(   g      đ?g      đ?g      đ?(    (   R   (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt	   _quad_est­   s    s   Univariate Linears   y = B_0 * x + B_1s   $y = \beta_0 x + \beta_1$t	   Quadratics   y = B_0*x**2 + B_1*x + B_2s&   $y = \beta_0 x^2 + \beta_1 x + \beta_2("   t   __doc__t
   __future__R    R   R   t   numpyR   t   scipy.odr.odrpackR   t   __all__R   R   R   R   R    R"   R#   R%   R&   R'   R)   R   R   R   R8   R9   R;   R<   R=   R>   R?   R@   R   R   (    (    (    s/   /tmp/pip-build-7oUkmx/scipy/scipy/odr/models.pyt   <module>   sT   													
	'								