
    HR-eM                         d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ  G d d          ZdS )	    N)assert_allcloseassert_almost_equal)convolveconvolve_fftconvolve_models)fittingmodels)	HAS_SCIPY)NumpyRNGContextc                      e Zd Zej                            deeg          ej                            e	 d          d                         Z
ej                            dddg          ej                            e	 d          d                         Zej                            dddg          ej                            e	 d          d                         Zej                            dddg          d	             Zej                            dddg          d
             Zej                            dddg          ej                            e	 d          d                         ZdS )TestConvolve1DModelsmodezRequires scipy)reasonc                 (   t          j        ddd          }t          j        ddd          }t          |||j                  }t	          j        dd          } | ||           ||                    }t          | ||          d           d S )N   r   r      h㈵>atol)r	   
Gaussian1Dr   __name__nparanger   selfr   kernelmodel
model_convxanss          Nlib/python3.11/site-packages/astropy/convolution/tests/test_convolve_models.py,test_is_consistency_with_astropy_convolutionzATestConvolve1DModels.test_is_consistency_with_astropy_convolution   s     "1a++!!Q**$UFGGG
Ib!d5588VVAYY''ZZ]]666666    r   r   c                 j   ddl m} t          j        ddd          }t          j        ddd          }t	          |||          }t          j        dd          } | ||           ||          d          }t          | ||           ||                                          z  d	           d S )
Nr   fftconvolver   r   r   r   samer   r   )	scipy.signalr(   r	   r   r   r   r   r   sumr   r   r(   r   r   r    r!   r"   s           r#   test_against_scipyz'TestConvolve1DModels.test_against_scipy   s     	-,,,,,"1a++!!Q**$UF>>>
Ib!k&&))UU1XXF;;;ZZ]]VVAYY]]__<4HHHHHHr%   c                 0   ddl m} t          j        ddd          }t          j        ddd          }t	          |||d          }t          j        dd          } | ||           ||          d	          }t          | ||          d
           d S )Nr   r'   r   Fr   normalize_kernelr   r   r)   r   r   r   )r*   r(   r	   r   r   r   r   r   r,   s           r#   +test_against_scipy_with_additional_keywordsz@TestConvolve1DModels.test_against_scipy_with_additional_keywords(   s     	-,,,,,"1a++!!Q**$UFPUVVV
Ib!k&&))UU1XXF;;;ZZ]]666666r%   c                    t          j        dt          j        dt          j        z            z  dd          }t          j        dt          j        dt          j        z            z  dd          }t          |||d          }t          j        ddt          j        t          j                  z  z  dt	          j        d                    }t	          j        dd          }t           ||           ||          d	
           dS )z
        Test that convolving N(a, b) with N(c, d) gives N(a + c, b + d),
        where N(., .) stands for Gaussian probability density function,
        in which a and c are their means and b and d are their variances.
        r         Fr/      r   r   MbP?r   N)	r	   r   mathsqrtr   pir   r   r   )r   r   r   r   r    r"   r!   s          r#   test_sum_of_gaussiansz*TestConvolve1DModels.test_sum_of_gaussians5   s     "1tyRU';';#;QBB!!diBE	&:&:":AqAA$UFPUVVV
Q25)9)9%9 :ArwqzzJJIb!A

1D999999r%   c                    t          j                    }t          j                    }t          |||          }t          j        ddd          }|dz   |dk     z  | dz   |dk    z  z   }t          | ||          d           d S )Nr   r   c   r   r6   r   )r	   Box1Dr   r   linspacer   r   s          r#   test_convolve_box_modelsz-TestConvolve1DModels.test_convolve_box_modelsE   s    $UF>>>
KAr""1uQA26a1f"55ZZ]]666666r%   c                 2   t          j                    }t          j                    }t          j        ddd          }t          j        d          }t          d          5   ||          t          j                            t          |                    z   }ddd           n# 1 swxY w Y   t          |||d	
          }t          j                    } ||||          }	t          j         |	|          |z
            }
t          |
dd           dS )z:
        test that a convolve model can be fitted
        r      r=   
   )	amplitude{   )sizeNFr/   g        r3   )decimal)r	   r>   r   r   r?   r   randomnormallenr   r   LevMarLSQFittermeanr   )r   r   b1g1r!   
fake_model	fake_data
init_modelfitterfitted_modelmes              r#   test_fitting_convolve_modelsz1TestConvolve1DModels.test_fitting_convolve_modelsO   sR    \^^  KAr""&444
S!! 	F 	F"
1	(8(8c!ff(8(E(EEI	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F %R$OOO
(**vj!Y77W\\!__y011BQ//////s   !:B''B+.B+N)r   
__module____qualname__pytestmarkparametrizer   r   skipifr
   r$   r-   r1   r:   r@   rU    r%   r#   r   r      s       [VlH%=>>[I.>??7 7 @? ?>7 [Vnj%ABB[I.>??	I 	I @? CB	I [Vnj%ABB[I.>??	7 	7 @? CB	7 [Vnj%ABB: : CB: [Vnj%ABB7 7 CB7 [Vnj%ABB[I.>??0 0 @? CB0 0 0r%   r   )r7   numpyr   rX   numpy.testingr   r   astropy.convolution.convolver   r   r   astropy.modelingr   r	   "astropy.utils.compat.optional_depsr
   astropy.utils.miscr   r   r\   r%   r#   <module>rc      s          > > > > > > > > P P P P P P P P P P , , , , , , , , 8 8 8 8 8 8 . . . . . .S0 S0 S0 S0 S0 S0 S0 S0 S0 S0r%   