
    IR-eK                     2   d 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mZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ  ej        d	          Z ej        eed
z   g          Z ej        d                              d          ZdZ G d de          Z ej!        "                    deeeeg          d             Z#ej!        "                    deeeeg          d             Z$ej!        "                    deeeeg          d             Z%ej!        "                    deeeg          d             Z&d Z'd Z(d Z)ej!        "                    deeeeg          d             Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d  Z2d! Z3d" Z4d# Z5 G d$ d%          Z6dS )&zO
This module tests model set evaluation and fitting for some common use cases.
    N)assert_allclose)Model)LinearLSQFitter)
Chebyshev1DChebyshev2D	Hermite1D	Hermite2D
Legendre1D
Legendre2DLinear1DPlanar2DPolynomial1DPolynomial2D)	Parameter)NumpyRNGContext   
      )   r      i7  c                   h     e Zd ZdZdZdZ e            Z e            Z fdZ	e
d             Z xZS )	TParModelz2
    A toy model to test parameters machinery
       )xc                 @     t                      j        d||d| d S )N)coeffe )super__init__)selfr   r   kwargs	__class__s       Flib/python3.11/site-packages/astropy/modeling/tests/test_model_sets.pyr    zTParModel.__init__.   s-    4u44V44444    c                     | |z  |z   S )Nr   )r   r   r   s      r$   evaluatezTParModel.evaluate1   s    5y1}r%   )__name__
__module____qualname____doc__n_inputsoutputsr   r   r   r    staticmethodr'   __classcell__)r#   s   @r$   r   r   #   s         
 HGIKKE	A5 5 5 5 5   \    r%   r   model_classc                    d}d}ddgg}ddgg} | ddd          } | ddd          } | d||||          }d}t          j        t          |          5   |t                     ddd           n# 1 swxY w Y    |t          d	
          }	|	j        |         |k    sJ t          |	dddf          |t                               t          |	dddf          |t                                |t          d	
          }	|	j        |         |k    sJ t          |	dddddf          |t                               t          |	dddddf          |t                                |t          d	
          }	|	j        |         |k    sJ t          |	dddddddf          |t                               t          |	dddddddf          |t                               dS )zm
    Test that a model initialized with model_set_axis=1
    can be evaluated with model_set_axis=False.
    r   r   r   c0c1r3   r4   n_modelsmodel_set_axis?For model_set_axis=1, all inputs must be at least 2-dimensionalmatchNFr7   r   )pytestraises
ValueErrorr   shaper   xxxxx)
r0   r6   
model_axisr3   r4   t1t2p1MESSAGEys
             r$   test_model1d_axis_1rH   6   sn    HJa&Ba&B	Q1	#	#	#B	Q1	#	#	#B	Q2"x
	S	S	SBPG	z	1	1	1  
1               	1U###A7:(****AaaadGRRUU###AaaadGRRUU###
2e$$$A7:(****AaaaAAAgJ2'''AaaaAAAgJ2'''
3u%%%A7:(****AaaaAAAqqqjM22c77+++AaaaAAAqqqjM22c77+++++s   A55A9<A9c                 F    | dg dggg dggdd          } | ddd          } | ddd	          } | ddd
          }d}t          j        t          |          5   |t                     ddd           n# 1 swxY w Y   t          j        t          |          5   |t                     ddd           n# 1 swxY w Y    |t          d          }|j        dk    sJ t          |dddddf                                          |t                               t          |dddddf                                          |t                               t          |dddddf                                          |t                               dS )m
    Test that a model initialized with model_set_axis=2
    can be evaluated with model_set_axis=False.
    r   )r   r   r   )r         r   r   r5   r   r2   rK   rL   z?For model_set_axis=2, all inputs must be at least 3-dimensionalr9   NFr;   r   r   r   r   )r<   r=   r>   r   r@   r?   r   flatten)r0   rE   rC   rD   t3rF   rG   s          r$   test_model1d_axis_2rP   \   s@    
				{m,,, 01Q
 
 
B 
Q1	$	$	$B	Q1	$	$	$B	Q1	$	$	$BPG	z	1	1	1  
1               
z	1	1	1  
2               	1U###A7iAaaaAgJ&&((""Q%%000AaaaAgJ&&((""Q%%000AaaaAgJ&&((""Q%%00000s$    A==BB#C  CCc                     | ddd          }ddg|_         ddg|_         | ddd          } | ddd          }d}t          j        t          |          5   |t
                     d	d	d	           n# 1 swxY w Y    |t                    }t          |          dk    sJ t          |d          |t          d                              t          |d          |t          d                               |t
          d
          }t          |          dk    sJ t          |d          |t
                               t          |d          |t
                                |t          d
          }t          |          dk    sJ t          |d          |t                               t          |d          |t                                |t          d
          }t          |d          |t                               t          |d          |t                               t          |          dk    sJ d	S )zm
    Test that a model initialized with model_set_axis=0
    can be evaluated with model_set_axis=False.
    r   r   r   r6   r7   r   r2   =Input argument 'x' does not have the correct dimensions in .*r9   NFr;   )
r3   r4   r<   r=   r>   r   r@   lenr   rA   )r0   rE   rC   rD   rF   rG   s         r$   test_model1d_axis_0rU   y   s[    
Q1	5	5	5BFBEFBE	Q1	#	#	#B	Q1	#	#	#BNG	z	1	1	1  
1               	2Aq66Q;;;;AaD""RU))$$$AaD""RU))$$$
1U###Aq66Q;;;;AaD""Q%%   AaD""Q%%   
2e$$$Aq66Q;;;;AaD""R&&!!!AaD""R&&!!!
3u%%%AAaD""S''"""AaD""S''"""q66Q;;;;;;s   A77A;>A;c           
          | ddg dggg dggg dggg dggdd          } | ddd	dd
d          } | dddddd          } | dddd
dd          }|j         j        dk    sJ  |t          t          d          }|j        dk    sJ t          |ddddd	f                                          |t          t                               t          |dddddf                                          |t          t                               t          |dddddf                                          |t          t                               dS )rJ   r   r   r   r   )r   r      )rX         )r   r   r   r   r   )c0_0c0_1c1_0c1_1r6   r7   r   rX   )r[   r\   r]   r^   r   rY   rZ   r   r   r   Fr;   rM   N)r[   r?   r   r   rN   )r0   p2rC   rD   rO   rG   s         r$   test_model2d_axis_2ra      s    
		yyk]yyk]yyk]yyk]	
 	
 	
B 
Q	:	:	:B	Q	:	:	:B	Q	:	:	:B7=I%%%%
1a&&&A7iAaaaAgJ&&((""Q((333AaaaAgJ&&((""Q((333AaaaAgJ&&((""Q((33333r%   c                  p   t          dddgddgdd          } t          ddd          }t          ddd          }d}t          j        t          |	          5   | t                     d d d            n# 1 swxY w Y   t          j        t          |	          5   | t
                     d d d            n# 1 swxY w Y   t
          j        } | |          }t          |d d d
f          ||d d d
f                              t          |d d df          ||d d df                              d S )Nr   r   r   r   r5   r2   rS   r9   r   )r   r<   r=   r>   r   r@   Tr   )rE   rC   rD   rF   xxtrG   s         r$   test_negative_axisrf      s   	aQF1v"	M	M	MB	aA!	$	$	$B	aA!	$	$	$BNG	z	1	1	1  
1               
z	1	1	1  
2               $C
3AAaaadGRRAAAqD	]]+++AaaadGRRAAAqD	]]+++++s$   A77A;>A;B::B>B>c                     t          ddd          } | j        j        dk    sJ | j        j        dk    sJ t          ddd          }|j        j        dk    sJ |j        j        dk    sJ t          dddgddgdd	          }|j        j        d
k    sJ |j        j        d
k    sJ ddg}ddg}t	          j        ddgddgg          }t	          j        ddgddgg          }t          ||g||gdd          }|j        j        dk    sJ |j        j        dk    sJ t          ||gg||ggdd          }|j        j        dk    sJ |j        j        dk    sJ t          ||g||gdd          }|j        j        dk    sJ |j        j        dk    sJ t          ||gddgdd          }|j        j        dk    sJ |j        j        d
k    sJ d S )Nr   r   r   rR   r_   r   r   r   rc   r5   )r   r   rK   rL   (   2   <   F   P   )r   r   r   )r   r   )r   r   r   r   )r   r   r   r   )r   r6   r7   )	r   r3   r?   r4   nparrayr   r   r   )r`   rE   e1e2a1a2ts          r$   test_shapesru      s<   	a!A	6	6	6B5;)####5;)####	a!A	6	6	6B5;&    5;&    	aQF1v"	M	M	MB5;$5;$
QB
QB	B8b"X&	'	'B	B8b"X&	'	'B2r(RHqDDDA7=I%%%%39B8*Bxj1QGGGA7=L((((39	!!!!2r(RHqCCCA7=I%%%%392r(q!fqCCCA7=I%%%%39r%   c                  ^   t          ddgddgd          } t          dddgddgd          }t           | t                     |t                               t           | t          d           |t          d                     d	}t          j        t          |
          5   | t                     ddd           n# 1 swxY w Y   t          ddggddggdd          } t          dddggddggdd          }t           | t          j                   |t          j                             t           | t          d           |t          d                     t          j        t          |
          5   | t                     ddd           n# 1 swxY w Y   t          ddgddgddgd          }  | t          t                    }|j
        dk    sJ d}t          j        t          |
          5   | t                     ddd           dS # 1 swxY w Y   dS )zHTests evaluation of Linear1D and Planar2D with different model_set_axis.r   r   r   r   slope	interceptr6   )r3   r4   r6   Fr;   rS   r9   Nrx   ry   r6   r7   r5   slope_xslope_yry   r6   )r   r   z+Missing input arguments - expected 2, got 1)r   r   r   r@   r   r<   r=   r>   rd   r   r?   )modelprF   rG   s       r$   	test_evalr      s   Aq6aVa@@@EQAq6q!fq999AEE"IIqquu%%%EE!E222AAa4N4N4NOOONG	z	1	1	1  a               QF8Ax!TUVVVEQQF8!Q1QOOOAEE"$KK24)))EE!E222AAa4N4N4NOOO	z	1	1	1  b			               aVaV1vPQRRREb"A7f<G	z	1	1	1  a                 s6   'CCCF  F$'F$H""H&)H&c                     | ddd          }t          j        dt          z  dz   t          dz   g          }t          j        |dd          j        }t                      } ||t          |          } |t          d          } | d|j        d         d         |j        d         d         |j        	          } | d|j        d         d         |j        d         d         |j        	          }t          |d
d
df          |t                               t          |d
d
df          |t                                | ddd          } ||t          |j                  }d
S )z
    Issue #7159
    r   r   rR   r   r   rc   Fr;   )r3   r4   domainN)
rn   ro   r   rollaxisrd   r   r3   r4   r   r   )r0   r   rG   ffitmodel_ym1m2s           r$   test_linearlsqfitterr     sS    	A!444A 	!a%!)QU#$$A
Aq"AA
!Aq!**Cc!E***G	Q36!9Q<CF1IaL	L	L	LB	Q36!9Q<CF1IaL	L	L	LBGAAAqDM22a55)))GAAAqDM22a55)))A!444A
!Aq!#,,CCCr%   c                     t                      } t          ddd          }t          j        d dd df         \  }}t          j        t          j        ||z   dd|z  z
  d|z  z   g          dd          } | ||||          } |||d	
          }|j        |j        k    sJ t          dddgddgdd          } |t                    } |t          j	        d
          }t          |d         |d d df                    t          |d         |d d df                    t          dddggddggdd          } |t          j	                  } |t          d
          }t          |d d df         |d                    t          |d d df         |d                    d}	t          j        t          |	          5   |t                     d d d            d S # 1 swxY w Y   d S )Nr   r   rR   rX   皙?皙?r   r   Fr;   r5   r8   r9   )r   r   rn   mgridr   ro   r?   r   r@   rd   r   r<   r=   r>   r   )
fitter	model_sety2x2zr~   resy0y1rF   s
             r$   test_model_set_axis_outputsr   .  sM   FQ1===IXbqb"1"fFB
BHb2gq38|cBh'>?@@!QGGAF9b"a((E
%Bu
-
-
-C7ci QAq6q!fqQRSSSI	2B	24	*	*	*BBqE2aaad8$$$BqE2aaad8$$$QQF8!Q1UVWWWI	24B	2a	(	(	(BBqqq!tHbe$$$Bqqq!tHbe$$$PG	z	1	1	1  	!                 s    GG"%G"c                     t                      } t          ddgddgd          } |t                    } | |t          |           t          ddggddggdd          } | |t          |j                   t          ddgddgddgd          } |t          t                    } | |t          t          |           dS )	z1Test fitting model sets of Linear1D and Planar2D.r   r   r   r   rw   rz   r{   N)r   r   r@   r   rd   r   )r   r~   rG   s      r$   test_fitting_shapesr   K  s    FAq6aVa@@@Eb		A
F5!QQF8Ax!TUVVVE
F5!QSaVaV1vPQRRREb"A
F5!Qr%   c                      d} t          j        t          |           5  t          ddd          t          ddd          z   d d d            d S # 1 swxY w Y   d S )Nz=model_set_axis must be False or 0 and consistent for operandsr9   r   r   rR   r   )r<   r=   r>   r   )rF   s    r$   test_compound_model_setsr   [  s    NG	z	1	1	1 
 
Qq9991q;;;< <
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   &AAAc            	         t          dddgd          } t          j        d          } | |d          }t                      }d}t	          j        t          |          5   || |d d	         |           d d d            n# 1 swxY w Y   t	          j        t          |          5   || ||d d d d	f                    d d d            d S # 1 swxY w Y   d S )
Nr   r   degreer3   r6   r   Fr;   z"x and y should have the same shaper9   rX   )r   rn   aranger   r<   r=   r>   )
init_modelr   rG   r   rF   s        r$    test_linear_fit_model_set_errorsr   d  sn   QAq6A>>>J
	"A
1U+++AF3G	z	1	1	1 % %z1RaR5!$$$% % % % % % % % % % % % % % %	z	1	1	1 ( (z1a2A2h'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   !BB
B)CCCc            
         t          dddgd          } t          j        d          } | |d          }|j        dk    sJ t	          t
                    5  |t          j                            dd	|j        
          z   }ddd           n# 1 swxY w Y   t                      }t          j	        d          }d|ddg<    || |||          }t           ||d          |d           t          j        t          d          5  t          j        t          d          5   || ||t          j        d                    }ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )-Tests fitting multiple models simultaneously.r   r   r   r   Fr;   r   r   r   {Gz?sizeNrc   weightsr   rtol$Found NaNs in the coefficient matrixr9   $invalid value encountered in.*divide)r   rn   r   r?   r   _RANDOM_SEEDrandomnormalr   onesr   r<   r=   r>   warnsRuntimeWarningzeros)r   r   
y_expectedrG   r   r   fitted_models          r$   'test_linear_fit_model_set_common_weightr   r  s    QAq6A>>>J
	"AAe444Jw&&&& 
	&	& J J))!T
8H)IIIJ J J J J J J J J J J J J J J FgbkkGGQG6*aG<<<LLL5999:DQQQQ 
z)P	Q	Q	Q J J\"I
 
 
 	J 	J "6*aBHRLLIIIL	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	JJ J J J J J J J J J J J J J J J J JsH   +BBB	E+%"EE+E	E+E	E++E/2E/c                  T   t          dddgd          } t          j        d          } | |d          }|j        dk    sJ t	          t
                    5  |t          j                            dd	|j        
          z   }ddd           n# 1 swxY w Y   t          j        |          }d|ddg|	                    d          f<   d|ddg|
                    d          f<   t                      } || |||          }t           ||d          |d           d|d<   t          j        t          d          5  t          j        t"          d          5   || |||          }ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          j        t"          d          5   || |t          j                            |t          j        |d                    |          }ddd           n# 1 swxY w Y   t          j        t          j        |j        dddf                             sJ t          j        t          j         ||d          d                             sJ t           ||d          d         |d         d           dS )r   r   r   r   r   Fr;   r   r   r   r   N)axisr   r   r   r   r9   r   )mask)r   rn   r   r?   r   r   r   r   	ones_likeargminargmaxr   r   r<   r=   r>   r   r   maro   iscloseallisnan
param_sets)r   r   r   rG   r   r   r   s          r$   !test_linear_fit_model_set_weightsr     s    QAq6A>>>J
	"AAe444Jw&&&& 
	&	& J J))!T
8H)IIIJ J J J J J J J J J J J J J J l1ooG./GQFGNNN***+./GQFGNNN***+F6*aG<<<LLL5999:DQQQQ GAJ	z)P	Q	Q	Q E E\"I
 
 
 	E 	E "6*aGDDDL	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EE E E E E E E E E E E E E E E 
n,S	T	T	T 
 
v25;;qrz'1/E/E;FFPW
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 6"(<2111a4899:::::6"(<<%@@@CDDEEEEELL5999!<jmRVWWWWWWs[   +BBBFE9-F9E=	=F E=	FFF6AHHHc            
         t          dddgd          } t          j        d          }t          j        d          } | ||d          }t                      }d}t	          j        t          |          5   || |d d	         ||           d d d            n# 1 swxY w Y   t	          j        t          |          5   || |||d d d d	f                    d d d            d S # 1 swxY w Y   d S )
Nr   r   )r   r[   r6   r   Fr;   z%x, y and z should have the same shaper9   rX   )r   rn   r   r   r<   r=   r>   )r   r   rG   r   r   rF   s         r$   #test_linear_fit_2d_model_set_errorsr     s   QaVa@@@J
	"A
	"A
1a...AF6G	z	1	1	1 ( (z1RaR5!Q'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	z	1	1	1 + +z1a111bqb5***+ + + + + + + + + + + + + + + + + +s$   6BB B?C''C+.C+c            	      |   t          dddgddgdddd          } t          j        ddddf         \  }}t          j        d|z   d	|z  z
  d
|z  |z  z   d|z  |z   d|z  |z  z
  g          }t	                      } || |||t          j        d                    }t           |||d          |d           d S Nr   r         Tr]   r\   r   r]   r\   r6   fixedr   rX         ?r   r   )rX   rX   r   Fr;   +=atolr   rn   r   ro   r   r   r   )r   r   rG   zzr   r   s         r$   *test_linear_fit_2d_model_set_common_weightr     s    VAYT**  J 8AaC1HDAq	1q537?S1Wq[0!a%!)cAgk2IJ	K	KBF6*aBHHHLLLAe<<<buMMMMMMr%   c            	         t          dddgddgdddd          } t          j        ddddf         \  }}|                                |                                }}t          j        d|z   d	|z  z
  d
|z  |z  z   d|z  |z   d|z  |z  z
  g          }t          j        d          }t                      } || ||||          }t           |||d          |d           d S )Nr   r   r   Tr   r   r   rX   r   r   r      r   Fr;   r   r   r   rn   r   rN   ro   r   r   r   r   r   rG   r   r   r   r   s          r$   /test_linear_fit_flat_2d_model_set_common_weightr     s   VAYT**  J 8AaC1HDAq99;;		qA	1q537?S1Wq[0!a%!)cAgk2IJ	K	KBgbkkGF6*aB@@@LLLAe<<<buMMMMMMr%   c            	         t          dddgddgdddd          } t          j        ddddf         \  }}t          j        d|z   d	|z  z
  d
|z  |z  z   d|z  |z   d|z  |z  z
  g          }t	                      }t          j        d          t          j        d          g} || ||||          }t           |||d          |d           d S r   r   )r   r   rG   r   r   r   r   s          r$   $test_linear_fit_2d_model_set_weightsr     s    VAYT**  J 8AaC1HDAq	1q537?S1Wq[0!a%!)cAgk2IJ	K	KBFwv0G6*aB@@@LLLAe<<<buMMMMMMr%   c            	         t          dddgddgdddd          } t          j        ddddf         \  }}|                                |                                }}t          j        d|z   d	|z  z
  d
|z  |z  z   d|z  |z   d|z  |z  z
  g          }t          j        d          }t                      } || ||||          }t           |||d          |d           d S )Nr   r   r   Tr   r   r   rX   r   r   r   )r   r   r   Fr;   r   r   r   r   s          r$   )test_linear_fit_flat_2d_model_set_weightsr     s   VAYT**  J 8AaC1HDAq99;;		qA	1q537?S1Wq[0!a%!)cAgk2IJ	K	KBggGF6*aB@@@LLLAe<<<buMMMMMMr%   c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
Test1ModelSetae  
    Check that fitting a single model works with a length-1 model set axis.
    It's not clear that this was originally intended usage, but it can be
    convenient, eg. when fitting a range of image rows that may be a single
    row, and some existing scripts might rely on it working.
    Currently this does not work with FittingWithOutlierRemoval.
    c                    t          j        dd          | _        t          j        dd| j        z  z   g          | _        t          j        d          | _        d| j        d<   d| j        d	<   t           j        ddddf         \  | _        | _	        t          j        d
d| j	        z  z
  d| j        z  z   g          | _
        t          j        d          | _        d| j
        d<   d| j        d<   d S )Nr   r   r         @)r   g      Y@)r      g        r   r   r   r   )r   r   rW   rh   )rn   r   x1ro   r   r   w1r   r   r   z2w2)r!   s    r$   setup_classzTest1ModelSet.setup_class  s    )Ar""(C#-/011'%..
8AbD!B$J/(Adg-dg=>??'(## r%   c                     t          d          }t                      } ||| j        | j        | j                  }t          |j        dd           t          |j        dd           d S )Nr   r   r   -q=r   r   )r   r   r   r   r   r   r3   r4   r!   r~   r   s      r$   test_linear_1d_common_weightsz+Test1ModelSet.test_linear_1d_common_weights&  sj    Q ""udgtw@@@#E2222#E222222r%   c                     t          d          }t                      } ||| j        | j        | j        t
          j        df                   }t          |j        dd           t          |j	        dd           d S )Nr   .r   r   r   r   r   )
r   r   r   r   r   rn   newaxisr   r3   r4   r   s      r$   test_linear_1d_separate_weightsz-Test1ModelSet.test_linear_1d_separate_weights-  su    Q ""udgtw
C8PQQQ#E2222#E222222r%   c                 
   t          dd          }t                      } ||| j        | j        j        | j        dt          j        f                   }t          |j	        dd           t          |j
        dd           d S )	Nr   r;   .r   r   r   r   r   )r   r   r   r   rd   r   rn   r   r   r3   r4   r   s      r$   &test_linear_1d_separate_weights_axis_1z4Test1ModelSet.test_linear_1d_separate_weights_axis_14  s~    Qq111 ""udgtwy$'#rz/:RSSS#E2222#E222222r%   c                    t          d          }t                      } ||| j        | j        | j        | j                  }t          |j        dd           t          |j        dd           t          |j	        dd           d S )Nr   r         ?r   r   皙r   )
r   r   r   r   r   r   r   r[   r]   r\   r   s      r$   test_linear_2d_common_weightsz+Test1ModelSet.test_linear_2d_common_weights;  s    Q ""udgtwIII
Ce4444
Du5555
Ce444444r%   c           	      6   t          d          }t                      } ||| j        | j        | j        | j        t          j        df                   }t          |j	        dd           t          |j
        dd           t          |j        dd           d S )	Nr   .r   r   r   r   r   r   )r   r   r   r   r   r   rn   r   r   r[   r]   r\   r   s      r$   test_linear_2d_separate_weightsz-Test1ModelSet.test_linear_2d_separate_weightsC  s    Q ""47DGTWdgbj#o6N
 
 
 	
Ce4444
Du5555
Ce444444r%   c           
      b   t          dd          }t                      } ||| j        | j        t	          j        | j        dd          | j        dt          j        f                   }t          |j
        dd	
           t          |j        dd	
           t          |j        dd	
           d S )Nr   r   r;   r   r   .r   r   r   r   r   r   )r   r   r   r   rn   r   r   r   r   r   r[   r]   r\   r   s      r$   &test_linear_2d_separate_weights_axis_2z4Test1ModelSet.test_linear_2d_separate_weights_axis_2M  s    Qq111 ""GGKA&&GCO,
 
 
 	
Ce4444
Du5555
Ce444444r%   N)r(   r)   r*   r+   r   r   r   r   r   r   r   r   r%   r$   r   r     s         
 
 
3 3 33 3 33 3 35 5 55 5 55 5 5 5 5r%   r   )7r+   numpyrn   r<   numpy.testingr   astropy.modeling.corer   astropy.modeling.fittingr   astropy.modeling.modelsr   r   r   r	   r
   r   r   r   r   r   astropy.modeling.parametersr   astropy.utilsr   r   r   ro   r@   reshaperA   r   r   markparametrizerH   rP   rU   ra   rf   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r$   <module>r      s         ) ) ) ) ) ) ' ' ' ' ' ' 4 4 4 4 4 4                        2 1 1 1 1 1 ) ) ) ) ) )BIaLLRXq!b&kbimmI&&       & L+z9E  ,  ,  ,F L+z9E 1 1 14 L+z9E      F j)(LMM4 4 NM48, , ,$! ! !H  B L+z9E   0  :   
 
 
( ( (J J J6%X %X %XP+ + +N N N$N N N(N N N&N N N(H5 H5 H5 H5 H5 H5 H5 H5 H5 H5r%   