
&]\c           @` s   d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d  d l m Z m Z m Z m Z m Z m Z d e f d     YZ d S(	   i    (   t   divisiont   print_functiont   absolute_importN(   t   pi(   t   assert_array_almost_equalt   assert_equalt   assert_warns(   t   raises(   t   Datat   Modelt   ODRt   RealDatat   OdrStopt
   OdrWarningt   TestODRc           B` s   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C` s*   t  t t d d  t  t t d d  d  S(   Ni   i   (   t   assert_raisest
   ValueErrorR   R   (   t   self(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_bad_data   s    c         C` s   | d | | d S(   Ni    i   (    (   R   t   Bt   x(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   empty_data_func   s    c         C` so   d d g } t  |  j  } t g  g   } t t t | | d | t g  g   } t t t | | d | d  S(   Ng{Gz?g        t   beta0(   R	   R   R   R   R   R
   R   (   R   R   t   lineart	   empty_dat(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_empty_data   s    		c         C` s;   | d | d t  j t  j | d |  d d  } | S(   Ni    i   i   g      ?(   t   npt   powert   exp(   R   R   R   t   ret(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   explicit_fcn&   s    7c         C` s=   t  j | d |  } | d d | d | d | } | S(   Ni   i   g       @g      ?(   R   R   (   R   R   R   t   eBxR   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   explicit_fjd*   s    "c         C` sk   t  j | d |  } t  j t  j | j d  t  j | d d  | d d | d | | g  } | S(   Ni   ig      ?i   g       @(   R   R   t   vstackt   onest   shapeR   (   R   R   R   R   t   res(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   explicit_fjb/   s
    $c         C` s  t  |  j d |  j d |  j d t d d d d  } t d d d	 d
 d d d d d d d d g d d d d d d d d d d d d g  } t | | d d  d! d" g d# d$ d$ d% d% d% d% d% d% d% d% d% d$ g } | j d& d'  | j d( d$ d) d$ d* d$  | j	   } t
 | j t j d+ d, d- g   t
 | j t j d. d/ d0 g   t
 | j t j d1 d2 d3 g d2 d4 d5 g d3 d5 d6 g g   d  S(7   Nt   fjacbt   fjacdt   metat   names   Sample Explicit Modelt   refs   ODRPACK UG, pg. 39g        g      @g      @g      @g      $@g      0@g      :@g      >@g      A@g     @A@g      Y@g     ē@gfffff@g     @g     @g     @g33333@g     T@g     @gfffff@g33333@g     @g     @R   g     p@g      Igt   ifixxi    i   t   derivi   t   initt   itert   finalg8@gLA[KgxQ}gֳ?g1X?gy?ggC?gNM=y7׿g	Jgq?g]F f_gO>(   R	   R   R%   R    t   dictR   R
   t   set_jobt
   set_iprintt   runR   t   betaR   t   arrayt   sd_betat   cov_beta(   R   t   explicit_modt   explicit_datt   explicit_odrt   out(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_explicit6   s:    			*-c         C` sx   | d t  j | d | d d  d | d | d | d | d | d | d t  j | d | d d  d S(   Ni   i    g       @i   i   i   g      ?(   R   R   (   R   R   R   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   implicit_fcn\   s    c         C` s  t  |  j d d d t d d d d  } t d d	 d
 d d d d d d d d d d d d d d d d d g d d d d d d  d! d" d# d$ d% d& d' d' d( d) d* d+ d, d- g g d  } t | | d. d d/ d0 d1 d2 g } | j   } t | j t j	 d3 d4 d5 d6 d7 g   t | j
 t j	 d8 d9 d: d; d< g   t | j t j	 d= d> d? d@ dA g d> dB dC dD dE g d? dC dF dG dH g d@ dD dG dI dJ g dA dE dH dJ dK g g   d  S(L   Nt   impliciti   R(   R)   s   Sample Implicit ModelR*   s   ODRPACK UG, pg. 49g      ?g333333?g?g(\?g(\ @gzG@gQ@g{Gz @gףp=
?gq=
ףp?g?gQѿg(\g(\gffffffg      g
ףp=
gq=
ףp	gQgQg333333g      gffffffgRQgzG
g      g      g      g(\gzGgHzGg(\gp=
ףg      gQg      g(\gq=
ףpR   g      g
ףp=
?g{Gz?g{Gz?g{ 3gzJrgJ/k?g&Z薞?gkj?g?g29?g3"͇p?g[=f?gx#+l?g:\ @g8%g??g'M['g%GRR?gdbb @ggRg	<?gkg};yWzg?g
WWgm&W?gK}U?g$_Tga?(   R	   R=   R0   R   R
   R3   R   R4   R   R5   R6   R7   (   R   t   implicit_modt   implicit_datt   implicit_odrR;   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_implicita   sN    	'$	c   
      C` s<  | d k  j    r t  n  t | d d } t j |  } t j |  } t j d t | t j | d  | d  } t j | | d | |  } | d | d t j t j	 t j d | | d  t j | | d   | d  } t j
 | d | t j | d |  | t j | d |  g  }	 |	 S(	   Ng        i   g       @i   g      ?i    i   i   (   t   anyR   R   R   t   cost   sinR   R   t   arctan2t   sqrtR!   (
   R   R   R   t   thetat   cthetat   sthetat   omegat   phit   rR   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt	   multi_fcn   s    	02&&!c         C` s  t  |  j d t d d d d  } t j d d d d	 d
 d d d d d d d d d d d d d d d d d d g  } t j d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 g d4 d5 d6 d7 d8 d9 d: d; d< d= d> d= d? d@ dA dB dC dD dE dF dG dH dI g g  } t |  } t j dJ dJ | f dK t } t j | dK t	 } t j | dK t } dL | dM dM d  d   f <dN | dO dM d  d   f <| dM dO d  d   f <dP | dO dO d  d   f <x t
 |  D] } | | d	 k  rdM | | <nt | | d
 k rna | | d k r-dQ | | <nD | | d k rJdR | | <n' | | d k rgdS | | <n
 dT | | <| | d	 k s| | d
 k rdU | d  d   d  d   | f <qqWt | | dV dW t j | dJ  dX | }	 t |	 | dY dZ d[ d\ d] d^ g d_ | d` | }
 |
 j da dO db dO  |
 j   } t | j t j dc dd de df dg g   t | j t j dh di dj dk dl g   t | j t j dm dn do dp dq g dn dr ds dt du g do ds dv dw dx g dp dt dw dy dz g dq du dx dz d{ g g   d  S(|   NR(   R)   s   Sample Multi-Response ModelR*   s   ODRPACK UG, pg. 56g      >@g      I@g     Q@g      Y@g     b@g      i@g     r@g     @@g     @g     @@g     p@g     @@g     p@g     @g     X@g     @g     L@g     @g     L@g     j@g     @g     j@g    OAgzG@g^I@gI+@gx&@g~jt@gS@gOn@gʡE@gNbX9@gMb@gRQ@gX9v@gw/
@gMb
@g%C	@g/$	@gFx@gZd;@gFx@g5^I@gNbX9@gMb@gOn@g rh?gK7A`?gMb?gA`"?gh|?5?g r?gDl?g5^I?g-?gCl?gjt?gQ?g"~?g|?5^?gRQ?gQ?gCl?gB`"?gK?g/$?g/$?gn?i   t   dtypeg|@i    g     i   g    f@g      9@g     @g     @g     Ag        t   wdg-C6?t   weR   g      @g       @g      @g?g      ?t   delta0R+   R,   t   del_initg@gNUiw@gz @gR?gFu?gfkl,?g 1w?gAS?g@L*?g?g?#0z?g_ n=m?g-Mu?gG:xggTÚ?gaǇ
z?g4<n?ggjtgܪVŊ?gHAcO?gK*rԬga/??gk{?gy7g
P/{7?(   R	   RN   R0   R   R5   t   lent   zerost   floatR"   t   intt   rangeR   R   R
   R1   R3   R   R4   R6   R7   (   R   t	   multi_modt   multi_xt   multi_yt   nt   multi_wet   multi_ifixxt   multi_deltat   it	   multi_datt	   multi_odrR;   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt
   test_multi   sz    	0
 &"	!								c         C` s   | d | d | S(   Ni    i   (    (   R   R   R   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   pearson_fcn   s    c         C` s,  t  j d d d d d d d d d	 d
 g
  } t  j d d d d d d d d d d g
  } t  j d d d d d d d d d d g
  } t  j d d d d d d d d d d g
  } t | | d  | d! | } t | | d  | d! | } t |  j d" t d# d$  } t | | d% d d g } t | | d% d d g }	 | j   }
 t |
 j	 t  j d& d' g   t |
 j
 t  j d( d) g   t |
 j t  j d* d+ g d+ d, g g   |	 j   } t | j	 t  j d- d. g   t | j
 t  j d/ d0 g   t | j t  j d1 d2 g d2 d3 g g   d  S(4   Ng        g?g?g@gffffff
@g@g@gffffff@g      @g@g@g@gffffff@g      @g@gffffff@g333333@g      ?gQ?g{Gz?gQ?gQ?g)\(?gp=
ף?g)\(?gGz?g      ?g      ?gffffff?gQ?g?t   sxt   syR(   R)   s   Uni-linear FitR   g4ԉ.@gv޿grtA-?gc?g;޵?g=gk?gO&@gj( g3
ٻl?gZ՗?gF)t?g`=Lɿg!?(   R   R5   R   R	   Rd   R0   R
   R3   R   R4   R6   R7   (   R   t   p_xt   p_yt   p_sxt   p_syt   p_datt   pr_datt   p_modt   p_odrt   pr_odrR;   t   rout(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_pearson   s>    ----c         C` s]   | d | d | d t  j t  j | | | d | d d  t  j | d | d   S(   Ni    i   i   g       @(   R   RG   R   (   R   R4   R   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   lorentz!  s    *c         C` s  t  j d g d  } t  j d d d d d d d	 d
 d d d d d d d d d d g  } t d d d d d d d d d d d d  d! d" d# d$ d% d& g d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 g d9 | d: | } t |  j d; t d< d=  } t | | d> dN } | j   } t | j	 t  j dB dC dD g   t | j
 t  j dE dF dG g   t | j t  j dH dI dJ g dI dK dL g dJ dL dM g g   d  S(O   Ng(\?i   gdOO?gO?g&0G?gpt͘(G?g^"G?g eG?genBF?g8=?g-=?g`EE?g,!WsE?g01cE?g&-}Ԭ>g;vQ?gPmQ?gGus#T?gW UW?g>c?gׁsF@g`TR'@gxN@gs@g3@gN#-@g	ϛ@gW[N@gp:@@g@gs,&6@g@g2c@gHIOG@g?@g;@gx&q@gҌEY@i  g     t@i  i  g     |@i  g     "@g     @i  ib  g     @i  g     L@g     ,@i  g     @g     (z@g     8q@Re   Rf   R(   R)   s   Lorentz PeakR   g     @@g?gffffff@gA5[Z@gO#?gF=@g(1?gȕ6?gQ.q;0?g\j?gEGgp` g3<n>gG!fc>gq[cсE]>(   g     @@g?gffffff@(   R   R5   R   R	   Rr   R0   R
   R3   R   R4   R6   R7   (   R   t   l_syt   l_sxt   l_datt   l_modt   l_odrR;   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_lorentz%  s@    	c   	      C` s   d   } d d g } t  j d d  } | | |  } t |  } t | | d d d d } t | | d	 d d g } | j   } t | j d
  d  S(   Nc         S` s   |  d | |  d S(   Ni    i   (    (   t   cR   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyR   N  s    g       @g      @i    i
   RP   g      ?RQ   R   i   (   R   t   linspaceR	   R   R
   R3   R   t   info(	   R   R   Ry   R   t   yt   modelt   datat   jobt   result(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   test_ticket_1253M  s    	c   
      C` s  d d d d d g } d d d d	 d
 g } t  j t  j | d t t  j | d t f  } t t  j | | f  d d d | } t d   d t } t | | d t  j	 d g  } | j
   } t | | d t  j	 d g  d | } | j
   }	 t | j |	 j  d  S(   NgGz gGzgMbPgRQ?gGz?gףp=
@g)\(?gMbP?gV-?g
ףp=
@RO   R|   i   t   fixc         S` s4   | d d  d   f |  d | d d  d   f d S(   Ni   i    g       @(    (   R4   R   (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   <lambda>b  s    R>   R   g      ?R+   (   R   R!   t
   zeros_likeRW   t	   ones_likeR   R	   t   TrueR
   R5   R3   R   R4   (
   R   t   x1t   x2R   R~   R}   t   odr1t   sol1t   odr2t   sol2(    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt
   test_ifixx]  s    3'!'(   t   __name__t
   __module__R   R   R   R   R    R%   R<   R=   RB   RN   Rc   Rd   Rq   Rr   Rx   R   R   (    (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyR      s"   							&		1		M		1		(	(   t
   __future__R    R   R   t   numpyR   R   t   numpy.testingR   R   R   t   pytestR   R   t	   scipy.odrR   R	   R
   R   R   R   t   objectR   (    (    (    s7   lib/python2.7/site-packages/scipy/odr/tests/test_odr.pyt   <module>   s   .