ó
ßČ[c           @` sč   d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d d l	 m	 Z	 m
 Z
 m Z d d l m Z m Z d d l m Z d  d l m Z m Z y d  d l Z Wn e k
 rÇ e Z n Xe Z d	 e f d
     YZ d S(   i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsNi   (   t   convolvet   convolve_fftt   convolve_modelsi   (   t   modelst   fitting(   t   NumpyRNGContext(   t   assert_allcloset   assert_almost_equalt   TestConvolve1DModelsc           B` s(  e  Z e j j d  d d g  e j j d  d     Z e j j d  d d g  e j j d  d     Z e j j d  d d g  e j j d  d     Z e j j d  d d g  d    Z	 e j j d  d d g  d    Z
 e j j d  d d g  e j j d  d	     Z RS(
   u   modeu   convolve_fftu   convolveu   not HAS_SCIPYc         C` s   t  j d d d  } t  j d d d  } t | | d | } t j d d  } t d j |   } t | | |  d d d  S(	   Ni   i    t   modeiű˙˙˙i   u   {}(model(x), kernel(x))t   atolgńhăľřä>(   R   t
   Gaussian1DR   t   npt   aranget   evalt   formatR
   (   t   selfR   t   kernelt   modelt
   model_convt   xt   ans(    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt,   test_is_consistency_with_astropy_convolution   s    c         C` sŻ   d d l  m } t j d d d  } t j d d d  } t | | d | } t j d d  } | | |  | |  d d } t | | |  | |  j   d d	 d  S(
   Ni    (   t   fftconvolvei   R   iű˙˙˙i   u   sameR   gńhăľřä>(	   t   scipy.signalR   R   R   R   R   R   R
   t   sum(   R   R   R   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt   test_against_scipy"   s    !c         C` sĽ   d d l  m } t j d d d  } t j d d d  } t | | d | d t } t j d d  } | | |  | |  d d } t | | |  d	 d
 d  S(   Ni    (   R   i   R   t   normalize_kerneliű˙˙˙i   u   sameR   gńhăľřä>(	   R   R   R   R   R   t   FalseR   R   R
   (   R   R   R   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt+   test_against_scipy_with_additional_keywords/   s    	!c         C` sÔ   t  j d t j d t j  d d  } t  j d t j d t j  d d  } t | | d | d t } t  j d d t j t j  d t j d   } t j d d  } t	 | |  | |  d	 d
 d S(   uä   
        Test that convolving N(a, b) with N(c, d) gives N(a + c, b + d),
        where N(., .) stands for Gaussian probability density function,
        in which a and c are their means and b and d are their variances.
        i   i   i   R   R   i   iű˙˙˙i   R   güŠńŇMbP?N(
   R   R   t   matht   sqrtR   t   piR   R    R   R
   (   R   R   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt   test_sum_of_gaussians=   s    ))	2c         C` s   t  j   } t  j   } t | | d | } t j d d d  } | d | d k  | d | d k } t | | |  d d d  S(   NR   i˙˙˙˙i   ic   i    R   güŠńŇMbP?(   R   t   Box1DR   R   t   linspaceR
   (   R   R   R   R   R   R   R   (    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt   test_convolve_box_modelsN   s    'c      	   C` sŕ   t  j   } t  j   } t j d d d  } t  j d d  } t d  * | |  t j j d t |   } Wd QXt	 | | d	 | d
 t
 } t j   } | | | |  }	 t j |	 |  |  }
 t |
 d d d d S(   u:   
        test that a convolve model can be fitted
        iű˙˙˙i   ic   t	   amplitudei
   i{   t   sizeNR   R   g        t   decimali   (   R   R&   R   R   R'   R	   t   randomt   normalt   lenR   R    R   t   LevMarLSQFittert   meanR   (   R   R   t   b1t   g1R   t
   fake_modelt	   fake_datat
   init_modelt   fittert   fitted_modelt   me(    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt   test_fitting_convolve_modelsX   s    +(   t   __name__t
   __module__t   pytestt   markt   parametrizet   skipifR   R   R!   R%   R(   R9   (    (    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyR      s   
$$
(   t
   __future__R    R   R   R   R"   t   numpyR   R<   R   R   R   t   modelingR   R   t
   utils.miscR	   t   numpy.testingR
   R   t   scipyt   ImportErrorR    t	   HAS_SCIPYt   Truet   objectR   (    (    (    sM   lib/python2.7/site-packages/astropy/convolution/tests/test_convolve_models.pyt   <module>   s   "
