
    IR-e/_                     Z   d dl Z d dlZd dlZ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 d dlmZ d dlmZ d dlmZ d d	lmZ ej        ej        ej        ej        gZ G d
 d          Zej                            e d           G d d                      Z G d d          Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)ej                            e d          ej        *                    d          ej        +                    de          d                                     Z,ej                            e d          ej        +                    de          d                         Z-ej                            e d          ej        +                    de          d                          Z.ej                            e d          ej        *                    d!          ej        +                    de          d"                                     Z/d# Z0d$ Z1dS )%    N)nullcontext)default_rng)assert_allclose)fittingmodels)Fittable1DModel)	Parameter)	HAS_SCIPY)AstropyUserWarningc                   
   e Zd Zd Zej                            e d          ej                            de	          d                         Z
ej                            e d          ej                            de	          d                         Zej                            e d          d             Zej                            e d          ej                            de	          d                         Zd	S )
TestNonLinearConstraintsc                    t          j        ddd          | _        t          j        ddd          | _        t	          j        ddd          | _        |                     | j                  | _        |                     | j                  | _        t          d	          }|
                    d
          | _        | j        d| j        z  z   | _        | j        d| j        z  z   | _        d S )N
   -@333333?stddev   皙?   皙?Id      )r   
Gaussian1Dg1g2nparangexy1y2r   standard_normalnny1ny2selfrsns     Glib/python3.11/site-packages/astropy/modeling/tests/test_constraints.pysetup_classz$TestNonLinearConstraints.setup_class   s    #BS999#B37772r3''''$&//''$&//*%%$$S))7QZ'7QZ'    requires scipyreasonfitterc                      |            }t          j        dddddi          } ||| j        | j                  }|j        j        dk    sJ d S )Nr   r   r   	amplitudeT)meanr   fixed)r   r   r    r%   r2   value)r(   r0   r   models       r*   test_fixed_parz'TestNonLinearConstraints.test_fixed_par(   s`     rSd@STTTr4648,,$******r,   c                      |            }d }t          j        dddd|i          } ||| j        | j                  }t	          |j        j        d|j        z  d	           d S )
Nc                     d| j         z  }|S N2   r   )r6   r3   s     r*   tiedz4TestNonLinearConstraints.test_tied_par.<locals>.tied6   s    $DKr,   r   r   r   r3   )r3   r   r<   r;   h㈵>rtol)r   r   r    r%   r   r3   r5   r   )r(   r0   r<   r   r6   s        r*   test_tied_parz&TestNonLinearConstraints.test_tied_par1   s{     	 	 	 rS~NNNr4648,,
("u|*;*MMMMMMr,   c                    ddl m} t          j        ddd          }t          j        ddd          }t	          j        ||g|d	g|d	gid
g          }t          j        ddd          } ||          } ||          }t          j        	                    d          }|d|z  z   }	|d|z  z   }
 |||	||
           ddg}ddg}d
}t          j
        |||f         }d fd}|                    ||||	||
f          \  }}t          |j        |d           t          |j        j        |j        j                   d S )Nr   optimizer   r   r   r   r   r   r2   g#@r   r   r   r   c                 f    | t          j        d|d         dz  z  ||d         z
  dz  z            z  S )N         r   r   r   exp)Apr    s      r*   	compmodelz=TestNonLinearConstraints.test_joint_fitter.<locals>.compmodelS   s5    rvdQqTQY.!ad(q@AAAAr,   c           
          t          j        t           j         | d         | dd         |          |z
   | d         | dd          |          |z
  f                   S )Nr   rF      )r   ravelr_)rJ   x1r!   x2r"   rK   s        r*   errfz8TestNonLinearConstraints.test_joint_fitter.<locals>.errfV   se    8ii!a!fb11B6		!A$!""r8R8RUW8WWX  r,   argsr=   r>   )scipyrC   r   r   r   JointFitterr   r   randomrandnrO   leastsqr   	fitparamsr2   r5   )r(   rC   r   r   jfr    r!   r"   r$   r%   r&   p1p2rI   rJ   rR   rZ   _rK   s                     @r*   test_joint_fitterz*TestNonLinearConstraints.test_joint_fitter>   s   """"""r4444r2c222 HrK="{m<se
 
 Ib"c""RUURUUIOOC  1q5j1q5j
1c1cC[#YE!R)	B 	B 	B	 	 	 	 	
  ''aq#q#6F'GG	1ijAAAA*BL,>?????r,   c                 l   ddl m}  |            }t          j        ddd          }d fd}g d	} || j                  }t
          j                            d
          }||z   }|                    ||| j        |f          \  }	}
 ||| j        |          }t          |j
        |	d           d S )Nr   rB   #@      -@r   r   c                 r    | d         t          j        d| d         dz  z  || d         z
  dz  z            z  S )Nr   rE   r   rF   rG   )rJ   r    s     r*   funcz:TestNonLinearConstraints.test_no_constraints.<locals>.funch   s9    Q4"&!	!1Q1X!O!CDDDDr,   c                 "     | |          |z
  S N )rJ   r    yrd   s      r*   rR   z:TestNonLinearConstraints.test_no_constraints.<locals>.errfk   s    41::>!r,   )ra   rb   r   r   rS   g{Gzt?r>   )rU   rC   r   r   r    r   rW   rX   rY   r   
parameters)r(   r0   rC   r   rR   p0rh   r$   nyfitparsr6   rd   s               @r*   test_no_constraintsz,TestNonLinearConstraints.test_no_constraints_   s     	#"""""sD555	E 	E 	E	" 	" 	" 	" 	" BtvJJIOOC  U$$T2TVRL$AA	r462&&(&~FFFFFFr,   N)__name__
__module____qualname__r+   pytestmarkskipifr
   parametrizefittersr7   r@   r_   rn   rg   r,   r*   r   r      sZ       	( 	( 	( [I.>??[Xw//+ + 0/ @?+ [I.>??[Xw//	N 	N 0/ @?	N [I.>??@ @ @?@@ [I.>??[Xw//G G 0/ @?G G Gr,   r   r-   r.   c                       e Zd Zd Zej                            de          d             Zd Z	ej        
                    d          ej                            de          d                         Zd ZdS )	
TestBoundsc                    d}d}t          j        ddd          | _        || j        z  |z   t           j                            dd          z   | _        t          j        g d          }|                    d	d	          | _        d S )
Ng             ?            ?r   r   )scalesize)y     @g     `@g     @g     @g     @g     H@g     @g      @g     |@g     P}@g     z@     0@g     `@g     @g     @g     Ј@g     H@g     @g     @g     @g     }@     `|@r   g     @g     @g     <@g     @g     (@g     0@g     @g     @     p~@g     P|@g     x@g     `@g     @g     @     $@g     D@g     ԗ@g     @g     @g     @      }@g     @g     0@g     @g     @g     ܤ@g     Σ@g     X@g     @g     @g     @     @g     }@     ȁ@g     @g     @g     f@g     r@g     @g     ؛@g     @g     @g     @r   r        @g     đ@r   g     ڦ@g     @g     ؝@g     8@g     @g     @g     |@g     `~@r   g     @g     @g     @g     L@g      @g     p@g     ؄@      ~@r   r   g     @g     @g     @g     @g     $@g     D@g     (@g     @g      z@g     |@g     0{@r   g     @r   g     @g     @g     P@g     0@g     }@g     @g     {@g      z@g     p{@     }@r   g     ~@g     X@r   r   g     {@g     z@   )	r   linspacer    rW   normalrh   arrayreshapedata)r(   rI   Br   s       r*   r+   zTestBounds.setup_classy   s    T3,,TVa")"2"23"2"G"GGx  
 
& LLR((			r,   r0   c                     |            }d}d}ddd}t          j        |||          }t          j        t          d          5   ||| j        | j                  }d d d            n# 1 swxY w Y   |j        j        }|j	        j        }|d	z   |d
         d         k    sJ |d	z
  |d
         d         k    sJ |d	z   |d         d         k    sJ |d	z
  |d         d         k    sJ d S )N皙?        g            @r{   r|   slope	interceptboundszModel is linear in parametersmatchr=   r   r   rF   r   )
r   Linear1Drr   warnsr   r    rh   r   r5   r   )	r(   r0   guess_slopeguess_interceptr   
line_modelr6   r   r   s	            r*   test_bounds_lsqzTestBounds.test_bounds_lsq   sS   &[AA_[/&QQQ
\,4TUUU 	7 	7F:tvtv66E	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7!O)	v~!33333v~!333336!VK%8%;;;;;6!VK%8%;;;;;;;s   A**A.1A.c                    d}d}ddd}t          j        |||          }t          j                    }t	          j        t          d          5   ||| j        | j                  }d d d            n# 1 swxY w Y   |j	        j
        }|j        j
        }|d	z   |d
         d         k    sJ |d	z
  |d
         d         k    sJ |d	z   |d         d         k    sJ |d	z
  |d         d         k    sJ d S )Nr   r   r   r   r   r   z%consider using linear fitting methodsr   r=   r   r   rF   r   )r   r   r   SLSQPLSQFitterrr   r   r   r    rh   r   r5   r   )	r(   r   r   r   r   r0   r6   r   r   s	            r*   test_bounds_slsqpzTestBounds.test_bounds_slsqp   s`   &[AA_[/&QQQ
'))\&M
 
 
 	7 	7 F:tvtv66E	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 !O)	v~!33333v~!333336!VK%8%;;;;;6!VK%8%;;;;;;;s   A33A7:A7z"ignore:The fit may be unsuccessfulc           	          |            }t          j        t          j        d          t          j        d                    \  }}ddgddgddgddgd}t          j        dddd	d	d
|          }t          |t          j        t          j        f          r ||||| j	                  }nlt          |t          j
                  rt          j        dd          }nt                      }|5   ||||| j	                  }d d d            n# 1 swxY w Y   |j        j        }|j        j        }	|j        j        }
|j        j        }|dz   |d         d         k    sJ |dz
  |d         d         k    sJ |	dz   |d         d         k    sJ |	dz
  |d         d         k    sJ |
dz   |d         d         k    sJ |
dz
  |d         d         k    sJ |dz   |d         d         k    sJ |dz
  |d         d         k    sJ d S )Nr   r         &@r|      x_meany_meanx_stddevy_stddev      $@r         @rz   r2   r   r   r   r   thetar   ignoreinvaliddivider=   r   r   rF   r   r   r   )r   meshgridr   r   
Gaussian2D
isinstancer   LevMarLSQFitterDogBoxLSQFitterr   TRFLSQFittererrstater   r   r5   r   r   r   )r(   r0   XYr   gaussr6   ctxr   r   r   r   s               r*   test_bounds_gauss2d_lsqz"TestBounds.test_bounds_gauss2d_lsq   s    {29R==")B--881DkDkaa	
 
 !
 
 
 fw68OPQQ 	7F5!Q	22EE&'"677 $k(8DDD!mm 7 7uaDI667 7 7 7 7 7 7 7 7 7 7 7 7 7 7##>'>'&"21"55555&"21"55555&"21"55555&"21"55555& F:$6q$99999& F:$6q$99999& F:$6q$99999& F:$6q$9999999s   ,DDDc           	      |   t          j        t          j        d          t          j        d                    \  }}ddgddgddgddgd}t          j        dddd	d	d
|          }t          j                    }t          j                    5  t          j	        ddt                      ||||| j                  }d d d            n# 1 swxY w Y   |j        j        }|j        j        }|j        j        }	|j        j        }
|dz   |d         d         k    sJ |dz
  |d         d         k    sJ |dz   |d         d         k    sJ |dz
  |d         d         k    sJ |	dz   |d         d         k    sJ |	dz
  |d         d         k    sJ |
dz   |d         d         k    sJ |
dz
  |d         d         k    sJ d S )Nr   r   r   r|   r   r   r   r   r   rz   r   r   z.*The fit may be unsuccessful.*)messagecategoryr=   r   r   rF   r   r   r   )r   r   r   r   r   r   r   warningscatch_warningsfilterwarningsr   r   r   r5   r   r   r   )r(   r   r   r   r   	gauss_fitr6   r   r   r   r   s              r*   test_bounds_gauss2d_slsqpz$TestBounds.test_bounds_gauss2d_slsqp   s[   {29R==")B--881DkDkaa	
 
 !
 
 
 *,,	 $&& 	6 	6#:+   
 IeQ4955E	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ##>'>'&"21"55555&"21"55555&"21"55555&"21"55555& F:$6q$99999& F:$6q$99999& F:$6q$99999& F:$6q$9999999s   0C		CCN)ro   rp   rq   r+   rr   rs   ru   rv   r   r   r   r   r   rg   r,   r*   rx   rx   w   s        ) ) )6 [Xw//< < 0/< < < <$ [ DEE[Xw//': ': 0/ FE':R&: &: &: &: &:r,   rx   c                       e Zd Zd Zd ZdS )TestLinearConstraintsc                 n   t          j        d          | _        d| j        _        d| j        _        ddg| j        _        t          j        d          | _        |                     | j                  | _	        t          d          }|                    d          | _        | j	        | j        z   | _        d S )Nr   r   r   g      "@r   r   )r   Polynomial1Dr\   c0c1windowr   r   r    rh   r   r#   r$   rk   r'   s     r*   r+   z!TestLinearConstraints.setup_class  s    %a((

s2*%%$$R((&46/r,   c                     d| j         j        _        d| j         j        _        t	          j                    } || j         | j        | j                  }t          | j         || j                             d S )NT)	r\   r   r4   r   r   LinearLSQFitterr    rh   r   )r(   pfitr6   s      r*   testzTestLinearConstraints.test  sc    

&((TWdfdf--df.....r,   N)ro   rp   rq   r+   r   rg   r,   r*   r   r     s2        	" 	" 	"/ / / / /r,   r   c                  n    t          j        ddd          } d| j        _        | j        ddddk    sJ d S )Nr   r   rF   r2   r3   r   TFr   r   r3   r4   r   s    r*   test_set_fixed_1r   "  sF    1===EEJ;tuMMMMMMMMr,   c                  Z    t          j        dddddi          } | j        j        du sJ d S )Nr   r   rF   r3   Tr2   r3   r   r4   r   r   s    r*   test_set_fixed_2r   (  s;    1VTNSSSE:t######r,   c                      d } t          j        ddd          }| |j        _        |j        j        dusJ t	          |j        d         t
          j                  sJ d S )Nc                     d| j         z  S r:   r   r6   s    r*   tie_amplitudez&test_set_tied_1.<locals>.tie_amplitude.      EL  r,   r   r   rF   r   Fr2   )r   r   r2   r<   r   typesFunctionTyper   r   s     r*   test_set_tied_1r   -  sp    ! ! ! 1===E(EO?u,,,,ej-u/ABBBBBBBr,   c                  \    d } t          j        dddd| i          }|j        j        sJ d S )Nc                     d| j         z  S r:   r   r   s    r*   r   z&test_set_tied_2.<locals>.tie_amplitude8  r   r,   r   r   rF   r2   r2   r3   r   r<   r   r   r2   r<   r   s     r*   test_set_tied_2r   7  sQ    ! ! ! 1Qk=-I  E ?r,   c                  t    t          j        dddddi          } d| j        _        | j        ddddk    sJ d S )	Nr   r   rF   r3   Tr   Fr   r   r   s    r*   test_unset_fixedr   A  sL    1VTNSSSEEJ;uNNNNNNNNr,   c                  z    d } t          j        dddd| i          }d|j        _        |j        ddddk    sJ d S )	Nc                     d| j         z  S r:   r   r   s    r*   r   z&test_unset_tied.<locals>.tie_amplitudeH  r   r,   r   r   rF   r2   r   Fr   r   r   s     r*   test_unset_tiedr   G  sg    ! ! ! 1Qk=-I  E !EO:ueuMMMMMMMMr,   c                  \    t          j        dddddi          } | j        dddd	k    sJ d S )
Nr   r   rF   r   r   Nr2   r3   r   r   NNr   Nr   )r   r   r   r   s    r*   test_set_bounds_1r   R  s_    1Q)/D  E <!       r,   c                  n    t          j        ddd          } d| j        _        | j        ddddk    sJ d S )Nr   r   rF   r   r   r   r   )r   r   r   minr   r   s    r*   test_set_bounds_2r   ]  sY    1===EEL<!       r,   c                      t          j        dddddi          } d | j        _        d | j        _        | j        ddddk    sJ d S )	Nr   r   rF   r   )r   r   r   r   r   )r   r   r   r   maxr   r   s    r*   test_unset_boundsr   g  sk    1hPVEWXXXEELEL<!       r,   c                  b    G d dt                     } | j        j        dk    sJ | j        j        dk    sJ | j        j        dk    sJ | j        j        dk    sJ | j        j        du sJ  |             }|j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ |j        j        du sJ |j        dddk    sJ |j        d	ddk    sJ  | d
dddddd	d          }|j        j        d
k    sJ |j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ |j        j        dk    sJ |j        j        du sJ |j        j        d	u sJ |j        dddk    sJ |j        dd	dk    sJ dS )zRegression test for https://github.com/astropy/astropy/issues/2396

    Ensure that default constraints defined on parameters are carried through
    to instances of the models those parameters are defined for.
    c                   X    e Zd Z ed          Z eddd          Zed             ZdS ))test_default_constraints.<locals>.MyModelrF   defaultr   T)r  r   r4   c                     | |z  |z   S rf   rg   r    abs      r*   evaluatez2test_default_constraints.<locals>.MyModel.evaluate}      q519r,   Nro   rp   rq   r	   r  r  staticmethodr  rg   r,   r*   MyModelr   y  sU        Ia   IaQd333		 	 
	 	 	r,   r
  rF   r   r   Tr   r  r  FrM   r   )rF   N)r   N)r   r4   r   N)r   r  r  r  r   r   r4   r5   )r
  ms     r*   test_default_constraintsr  r  s?       /    9!!!!9!!!!9=A9y((((9?d""""		A39>>>>39>>>>37a<<<<3:""""398\	::::::7E------ 		199554e=T=T	 	 	A 39>>>>39>>>>37a<<<<37a<<<<3:""""3:""""39398YY7777777Du--------r,   z#ignore:divide by zero encountered.*r0   c                    | t           j        k    r)t          j                    dvrt	          j        d            |             } t          j        dddddidd	i
          }t          j	        ddd          }t          j
        |dz   dz            }t          | t           j                  rt          j        dd          }nt                      }|5   | |||          }|j        dk    sJ |j        dk    sJ |j        dk    sJ d|j        _         | |||          }ddd           n# 1 swxY w Y   |j        dk    sJ |j        dk    sJ dS )z
    Regression test for https://github.com/astropy/astropy/issues/2235

    Currently doesn't test that the fit is any *good*--just that parameters
    stay within their given constraints.
    )x86_64arm64z\DogBoxLSQFitter can to be unstable on non-standard platforms leading to random test failuresrM   r   rF   r3   r      r2   T)r2   r3   r   r   r4   r   r   r   r   r   r        @FN)r   r   platformmachinerr   xfailr   r   r   r   rH   r   r   r   r   r3   r2   r4   )r0   r  r    rh   r   fitted_1r^   s          r*   )test_fit_with_fixed_and_bound_constraintsr    s    ((("555#	
 	
 	

 VXXFD!	 	 	A 	Ar2A
Aw{A&'.// k(8<<<mm	  6!Q??}!!!!}!!!!!S((((!F1aOO               =A=As   AD--D14D1c                 Z    |             }  G d dt                     } |dd          }t          j        d          } ||          } |            } | |||          }t          j        |j        d          sJ t          j        |j        d          sJ  |            }d|j        _         | |||          }t          j        |j        d          sJ t          j        |j        d          sJ | t          j        k    r%t          j	        | j
        d         d	k              sJ d
S d
S )z
    Regression test for https://github.com/astropy/astropy/issues/2400

    Checks that bounds constraints are obeyed on a custom model that does not
    define fit_deriv (and thus its Jacobian must be estimated for non-linear
    fitting).
    c                   T    e Zd Z ed          Z ed          Zed             ZdS )Btest_fit_with_bound_constraints_estimate_jacobian.<locals>.MyModelrF   r   r   c                     || z  |z   S rf   rg   r  s      r*   r  zKtest_fit_with_bound_constraints_estimate_jacobian.<locals>.MyModel.evaluate  r  r,   Nr  rg   r,   r*   r
  r    sQ        Ia   Ia   		 	 
	 	 	r,   r
  g      ?r  r   )r   fjacr   N)r   r   r   allcloser  r  r   r   r   anyfit_info)	r0   r
  m_realr    rh   r  r  m2r^   s	            r*   1test_fit_with_bound_constraints_estimate_jacobianr%    sV    VXXF    /    Wsb!!!F
	#Aq		A		AvaAH ;xz3''''';xz2&&&&&	BBDKr1aA;xz3''''';xz2&&&&& (((vfof-233333 )(33r,   c                 n    |             } g dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg}t          j        dd          }t          | t          j        t          j        f          rt          j        d           t          j	        d dd df         \  }} | ||||          }t          |j        j        |j        j        gddgd           t          |j        j        d           t          |j        j        dd           t          |j        j        dd           d S )N)g
ףp=*KgQ+@gfffffFAgfffff!@gQagQg     M@g(\-g̜igQ>g)\_gR^@gp=
׳Q@gQ^[gzGZgRA@g
ףp=J2@)g\(_gQHVgq=
ףO@gQ^I@g
ףp=N@g(\3@glP@g\(|S@g)\H]@gp=
ka@g)\HJ@gzGm@gp=
#Y@g)\Hn@gp=
דfgq=
ף@c@g(\ )gQV@gX@g(\¥]g(\eg(\]gףp=
T@gp=
׳Ug=
ףp=-@gq=
ףS@g=
ףp=@gQ~K@gGzBp@g=
ףpagQ4g33333cSgq=
ףe@gQ`@)gq=
ף@@gQ@gQE@g(\Q@gHzwQ@g\(@@g     q@gQf@gGz>i@g=
ףpu@gq=
ףHu@gq=
ףxd@gףp=
cg=
ףp}5@gQbgQW@gfffffFE@)gRT@g=
ףp5f@g(\:@g)\1@gHzG@gGz.?Hzv@g{Gh@g\(J@g33333Kn@gR{@gq=
ף@g@g(\a@gR@gQUg{G:2gHzd@)g(\E\@gzGBg(\`@g)\Q@gQZ@gGzh@gGzq@gףp=
@gfffff>@g{G@g"@gu@gya@gGzc@gQg=
ףp:g̬B@)gGzZ@gQ?@g(\?U@g(\r_g     `h@gfffff~@gQ@gGzb@g33333@gGzh@gQ@gQJy@gQ\@gףp=
[@gGz<@g33333^@gGz.M)gp=
f@g\(F@gRqD@gQ[@g)\z@gGzt@gQ@g\(@g
ףp=@gچ@gGz@g(\Vy@gfffff3gQ@g     ag
ףp=b@g=
ףp=9@)g\($a@g̼UgHz.@gGzf@r'  gGz؅@g33333'@gR볏@g{Gp@g=
ףp=@gGz|@gQ8o@g33333W@g(\D@g(\gQf@gGzg@)gRA@gQ:@g)\h@gp=
Bg=
ףp@gzG@gQ@g
ףp=@g     ȅ@g)\~@g(\w@g(\u2gq=
ףpPgfffffX@gR(@gQYg33333]@)g(\g@gGzt_@g33333ws@g=
ףpw@gQS@gRe|@g@g{G@g=
ףp@gHzg@gQj@gQ=k@gp=
ף@g(\u;@gGzegףp=
Tgp=
T)gRKgQT@gףp=
p@g33333#q@g)\0e@gq=
ףpt@gfffff~@gGzX{@g\(,l@gGzk@g
ףp=
@gGzWgףp=
C@g\(L@gQb@gp=
Y@g{GzA@)gףp=
O`@gQgfffff&G@g(\_Y@gq=
ף\@g\(,k@g(\:o@g\@gףp=
U@gp=
sZ@gGzGgzG#gRTgfffffb@g\(T@g=
ףp}7@gf@)gQ[gQ\gQn@gq=
ףY@g(\o@gףp=
od@g(\BL@g)\@@gzG@g(\[gQV@gfffff&h@gQ+YgzG.@gGzU@gq=
ףp:g33333Ch)gףp=
W[@gq=
ף X@g)\8_gffffff0gHzU@gHz\@giPg(\BMgQ87gGzNE@gQb@g{G:jg(\[@gHzP@gfffffv]g(\wbgq=
ף^)gzG%@g=
ףpF@gHz]@gp=
CGg)\RgGzRgQ85@g(\?gRU@gQ7@g(\µFg(@gQeg
ףp=;@gHzN@gGzU@g
ףp=<@)gGzNG@gףp=
Zg{GZL@gfffffVg(\0g̜Pg{GagQ?g
ףp=
M@gq=
ףq@gGzNgQ"gGz6tg,M@g)\T@gGzNYg4b@   )r   r   z.TRFLSQFitter seems to be broken for this test.   g['Ǝ@g Six	@gTqs*>r>   g!0N%'@g(#@gƠ>gU1?g>)r   r   r   r   r   r   rr   r  r   mgridr   r2   r5   r   r   r   r   )r0   r   g_initrh   r    g_fits         r*   test_gaussian2d_positive_stddevr-    sL    VXXF	I 	I 	I	H 	H 	H	G 	G 	G	H 	H 	H	G 	G 	G	E 	E 	E	H 	H 	H	F 	F 	F	M 	M 	M	G 	G 	G	G 	G 	G	D 	D 	D	E 	E 	E	O 	O 	O	K 	K 	K	D 	D 	D	H 	H 	HC#DL a222F&7/1HIJJ GEFFF8CRC"HDAqF61a&&E
 		 45	./   
 EL&(9:::EL&(8tDDDDEN(*<4HHHHHHr,   z&ignore:Model is linear in parameters.*c           	         ddl m}  |             } t          j        dddddd          }t	          j        d	d
d          }t	          j        d	d
d          }t	          j        ||          \  }} |||          }t	          j        |j                  }|j	        |_	         |d          5  t          j
                            |j                  }	|j	        |	_	         | ||||d|	z  z   |          }
t          |
j        |j        d            | ||||d|	z  z   d          }
t          |
j        |j        d           d|j        _         | ||||d|	z  z   |          }
t          |
j        |j        d            | ||||d|	z  z   d          }
t          |
j        |j        d           t          j        dddd          } |||          } | ||||d|	z  z   d          }
t          |
j        |j        d            | ||||d|	z  z   |          }
t          |
j        |j        d           d|j        _         | ||||d|	z  z   |          }
t          |
j        |j        d            | ||||d|	z  z   d          }
t          |
j        |j        d           ddd           dS # 1 swxY w Y   dS )zIssue #6403r   )NumpyRNGContextgffffff$@g333333@r  r   333333?gffffff?      r   )weightsg?r>   NTrF   g	@)c0_0c1_0c0_1)astropy.utilsr/  r   r   r   r   r   onesr~   shaperW   rX   r   ri   r   r4   Polynomial2Dr6  )r0   r/  gauss2dr   r   r    rh   zwr$   r  r]   s               r*   test_2d_modelr?  B  sc   
 .-----VXXF c1ac::G
B3A
B3A;q!DAq1A
AgAG		$	$ @ @IOOAF##'F7Aq!a!e)Q777g&8tDDDDF7Aq!a!e)T:::g&8tDDDD "&F7Aq!a!e)Q777g&8tDDDDF7Aq!a!e)T:::g&8tDDDD  3???Bq!HHF2q!QQY555bm$????F2q!QQY222bm$???? F2q!QQY222bm$????F2q!QQY555bm$????9@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   *G=J44J8;J8c                  ,   t          j        d          } t          j        ddd          | j        _        | j                            d          dk    sJ t          j        dd          | j        _        | j                            d          dk    sJ d S )NrF   gffffff@r   r   g?r0  )r   r   r   r   priorr   	posteriorr   s    r*   test_set_prior_posteriorrC  s  s    ""E&sAs33EHN8>>!####C00EH8a  C''''''r,   c                  X   t          j                    } t          j        d          }d| j        _        | |z   }|j        ddddddk    sJ d|j        _        |j        ddddddk    sJ d|j        d	<   |j        ddddddk    sJ d
| j        d<   | |z   }|j        ddd
dddk    sJ d S )NrF   )r   rM   r   )r   r  )amplitude_0mean_0stddev_0r7  c1_1)rF   rM   )r|   r  r  rG  )rF   r  r   )r   r   r   r   r   rG  )grJ   r  s      r*   test_set_constraintsrJ  |  s7   AAA AHO	AA8#      AJ8#      "AHZ8#       AHX	AA8#       r,   )2r  r   r   
contextlibr   numpyr   rr   numpy.randomr   numpy.testingr   astropy.modelingr   r   astropy.modeling.corer   astropy.modeling.parametersr	   "astropy.utils.compat.optional_depsr
   astropy.utils.exceptionsr   r   r   r   rv   r   rs   rt   rx   r   r   r   r   r   r   r   r   r   r   r  r   ru   r  r%  r-  r?  rC  rJ  rg   r,   r*   <module>rT     s      " " " " " "      $ $ $ $ $ $ ) ) ) ) ) ) , , , , , , , , 1 1 1 1 1 1 1 1 1 1 1 1 8 8 8 8 8 8 7 7 7 7 7 7 	XG XG XG XG XG XG XG XGv 	M*:;;P: P: P: P: P: P: P: <;P:f/ / / / / / / /.N N N$ $ $
C C C     O O ON N N      +. +. +.\ 	M*:;;BCC7++. . ,+ DC <;.b 	M*:;;7++'4 '4 ,+ <;'4V 	M*:;;7++<I <I ,+ <;<I~ 	M*:;;EFF7+++@ +@ ,+ GF <;+@\( ( (, , , , ,r,   