ó
šßÈ[c           @` sŽ  d  Z  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 m Z d d l m Z d d l m Z m Z d d	 l m Z m Z d d
 l m Z m Z d d l m Z d „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z  d „  Z! d e" f d „  ƒ  YZ# d e" f d „  ƒ  YZ$ d e" f d „  ƒ  YZ% d „  Z& d „  Z' d S(   u   
Tests models.parameters
i    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   assert_allcloset   assert_equalt   assert_array_equalt   assert_almost_equali   (   t   irafutili   (   t   modelst   fitting(   t   Modelt   FittableModel(   t	   Parametert   InputParameterErrori   (   t   get_pkg_data_filenamec         C` s   |  S(   N(    (   t   val(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   setter1   s    c         C` s   | j  |  ƒ |  | j S(   N(   t   do_somethingt   p(   R   t   model(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   setter2   s    t   SetterModelc           B` sY   e  Z d	 Z d
 Z e d d d e ƒ Z e d d d e ƒ Z d „  Z	 d „  Z
 d „  Z RS(   u   xu   yu   zt   defaulti   t   setterc         C` s2   | |  _  t t |  ƒ j ƒ  | |  _ | |  _ d  S(   N(   R   t   superR   t   __init__t   xct   yc(   t   selfR   R   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR   (   s    		c         C` s   | | d | | d S(   Ni   (    (   R   t   xt   yR   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   evaluate.   s    c         C` s   d  S(   N(    (   R   t   v(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR   1   s    (   u   xu   y(   u   z(   t   __name__t
   __module__t   inputst   outputsR   R   R   R   R   R   R    R   (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR       s   		t	   TParModelc           B` s8   e  Z d  Z e ƒ  Z e ƒ  Z d „  Z e d „  ƒ Z RS(   u2   
    A toy model to test parameters machinery
    c         K` s&   t  t |  ƒ j d | d | |  d  S(   Nt   coefft   e(   R   R&   R   (   R   R'   R(   t   kwargs(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR   =   s    c         C` s   d  S(   N(    (   R'   R(   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR    @   s    (	   R"   R#   t   __doc__R   R'   R(   R   t   staticmethodR    (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR&   5   s
   			t	   MockModelc           B` s,   e  Z e d  d d d ƒ Z e d „  ƒ Z RS(   t   nameu   alphaR   i*   c          G` s   d  S(   N(    (   t   args(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR    H   s    (   R"   R#   R   t   alphaR+   R    (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR,   E   s   c          C` s@  t  ƒ  }  |  j } | j d k s' t ‚ t j t ƒ  d | _ Wd QX| j t k s[ t ‚ t	 | _ | j t	 k sy t ‚ | j
 t k sŽ t ‚ d „  | _
 t | _
 | j
 t k s¸ t ‚ | j d k sÍ t ‚ d | _ | j d k së t ‚ d | _ | j d k s	t ‚ | j d k st ‚ d | _ | j d k s<t ‚ d S(   u8   Test if getting / setting of Parameter properties works.u   alphau   betaNc         S` s   d S(   Ni    (    (   t   _(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   <lambda>^   s    i*   i)   (   R,   R/   R-   t   AssertionErrort   pytestt   raisest   AttributeErrort   fixedt   Falset   Truet   tiedt   mint   Nonet   max(   t   mR   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_parameter_propertiesM   s(    							c          C` sJ  t  ƒ  }  |  j } d } d } | | | | k s8 t ‚ | | | | k sR t ‚ | | | | k sl t ‚ | | | | k s† t ‚ | | | | k s  t ‚ | | | | k sº t ‚ | d k  sÌ t ‚ | d k sÞ t ‚ | | k sð t ‚ | | k st ‚ | | k st ‚ | | k s(t ‚ t | ƒ t | ƒ k sFt ‚ d S(   u0   Test if the parameter arithmetic operators work.g      E@i   i-   i)   N(   R,   R/   R2   t   abs(   R=   t   part   numR   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_parameter_operatorso   s"    		t   TestParametersc           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 d „  Z d „  Z d „  Z RS(   c         C` sì   t  d ƒ } t | ƒ } | j ƒ  } | j d ƒ } | j ƒ  t j | d ƒ } | j |  _ t	 | j
 d ƒ } t j | d ƒ |  _ t j d d d d d	 ƒ|  _ t j ƒ  |  _ | j |  _ | j |  _ t j | j | j g ƒ |  _ d
 S(   ué   
        Unit tests for parameters

        Read an iraf database file created by onedspec.identify.  Use the
        information to create a 1D Chebyshev model and perform the same fit.

        Create also a gausian model.
        u   data/idcompspec.fitsu   begini   u   orderi   t   meani   t   stddevi   N(   R   t   opent   readt   splitt   closeR   t   IdentifyRecordR'   t   icoefft   intt   fieldsR	   t   Chebyshev1DR   t
   Gaussian1Dt   gmodelR
   t   LinearLSQFittert   linear_fitterR   t   zR   t   npt   arrayt   yy(   R   t	   test_filet   ft   linest   reclistt   recordt   order(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   setup_classˆ   s    	
c         C` sV   t  j d d d d d g ƒ |  j j (|  j j d d d d	 d
 g k j ƒ  sR t ‚ d S(   ut   
        Tests updating the parameters attribute with a slice.

        This is what fitters internally do.
        i   i   i   i   i   g      @g      @g      @g      @g      @N(   RT   RU   R   t
   parameterst   allR2   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_slice    s    %c         C` sL   d d d d d g |  j  _ |  j  j d d d d d g k j ƒ  sH t ‚ d	 S(
   u'   Tests updating parameters using a list.i   i(   i2   i<   iF   g      >@g      D@g      I@N(   R   R^   R_   R2   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_parameters_as_listª   s    c         C` sU   t  j d d d d d g ƒ |  j _ |  j j d d d d	 d
 g k j ƒ  sQ t ‚ d S(   u)   Tests updating parameters using an array.i   i   i   i   i   g      @g      @g      @g      @g      @N(   RT   RU   R   R^   R_   R2   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_parameters_as_array°   s    $c         C` s=   d |  j  _ |  j  j d d d d d g k j ƒ  s9 t ‚ d S(   u(   Tests updating parameters using a tuple.i   i   i   i   i   N(   i   i   i   i   i   (   R   R^   R_   R2   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_as_tuple¶   s    c         C` sX   d d d d d g |  j  _ d |  j  _ |  j  j d d d d d g k j ƒ  sT t ‚ d S(   u{   
        Tests updating the parameters attribute when a model's
        parameter (in this case coeff) is updated.
        i    g        i   N(   R   R^   t   c0R_   R2   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_model_attr_seq¼   s    c         C` s7   d |  j  _ |  j  j d d d g k j ƒ  s3 t ‚ d S(   u>   Update the parameter list when a model's parameter is updated.i   i   i   N(   RP   t	   amplitudeR^   R_   R2   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_model_attr_numÆ   s    c         C` st   d d d d d g |  j  _ d |  j  j d <|  j  j d d d d d g k j ƒ  sX t ‚ |  j  j d k sp t ‚ d	 S(
   u%   Update the parameters using indexing.i   i   i   i   i   g      $@i    i
   N(   R   R^   R_   R2   Rd   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_set_itemÌ   s    -c         C` s/   t  j t ƒ  d d d g |  j _ Wd QXd S(   uz   
        Tests raising an error when attempting to reset the parameters
        using a list of a different size.
        i   i   i   N(   R3   R4   R   R   R^   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_wrong_size1Ô   s    c         C` s/   t  j t ƒ  d d d g |  j _ Wd QXd S(   uš   
        Tests raising an exception when attempting to update a model's
        parameter (in this case coeff) with a sequence of the wrong size.
        i   i   i   N(   R3   R4   R   R   Rd   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_wrong_size2Ý   s    c         C` s,   t  j t ƒ  d d g |  j _ Wd QXd S(   u‰   
        Tests raising an exception when attempting to update a model's
        parameter and the new value has the wrong shape.
        i   i   N(   R3   R4   R   RP   Rf   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_wrong_shapeæ   s    c         C` sc   |  j  |  j |  j |  j ƒ } t |  j |  j ƒ t | j t j d d d d d g ƒ d d
 ƒd	 S(   u[   
        Test the fitter modifies model.parameters.

        Uses an iraf example.
        g`‡NÚ²@gŸ†g±'Ç@g¼$:PH)@g‘ˆi#6¨ü¿gÿæg+„áì?t   rtoli
   iþÿÿÿNg{®Gáz„?(	   RR   R   R   R   t   printR   R^   RT   RU   (   R   t	   new_model(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_par_against_irafï   s    	c         C` sT   i d d 6d d 6d d 6d d 6} t  j d	 |  } t | j d d d d g ƒ d  S(
   Ni   u   c0i   u   c1i   u   c2i   u   c3i   (   R	   t   Polynomial1DR   R^   (   R   t   dt   p1(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   testPolynomial1D   s    "c         C` s¬   t  j d d d ƒ} t | j d d d d d d d d d d d d g ƒ t | j d d d g ƒ d d d g | _ t | j d d d d d d d d d d d d g ƒ d  S(   Ni   t   n_modelsg        i    i
   g      $@(   R	   Rp   R   R^   R   Rd   (   R   Rr   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_poly1d_multiple_sets  s    c         C` s`   t  j d d d ƒ} d d g | j d *t | j d d d d d d d d d d d d g ƒ d S(	   u5   
        Test assigning to a parameter slice
        i   Rt   i
   i   g      $@g        i    N(   R	   Rp   Rd   R   R^   (   R   Rr   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_par_slicing  s    c         C` sM   t  j d d ƒ } d | _ t | j d d d d d d d d d d g
 ƒ d  S(   Nt   degreei   i   i    (   R	   t   Polynomial2Dt   c0_0R   R^   (   R   t   p2(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_poly2d  s    	c         C` sž   i d d g d 6d d g d 6d d g d 6d d g d	 6d d g d
 6d d g d 6} t  j d |  } t | j d d d d d d d d d d d d g ƒ d  S(   Ni   i   u   c0_0i   u   c1_0i   i   u   c2_0u   c0_1u   c0_2u   c1_1(   R	   Rx   R   R^   (   R   t   kwRz   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_poly2d_multiple_sets  s
    **c         C` sI   t  j d ƒ } d | _ | j d k s- t ‚ | j j d k sE t ‚ d  S(   Ni   i   (   R	   t   Shiftt   offsetR2   t   value(   R   t   sh1(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_shift_model_parameters1d#  s    	c         C` se   t  j d d g ƒ } d d g | _ t j | j d d g k ƒ sH t ‚ t | j j d d g ƒ d  S(   Ni   i   (   R	   t   Scalet   factorRT   R_   R2   R   R€   (   R   t   sc1(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_scale_model_parametersnd)  s    $c         C` s8   t  j d ƒ } t j t ƒ  d d g | _ Wd  QXd  S(   Ni   i   (   R	   R~   R3   R4   R   R   (   R   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_parameters_wrong_shape/  s    (   R"   R#   R]   R`   Ra   Rb   Rc   Re   Rg   Rh   Ri   Rj   Rk   Ro   Rs   Ru   Rv   R{   R}   R‚   R†   R‡   (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyRC   †   s(   		
				
																		t   TestMultipleParameterSetsc           B` s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C` s›   t  j d d d ƒ |  _ t  j d  d … d  d … f \ |  _ |  _ t  j |  j |  j g ƒ j |  _ t	 j
 d d g d d g d d	 d
 g d d ƒ|  _ d  S(   Ni   i
   gš™™™™™¹?i   i   g      @gÍÌÌÌÌÌ@RE   gš™™™™™Ù?gffffffæ?Rt   i   (   RT   t   aranget   x1t   mgridR   R   RU   t   Tt   x11R	   RO   RP   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR]   7  s
    +!'c         C` sx   d d g |  j  _ t |  j  j t j d d g d d g d d g g ƒ ƒ t j |  j  j d d d d d d g k ƒ d	 S(
   uX   
        Test that a change to one parameter as a set propagates to param_sets.
        i   i
   g      ð?g      @gÍÌÌÌÌÌ@gš™™™™™Ù?gffffffæ?g      $@N(   RP   Rf   R   t
   param_setsRT   RU   R_   R^   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_change_par>  s    		c         C` sv   d |  j  j d <t |  j  j t j d d g d d g d d g g ƒ ƒ t j |  j  j d d	 d d d d g k ƒ d
 S(   ug   
        Test that a change to one single parameter in a set propagates to
        param_sets.
        i   i    g      &@i
   g      @gÍÌÌÌÌÌ@gš™™™™™Ù?gffffffæ?g      $@N(   RP   Rf   R   RŽ   RT   RU   R_   R^   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_change_par2M  s    		c         C` sZ   d d d d d d g |  j  _ t |  j  j j d d g ƒ t |  j  j j d	 d g ƒ d  S(
   Ni   i
   i	   gÍÌÌÌÌÌ@gš™™™™™Ù?gffffffæ?g      *@g      $@g      "@(   RP   R^   R   Rf   R€   RD   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_change_parameters]  s    (   R"   R#   R]   R   R   R‘   (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyRˆ   5  s   			t   TestParameterInitializationc        
   B` s“  e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j j d d  d
 d d g f d
 d g d f d
 d d g d d g f d
 d g d d d g f g ƒ d „  ƒ Z e
 j j d i d d 6i d d 6i d d 6d d 6g ƒ d „  ƒ Z e
 j j d i d d 6i d d 6i d d 6d d 6g ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(!   u³   
    This suite of tests checks most if not all cases if instantiating a model
    with parameters of different shapes/sizes and with different numbers of
    parameter sets.
    c         C` s¾   t  d d ƒ } t | ƒ d k s' t ‚ | j t k s< t ‚ t j | j d g d g g k ƒ sf t ‚ t j | j d d g k ƒ sŠ t ‚ | j	 j
 d k s¢ t ‚ | j j
 d k sº t ‚ d  S(   Ni
   i   (    (    (   R&   t   lenR2   t   model_set_axisR7   RT   R_   RŽ   R^   R'   t   shapeR(   (   R   t   t(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt#   test_single_model_scalar_parametersj  s    *$c         C` s)  t  d d d g ƒ } t | ƒ d k s- t ‚ | j t k sB t ‚ t j | j j t j	 ƒ sc t ‚ t | j ƒ d k s~ t ‚ t j
 | j d d g k ƒ s£ t ‚ t j
 | j d d d g g k ƒ sÎ t ‚ t j
 | j d d d g k ƒ sõ t ‚ | j j d k st ‚ | j j d k s%t ‚ d  S(   Ni
   i   i   i    (    (   i   (   R&   R“   R2   R”   R7   RT   t
   issubdtypeRŽ   t   dtypet   object_R_   R^   R'   R•   R(   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt-   test_single_model_scalar_and_array_parameterss  s    !%+'c         C` sÜ   t  d d g d d g ƒ } t | ƒ d k s3 t ‚ | j t k sH t ‚ t j | j d d g g d d g g g k ƒ s~ t ‚ t j | j d d d d g k ƒ s¨ t ‚ | j	 j
 d k sÀ t ‚ | j j
 d k sØ t ‚ d  S(   Ni
   i   i   i   (   i   (   i   (   R&   R“   R2   R”   R7   RT   R_   RŽ   R^   R'   R•   R(   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt%   test_single_model_1d_array_parameters  s    6*c      	   C` s8   t  j t ƒ # t d d g d d d g ƒ } Wd  QXd  S(   Ni   i   i   i   i   (   R3   R4   R   R&   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt6   test_single_model_1d_array_different_length_parametersˆ  s    c      
   C` s  t  d d g d d g g d d g d d g g ƒ } t | ƒ d k sK t ‚ | j t k s` t ‚ t j | j d d g d d g g g d d g d d g g g g k ƒ s® t ‚ t j | j d d d d d d d d g k ƒ sä t ‚ | j	 j
 d	 k sü t ‚ | j j
 d
 k st ‚ d  S(   Ni
   i   i   i(   i   i   i   i   (   i   i   (   i   i   (   R&   R“   R2   R”   R7   RT   R_   RŽ   R^   R'   R•   R(   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt%   test_single_model_2d_array_parameters  s    3$*6c         C` sÀ  t  j d d g d d g d d g g ƒ } t  j d d g d	 d
 g d d g g ƒ } t | | ƒ } t | ƒ d k s{ t ‚ | j t k s t ‚ t  j | j d d g d d g d d g g g d d g d	 d
 g d d g g g g k ƒ sð t ‚ t  j | j	 d d d d d d d d d	 d
 d d g k ƒ s2t ‚ | j
 j d k sJt ‚ | j j d k sbt ‚ t | j | j ƒ } t | ƒ d k st ‚ | j t k s¤t ‚ t  j | j d d d g d d d g g g d d	 d g d d
 d g g g g k ƒ sþt ‚ t  j | j	 d d d d d d d d	 d d d
 d g k ƒ s@t ‚ | j
 j d k sXt ‚ | j j d k spt ‚ t j t ƒ  t | | j ƒ Wd  QXt j t ƒ  t | j | ƒ Wd  QXd  S(   Ni
   i   i   i(   i2   i<   i   i   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   RT   RU   R&   R“   R2   R”   R7   R_   RŽ   R^   R'   R•   R(   RŒ   R3   R4   R   (   R   R'   R(   R–   t   t2(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt*   test_single_model_2d_non_square_parameters—  s0    **-3$*0$c         C` sA  t  d d d g d d d g g d d d	 g ƒ } t | ƒ d k sH t ‚ | j t k s] t ‚ t | j ƒ d k sx t ‚ t j | j j t j	 ƒ s™ t ‚ t j
 | j d
 d d d g d d d g g g k ƒ sÖ t ‚ t j
 | j d d d d	 g g k ƒ st ‚ t j
 | j d d d d d d d d d	 g	 k ƒ s=t ‚ d  S(   Ni
   i   i   i(   i2   i<   i   i   i   i    (   R&   R“   R2   R”   R7   RŽ   RT   R˜   R™   Rš   R_   R^   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt-   test_single_model_2d_broadcastable_parameters¶  s    0!=.u   p1u   p2i   i   i   i   i   c      	   C` s-   t  j t ƒ  t | | d d ƒWd  QXd  S(   NRt   i   (   R3   R4   R   R&   (   R   Rr   Rz   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt*   test_two_model_incorrect_scalar_parametersÀ  s    u   kwargsu   n_modelsi    u   model_set_axisc         C` sÙ   t  d d g d d g |  } t | ƒ d k s6 t ‚ | j d k sK t ‚ t j | j d d g d d g g k ƒ s{ t ‚ t j | j d d d d g k ƒ s¥ t ‚ | j j	 d k s½ t ‚ | j
 j	 d k sÕ t ‚ d  S(   Ni
   i   i   i   i    (    (    (   R&   R“   R2   R”   RT   R_   RŽ   R^   R'   R•   R(   (   R   R)   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt    test_two_model_scalar_parametersÇ  s    0*c         C` sY  t  d d g d d g d d g g |  } t | ƒ d k sB t ‚ | j d k sW t ‚ t | j ƒ d k sr t ‚ t j | j j t j ƒ s“ t ‚ t j	 | j d d g d g g k ƒ sÁ t ‚ t j	 | j d d d g d d g g k ƒ sõ t ‚ t j	 | j
 d d d d d d g k ƒ s%t ‚ | j j d k s=t ‚ | j j d	 k sUt ‚ d  S(
   Ni
   i   i   i   i   i   i    (    (   i   (   R&   R“   R2   R”   RŽ   RT   R˜   R™   Rš   R_   R^   R'   R•   R(   (   R   R)   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt*   test_two_model_scalar_and_array_parametersÓ  s    *!.40c         C` sP  t  d d g d d g g d d g d d g g d	 d ƒ} t | ƒ d k sQ t ‚ | j d
 k sf t ‚ t j | j d d g d d g g d d g d d g g g k ƒ s® t ‚ t j | j d d d d d d d d g k ƒ sä t ‚ | j j	 d k sü t ‚ | j
 j	 d k st ‚ t  d d d g d d d g g d d d g d d d g g d	 d ƒ} t | ƒ d k sqt ‚ | j d
 k s†t ‚ t j | j d d d g d d d g g d d d g d d d g g g k ƒ sÚt ‚ t j | j d d d d d d d d d d d d g k ƒ st ‚ | j j	 d k s4t ‚ | j
 j	 d k sLt ‚ d  S(   Ni
   i   i   i(   i   i   i   i   Rt   i    i2   i<   i   i   (   i   (   i   (   i   (   i   (   R&   R“   R2   R”   RT   R_   RŽ   R^   R'   R•   R(   (   R   R–   RŸ   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt"   test_two_model_1d_array_parametersâ  s$    9!'6''-$c         C` s!  t  j t ƒ Z t d d g d d g g d d g d d g g g d	 d
 d g d d d g g d d ƒWd  QXt d
 d g d d g g d d g d d g g g d d g d d g g d d ƒ} t | ƒ d k sÔ t ‚ | j d k sé t ‚ t | j ƒ d k st ‚ t j	 | j j
 t j ƒ s%t ‚ t j | j d d
 d g d d g g d d g d d g g g k ƒ sqt ‚ t j | j d d d g g d d g g g k ƒ s«t ‚ t j | j d
 d d d d d d d d d d d g k ƒ sít ‚ | j j d k st ‚ | j j d k st ‚ d  S(   Ni   i   i   i   i   i   i   i   i	   i
   i   i   i   i   Rt   i   i   i(   i2   i<   iF   iP   i    (   i   i   (   i   (   R3   R4   R   R&   R“   R2   R”   RŽ   RT   R˜   R™   Rš   R_   R^   R'   R•   R(   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt/   test_two_model_mixed_dimension_array_parameters÷  s     0+0!!%':$c         C` s  t  d d g d d g g d d g d d g g g d	 d
 g d d g g d d g d d g g g d d
 ƒ} t | ƒ d
 k s t ‚ | j d k s– t ‚ t j | j d d g d d g g d d g d d g g g d	 d
 g d d g g d d g d d g g g g k ƒ st ‚ t j | j d d d d d d d d d	 d
 d d d d d d g k ƒ s\t ‚ | j j	 d k stt ‚ | j
 j	 d k sŒt ‚ d  S(   Ni
   i   i   i(   i2   i<   iF   iP   i   i   i   i   i   i   i   i   Rt   i    (   i   i   (   i   i   (   R&   R“   R2   R”   RT   R_   RŽ   R^   R'   R•   R(   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt"   test_two_model_2d_array_parameters  s    09!*$*c         C` sû  t  j d d g d d g g d d g d d g g g ƒ } t  j | d	 d
 ƒ } t  j d d g d
 d g g ƒ } t  j | d	 d ƒ } t | | d d ƒ} t | ƒ d k s± t ‚ | j d k sÆ t ‚ t | j ƒ d k sá t ‚ t  j | j j	 t  j
 ƒ st ‚ t  j | j d	 d d g d d g g d d g d d g g g k ƒ sNt ‚ t  j | j d d d
 g d d g g g k ƒ s…t ‚ t  j | j d d d d d d d d d d
 d d g k ƒ sÇt ‚ | j j d k sßt ‚ | j j d k s÷t ‚ d  S(   Ni
   i   i   i(   i2   i<   iF   iP   i    i   i   i   i   R”   iÿÿÿÿ(   i   i   (   i   (   RT   RU   t   rollaxisR&   R“   R2   R”   RŽ   R˜   R™   Rš   R_   R^   R'   R•   R(   (   R   R'   R(   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt%   test_two_model_nonzero_model_set_axis  s     9!!%'7$c         C` s†   t  j t ƒ 0 t d d d g d d g g d d
 d d ƒ Wd  QXt  j t ƒ 0 t d d d g d d g g d d d d	 ƒ Wd  QXd  S(   NR'   i   i   i   i   R(   Rt   R”   i    (   i   i   i   (   i   i   i   (   R3   R4   R   R&   (   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_wrong_number_of_params-  s    1c         C` sŠ   t  j t ƒ 2 t d d d g d d g g d d d d ƒ } Wd  QXt  j t ƒ 2 t d d d g d d g g d d d d	 ƒ } Wd  QXd  S(
   NR'   i   i   i   i   R(   Rt   R”   i    (   R3   R4   R   R&   (   R   R=   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_wrong_number_of_params23  s    3c      	   C` sJ   t  j t ƒ 5 t t j d d g d d g g ƒ d d d ƒ} Wd  QXd  S(   Ni   i   i   i   R”   i    (   R3   R4   R   R&   RT   RU   (   R   R–   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_array_parameter19  s    c      	   C` sJ   t  j t ƒ 5 t t j d d g d d g g ƒ d d d ƒ} Wd  QXd  S(	   Ni   i   i   i   i   R”   i    (   i   i   i   (   R3   R4   R   R&   RT   RU   (   R   R=   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_array_parameter2=  s    'c         C` sö   t  d d g d d g g d d g d t ƒ} t | ƒ d k sE t ‚ | j j d
 k s] t ‚ | j j d k su t ‚ t j | j	 j
 t j ƒ s– t ‚ t j | j	 d d d g d d g g k ƒ sÊ t ‚ t j | j	 d d d g k ƒ sò t ‚ d	 S(   u†   
        Test multiple parameter model with array-valued parameters of the same
        size as the number of parameter sets.
        i   i   i   i   i   i   R”   i    N(   i   i   (   i   (   R&   R7   R“   R2   R'   R•   R(   RT   R˜   RŽ   R™   Rš   R_   (   R   t   t4(    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_array_parameter4B  s    -!4(   u   p1u   p2(   i   i   (   R"   R#   R*   R—   R›   Rœ   R   Rž   R    R¡   R3   t   markt   parametrizeR¢   R£   R¤   R¥   R¦   R§   R©   Rª   R«   R¬   R­   R¯   (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR’   c  s4   							
		
9*#
#								c          C` s·   d }  t  j d d d g d d d g g ƒ } t  j d d d d g d d d d g g ƒ } d t f d „  ƒ  Y} x@ t j |  | | f ƒ D]& } t j t ƒ  | | Œ  Wd	 QXq‰ Wd	 S(
   uª   
    Tests that in a model with 3 parameters that do not all mutually broadcast,
    this is determined correctly regardless of what order the parameters are
    in.
    i   i   i   i   i   i   t	   TestModelc           B` s,   e  Z e ƒ  Z e ƒ  Z e ƒ  Z d  „  Z RS(   c         W` s   d  S(   N(    (   R   R.   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR    a  s    (   R"   R#   R   Rr   Rz   t   p3R    (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyR²   \  s   			N(   RT   RU   R   t	   itertoolst   permutationsR3   R4   R   (   t   at   bt   cR²   R.   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt    test_non_broadcasting_parametersQ  s    '-	c          C` sŽ   t  j j d ƒ j d ƒ }  t d d t  j ƒ } xW |  D]O \ } } | | _ | | _ t | | | ƒ | d d | t  j d d ƒ q7 Wd  S(   Ni   i
   i   iÿÿÿÿi   i   (   i
   i   (	   RT   t   randomt   randt   reshapeR   t   piR   R   R   (   t   parsR   R   R   (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   test_setterj  s    		((   R*   t
   __future__R    R   R   R   R´   R3   t   numpyRT   t   numpy.testingR   R   R   R   t    R   R	   R
   t   coreR   R   R^   R   R   t
   utils.dataR   R   R   R   R&   R,   R>   RB   t   objectRC   Rˆ   R’   R¹   R¿   (    (    (    sE   lib/python2.7/site-packages/astropy/modeling/tests/test_parameters.pyt   <module>   s,   ""			"	¯.î	