
[c           @   s  d  d l  m Z d  d l Z d  d l Z d d l m Z d d l m	 Z	 d d l
 m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m  Z  m! Z! d d l" m# Z# m$ Z$ m% Z% m& Z& m' Z' d d	 l( m) Z) m* Z* d d
 l+ m, Z, y d  d l- m. Z. e/ Z0 Wn e1 k
 r]e2 Z0 n Xi e d 6i d e j3 d 6d e j4 d 6d e j5 d 6d 6d e j6 d e j3 e j7 d  f g d 6d d g e j4 d 6i e d 6i d e j8 e j9 d 6d e j: d 6d d 6d 6d e j: d e j8 e j9 f g d 6e2 d 6i e d 6i d e j; e j< d 6d e j= d 6d d 6d 6d  e j< d! e j; e j< f g d 6e2 d 6i e d 6i d e j; e j< d" 6d# e j4 d$ 6d 6d% e j> d& e j; f g d 6e2 d 6i e d 6i d e j3 d 6d' e j? d( 6d) e j@ d* 6d 6d+ e jA d  e j3 f g d 6d, d- g e j? d 6i e d 6i d e j3 d. 6d' e j? d( 6d) e j@ d/ 6d0 e j@ d1 6d 6d+ e jA d2 e j3 f g d 6e2 d 6i e d 6i d e j3 d 6d 6d3 e jA d e j3 f g d 6e2 d 6i e d 6i d e j3 d 6d4 e jB d( 6d  e jB d5 6d 6d6 e j? d e j3 f d  e j4 d7 e j3 f g d 6d8 d9 g e jB d 6i e d 6i d e j3 d 6d4 e jB d( 6d  e jB d5 6d: e j3 e jB d" 6d 6d6 e j? d e j3 f d  e j4 d7 e j3 f g d 6d; d< g e jB d 6i e d 6i d e j3 d 6d4 e jB d( 6d= e j6 d> 6d 6d? e j? d@ e j3 f g d 6dA dB g e jB d 6i e d 6i d e j3 d 6d4 e jB d( 6d= e j6 dC 6d  dD 6d 6d? e j? dE e j3 f g d 6e2 d 6g ZC i e d 6i d e j3 d 6d e j4 dF 6d  e j4 dG 6d e j4 dH 6d e j4 dI 6dJ e jD dK 6d 6dL e j5 dM e j4 d e j3 e j7 dN  f g d 6dO dP g dQ dR g g e j4 d 6i e d 6i d e j3 d 6d 6d3 e jA dS e j4 d e j3 f g d 6e2 d 6i e d 6i d e j3 d 6d e j4 d( 6d e j4 dT 6dU e j5 dV 6d 6dW e j4 dX e j5 d e j3 f g d 6d  d: g d7 dY g g e j4 d 6i e d 6i d e j3 d 6d  e j4 d( 6d e j4 dT 6d) e j5 dV 6d  e j3 e j4 d" 6d 6dZ e j4 d e j4 d[ e j3 f g d 6d dY g d! d: g g e j4 d 6i e d 6i d e j3 d 6d e j4 d( 6d e j4 dT 6dU e j5 d\ 6d] e j5 d^ 6dJ e jD dK 6d 6d e j4 dU e j5 d e j3 f g d 6d_ d` g da db g g e j4 d 6i e d 6i d e j3 d 6d e j4 d( 6d e j4 dT 6d e j5 dc 6dd e j5 de 6d 6df e j5 d e j4 dg e jB d e j3 f g d 6dh di g dj dk g g e j4 d 6i e d 6i d e j3 d 6d e j4 d( 6d e j< dT 6d e j5 dl 6d e j< dm 6d 6dn e j5 d e j< d e j3 f g d 6d e j< dZ e j< g do e j4 dp e j4 g g d 6i e d 6i d e j3 d 6d e j4 d( 6d e j4 dT 6d  e j4 d> 6d 6d e j4 dq e j4 dr e j3 f g d 6e2 d 6i e d 6i d e j3 d 6d e j4 d( 6d e j4 dT 6d  e j4 ds 6d 6d e j4 dd e j4 dt e j3 f g d 6e2 d 6i e  d 6i d e j3 d 6d4 e jB d( 6dZ e jB dT 6d= e j6 dC 6d  dD 6d 6d? e j? d e jB du e j3 f g d 6e2 d 6i e! d 6i d e j8 e j9 d 6d  e j: d( 6d e j: dT 6d e j: d 6d d 6d7 dv 6d7 dK 6d 6d e j: dq e j: dw e j8 e j9 f g d 6e2 d 6g ZE i e# d 6i d: e jF d 6dg e j5 d( 6d  dD 6d 6d  e j4 dx e jG f g d 6e2 d 6i e$ d 6i d: e jF d 6dg e j5 dy 6d  dz 6d  d{ 6d 6d  e j4 d0 e jF f d  e j5 d0 e jF f g d 6e2 d 6i e% d 6i d: e jF d 6dg e j5 dy 6d  dz 6d  d{ 6d  d| 6d 6d  e j4 d} e jF f d  e j5 d} e jF f g d 6e2 d 6i e& d 6i d: e jF d 6dg e j5 d( 6d  dD 6d  e j4 d~ 6d 6d  e jB d e jF f dg e j4 d0 e j7 d  e jG f g d 6e2 d 6i e' d 6i d: e jF d 6dg e j5 d( 6d  dD 6d d 6d 6d  e j5 d: d d  d e jH d  e jF f g d 6e2 d 6g ZI i e) d 6i d d 6d e jJ d 6d e j4 d 6d e j4 d d 6d 6d e j4 d e jJ f g d 6e2 d 6i e) d 6i d d 6d e jF d 6d e jF e j4 d 6d e jF e j4 d d 6d 6d e j4 d e jF f g d 6e2 d 6i e) d 6i d d 6d e jF d 6d e jF d 6d e jF d 6d 6d e jJ d e jF f g d 6e2 d 6i e* d 6i d d 6d e jJ d 6d e j4 d 6d e j4 d d 6d e j< d 6d e j< d d 6d: e j4 e j< d 6d 6d e j4 d e j< d e jJ f g d 6e2 d 6i e* d 6i d d 6d e jF d 6d e jF e j4 d 6d e jF e j4 d d 6d e jF e j< d 6d e jF e j< d d 6d: e jF e j4 e j< d 6d 6d e j4 d e j< d e jF f g d 6e2 d 6i e* d 6i d d 6d e jF d 6d e jF d 6d e jF d 6d e jF d 6d e jF d 6d: e jF d 6d 6d e jJ d e jJ d e jF f g d 6e2 d 6g ZK eC eE eI ZL eM e e! e g  ZN e jO jP d eL  d    ZQ e jO jP d eL  d    ZR e jO jP d eL  d    ZS e jO jP d eL  d    ZT e jO jP d eL  d    ZU e jO jV d  e jO jP d eL  d     ZW d S(   i(   t   OrderedDictNi   (   t   units(   t   assert_quantity_allclosei   (   t
   Gaussian1Dt   GaussianAbsorption1Dt   Sersic1Dt   Sine1Dt   Linear1Dt	   Lorentz1Dt   Voigt1Dt   Const1Dt   Box1Dt   Trapezoid1Dt   MexicanHat1Dt   Moffat1Dt
   Gaussian2Dt   Const2Dt	   Ellipse2Dt   Disk2Dt   Ring2Dt   Box2Dt   TrapezoidDisk2Dt   MexicanHat2Dt
   AiryDisk2Dt   Moffat2Dt   Sersic2D(   t
   PowerLaw1Dt   BrokenPowerLaw1Dt   SmoothlyBrokenPowerLaw1Dt   ExponentialCutoffPowerLaw1Dt   LogParabola1D(   t   Polynomial1Dt   Polynomial2D(   t   LevMarLSQFitter(   t   optimizet   classt	   amplitudet   meani   t   stddevt
   parametersi(
  it
   evaluationgffffff?g333333@t   bounding_boxt   r_effi   t   ngܮ(-?g      ?t	   frequencyg      ?t   phasei   it   slopei  t	   interceptip  i   i  t   x_0id   t   fwhmgRQ?i   i  t   amplitude_Lt   fwhm_Li2   t   fwhm_Gg^ ?g333333?g@t   widthih  i    g333333@g@i   gffffff
@g      @gMbP?t   sigmai  gegffffffg,@t   gammat   alphagg?t   x_meant   y_meant   x_stddevt   y_stddevi-   t   thetag4y@g.2v@g      gez],g2.0@gY3%gY3-@g?t   y_0i,  t   R_0g333333@i   i   g      @g      ?t   ai   t   bg'Ug$
@g&i?gW/G@t   r_ing @t   r_outgr@i
   gDl?g^I+ @gE@g^I+@t   x_widtht   y_widthi-  gףp=
@g)\(@g      @g?%D?t   radiusg6'L*	?g^?t   ellipgң@i  t   x_breakt   alpha_1t   alpha_2t   deltag     @.@t   x_cutoffg    ~Ait   betag?t   degreet   c0t   c1t   c2i$   t   c0_0t   c1_0t   c2_0t   c0_1t   c0_2t   c1_1i@   t   modelc         C   s  t  r$ |  d t k r$ t j   n  |  d |  d   } x |  d D] } t |  d k rs t t d	 |   } nS t t d
 |   } | d j j | d j  r | d j	 | d j  | d <n  | j
 |   } g  | j   D] } | j ^ q } t | | d    | d  qC Wd  S(   NR#   R'   R(   i   t   xt   yt   zi(   RY   RZ   (   RY   RZ   R[   (   t	   HAS_SCIPYt   SCIPY_MODELSt   pytestt   skipt   lenR    t   zipt   unitt   is_equivalentt   tot   without_units_for_datat   valuest   valueR   (   RX   t   mt   argst   kwargst   mnuRY   (    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt"   test_models_evaluate_without_units   s    !"c         C   sl   t  r$ |  d t k r$ t j   n  |  d |  d   } x- |  d D]! } t | | d    | d  qC Wd  S(   NR#   R'   R(   i(   R\   R]   R^   R_   R   (   RX   Rh   Ri   (    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt   test_models_evaluate_with_units   s
    c   	      C   s  t  r$ |  d t k r$ t j   n  |  d |  d   } x |  d D] } t |  d k r | \ } } t j | | g  } | |  } t | t j | | g   qC | \ } } } t j | | g  } t j | | g  } | | |  } t | t j | | g   qC Wd  S(   NR#   R'   R(   i   (   R\   R]   R^   R_   R`   t   ut   QuantityR   (	   RX   Rh   Ri   RY   RZ   t   x_arrt   resultR[   t   y_arr(    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt'   test_models_evaluate_with_units_x_array   s    c         C   s{  t  r$ |  d t k r$ t j   n  i  } xY |  d j   D]G \ } } | d  k s_ | d k rl | | | <q; t j | d  | | <q; Wd | d <|  d |   } x |  d D] } t |  d k r| \ } } t	 j
 | | g  } | |  }	 t |	 t	 j
 | | g   q | \ } } }
 t	 j
 | | g  } t	 j
 | | g  } | | |  }	 t |	 t	 j
 |
 |
 g   q Wd  S(   NR#   R'   RN   i   t   n_modelsR(   (   R\   R]   R^   R_   t   itemst   Nonet   npt   repeatR`   Rn   Ro   R   (   RX   t   paramst   keyRg   Rh   Ri   RY   RZ   Rp   Rq   R[   Rr   (    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt+   test_models_evaluate_with_units_param_array   s(    
c         C   s   t  r$ |  d t k r$ t j   n  |  d |  d   } |  d r x` t t |  d   D]( } | j } t | | |  d |  qY Wn t j t	   | j Wd  QXd  S(   NR#   R'   R)   (
   R\   R]   R^   R_   t   rangeR`   R)   R   t   raisest   NotImplementedError(   RX   Rh   t   it   bbox(    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt   test_models_bounding_box  s    
	 s   not HAS_SCIPYc         C   s  |  d |  d   } t  |  d d  d k r t j d d d  |  d d d j } t j | j d  |  d d d j } | | g } n t j d d d  |  d d d j } t j d d d  |  d d d j } t j | j d | j d  |  d d d j } | | | g } t   } | | |  } x | j D]x } t | |  }	 t | |  }
 |	 j d  k r|
 j d  k s|
 j t
 j k st  qE|
 j j |	 j  sEt  qEWd  S(	   NR#   R'   R(   i    i   i   i   id   (   R`   Rw   t   linspaceRb   t   expRg   R!   t   param_namest   getattrRv   Rn   t   radt   AssertionErrorRc   (   RX   Rh   RY   RZ   Ri   R[   t   fittert   m_newt
   param_namet   par_beft   par_aft(    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt   test_models_fitting.  s"    (*((5	*(X   t   collectionsR    R^   t   numpyRw   t    R   Rn   t   tests.helperR   t   functional_modelsR   R   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t	   powerlawsR   R   R   R   R   t
   polynomialR   R    t   fittingR!   t   scipyR"   t   TrueR\   t   ImportErrort   Falset   JyRh   t   cmt   mmR   t   MJyt   srt   arcsect   kmt   st   Hzt   mst   nmt   AAt   micront   umt   FUNC_MODELS_1Dt   degt   FUNC_MODELS_2Dt   kgt   gt   logt   POWERLAW_MODELSt   onet   POLY_MODELSt   MODELSt   setR]   t   markt   parametrizeRl   Rm   Rs   R{   R   t   skipifR   (    (    (    sL   lib/python2.7/site-packages/astropy/modeling/tests/test_models_quantities.pyt   <module>   sR  (


1+
1%
1%
*
1
 

15
F5
1
8
-.5 
(
-( 
-'( 
-.( 
- 3 
- (5
-(
-(
-(
&#/
*
15
85
8B
17
<
J
8
89(
FN(
4.(	