๓
฿ศ[c           @` sh  d  Z  d d l m Z m Z m Z 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 d d	 l m Z d d
 l m Z d d l m Z y d d l m Z e Z Wn e k
 rำ e Z n Xd   Z e j j d  d    Z e j j d  d    Z e j j d  d    Z e j j d  d    Z  e j j d  d    Z! d S(   u>   
Tests that relate to fitting models with quantity parameters
i    (   t   absolute_importt   unicode_literalst   divisiont   print_functionNi   (   t
   Gaussian1Di   (   t   units(   t
   UnitsError(   t   assert_quantity_allclose(   t   NumpyRNGContext(   t   fitting(   t   optimizec       	   C` s   t  d  \ t j d d d  }  d t j d |  d d d  } | t j j d
 d |  j  7} Wd  QX|  t j }  | t j	 } |  | f S(   Ni90  g      ภg      @iะ  i   g      เฟgอฬฬฬฬฬ๔?i   g้?g        gษ?g|ฎGแzไ?(
   R   t   npt   linspacet   expt   randomt   normalt   shapet   ut   mt   Jy(   t   xt   y(    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt   _fake_gaussian_data    s    #%u   not HAS_SCIPYc          C` s   t    \ }  } t   } t j   } | | |  |  } t | j d t j d d t | j d t j	 d d t | j
 d t j	 d d d  S(   Ni   t   rtolgฉ?gอฬฬฬฬฬ๔?g้?(   R   R   R	   t   LevMarLSQFitterR   t	   amplitudeR   R   t   meanR   t   stddev(   R   R   t   g_initt   fit_gt   g(    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt   test_fitting_simple/   s    	c          C` sธ   t    \ }  } t d d t j d d t j d d t j  } t j   } | | |  |  } t | j	 d t j
 d d t | j d	 t j d d t | j d
 t j d d d  S(   NR   g      ๐?R   i   R   i   R   gฉ?gอฬฬฬฬฬ๔?g้?(   R   R   R   t   mJyt   cmt   mmR	   R   R   R   R   R   R   R   (   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt    test_fitting_with_initial_values@   s    0c          C` s๓   t  d d t j d d t j d d t j  }  t j   } t j t	  ) } | |  d d d g d d	 d
 g  Wd QX| j
 j d d k s t  t j t	  0 } | |  d d d g t j d d	 d
 g  Wd QX| j
 j d d k s๏ t  d S(   uD   
    Raise an error if the model has units but the data doesn't
    R   g      ๐?R   i   R   i   i   i   i   i   Ni    u8   'cm' (length) and '' (dimensionless) are not convertibleuH   'mJy' (spectral flux density) and '' (dimensionless) are not convertible(   R   R   R    R!   R"   R	   R   t   pytestt   raisesR   t   valuet   argst   AssertionErrorR   (   R   R   t   exc(    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt   test_fitting_missing_data_unitsQ   s    0(/c          C` sA  t    \ }  } t d d d d d d  } t j   } | | |  |  } t | j d t j d d t | j d	 t j	 d d t | j
 d
 t j	 d d t d d d d t j	 d d t j	  } t j   } | | |  |  } t | j d t j d d t | j d	 t j	 d d t | j
 d
 t j	 d d d S(   u=   
    Proceed if the data has units but the model doesn't
    R   g      ๐?R   i   R   i   R   gฉ?gอฬฬฬฬฬ๔?g้?N(   R   R   R	   R   R   R   R   R   R   R   R   (   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt    test_fitting_missing_model_unitsd   s    )c       
   C` sค   t  d d t j d d t j d d t j  }  t j   } t j t	  7 } | |  d d d g t j
 d d	 d
 g t j  Wd QX| j j d d k s  t  d S(   uF   
    Raise an error if the data and model have incompatible units
    R   g      ๐?R   i   R   i   i   i   i   i   Ni    u5   'Hz' (frequency) and 'm' (length) are not convertible(   R   R   R   R   R!   R	   R   R$   R%   R   t   HzR&   R'   R(   (   R   R   R)   (    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt   test_fitting_incompatible_units}   s
    06("   t   __doc__t
   __future__R    R   R   R   t   numpyR   R$   t   modelsR   t    R   R   R   t   tests.helperR   t   utilsR   R	   t   scipyR
   t   Truet	   HAS_SCIPYt   ImportErrort   FalseR   t   markt   skipifR   R#   R*   R+   R-   (    (    (    sM   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_fitting.pyt   <module>   s(   "

	