o
    tBh(                  	   @   s  d dl 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 d dl	m
Z
mZmZmZmZ d dlmZ d dlmZ d	\ZZZZeeeeed d
d\ZZZed9 Zed9 ZeejeeejeZZejdeegejdg ddd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'ejd eefeefgejd!d"d#id$d#id$ed% igd&d' Z(d(d) Z)d*d+ Z*ej+d,d-d. Z,d/d0 Z-d1d2 Z.d3d4 Z/d5d6 Z0d7d8 Z1ej+d,d9d: Z2ej+d,d;d< Z3ejd=ej4ej5fd>d? Z6d@dA Z7dS )B    N)assert_allclose)assert_array_equal)assert_array_almost_equal)ignore_warnings)orthogonal_mporthogonal_mp_gramOrthogonalMatchingPursuitOrthogonalMatchingPursuitCVLinearRegression)check_random_state)make_sparse_coded_signal)   #         T)	n_samplesn_components
n_featuresn_nonzero_coefsrandom_statedata_transposed
   OmpModelznormalize, n_warnings))Tr   )Fr   )
deprecated   c           
      C   s   t d}d}d}|||}d||dk < ||}| |d}tjdd}	td	t ||| W d    n1 s;w   Y  td
d |	D |ksMJ d S )Nr         g        g?)	normalizeT)recordalwaysc                 S   s   g | ]}|j qS  )message).0wr    r    z/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_omp.py
<listcomp>>   s    z6test_assure_warning_when_normalize.<locals>.<listcomp>)	r   randnrandwarningscatch_warningssimplefilterFutureWarningfitlen)
r   r   
n_warningsrngr   r   Xymodelrecr    r    r$   "test_assure_warning_when_normalize*   s   

r4   c                   C   F   t ttd d df ddjtfksJ t ttddjtdfks!J d S Nr   r   r   r   )r   r0   r1   shaper   r    r    r    r$   test_correct_shapesA      & r9   c                   C   r5   r6   )r   GXyr8   r   r    r    r    r$   test_correct_shapes_gramF   r:   r=   c                   C   sV   t tttd d df dddksJ t tttd d df ddddks)J d S )Nr   r   r7   Tr   
precompute)npcount_nonzeror   r0   r1   r    r    r    r$   test_n_nonzero_coefsK   s   ( rB   c                  C   s   d} t ttd d df | d}t ttd d df | dd}ttd d df tt| d | ks4J ttd d df tt| d | ksKJ d S )N      ?r   tolTrE   r?   r   )r   r0   r1   r@   sumdot)rE   gamma
gamma_gramr    r    r$   test_tolS   s
   .2rK   c                   C   $   t tttddtttddd d S )Nr   r7   Tr>   r   r   r0   r1   r    r    r    r$   test_with_without_gram[   s   rN   c                   C   rL   )N      ?rD   TrF   rM   r    r    r    r$   test_with_without_gram_tolb   s   rP   c               	   C   sx   t tttddttttd d} tjt| d t tttdddtttdtd W d    d S 1 s5w   Y  d S )	Nr   rD   r7   Orthogonal matching pursuit ended prematurely due to linear dependence in the dictionary. The requested precision might not have been met.matchTrF   )r?   r   )r   r   r0   r1   r   pytestwarnsRuntimeWarning)warning_messager    r    r$   test_unreachable_accuracyh   s   "rX   positional_paramskeyword_paramsrE   r   r   c                 C   s>   t t t| i | W d    d S 1 sw   Y  d S )N)rT   raises
ValueErrorr   )rY   rZ   r    r    r$   test_bad_inputx   s   "r^   c                  C   s   t d d df  \} tttd d df dd}tttd d df dd}t| t	
| t| t	
| tt d d df |dd tt d d df |dd d S )Nr   r   r7   r   decimal)rI   nonzeror   r0   r1   r   r;   r<   r   r@   flatnonzeror   )idx	gamma_recrJ   r    r    r$   test_perfect_signal_recovery   s   re   c                  C   s   t d d df  \} t }|jdd t }|jdd t||d d df dddd}t| t	| t
t d d df |dd d S )Nr   F)writer   )r   	copy_Gramcopy_Xyr   r_   )rI   ra   r;   copysetflagsr<   r   r   r@   rb   r   )rc   
G_readonlyXy_readonlyrJ   r    r    r$    test_orthogonal_mp_gram_readonly   s   rm   z!ignore:The default of 'normalize'c                  C   s  t td} | ttd d df  | jjtfksJ | jjdks"J t	
| jtks,J | tt | jjttfks<J | jjtfksEJ t	
| jtt ksQJ | jd  }| jddd | ttd d df  t|| j | jddd | ttd d df  t	
| jtksJ | jjtfksJ | jdksJ | tt | jjttfksJ | jdksJ t	
| jtt ksJ d S )Nr7   r   r    TF)fit_interceptr   )r   r   r,   r0   r1   coef_r8   r   
intercept_r@   rA   	n_targetsri   
set_paramsr   )ompcoef_normalizedr    r    r$   test_estimator   s,   
ru   c                  C   s   t  } | d d df | d d df< tt}d |d< |d< t| |}d}tjt|d t	| |dd W d    d S 1 sAw   Y  d S )Nr   r   rO   rQ   rR   r   r7   )
r0   ri   r@   zerosr   rH   rT   rU   rV   r   )newXrI   newyrW   r    r    r$   test_identical_regressors   s   
"ry   c                  C   s|   t t} d| d< d| d< t t| }t tj|}tt|dd}tt|dd}t	t 
|ddg t	t 
|ddg d S )NrO      rC   r   r   r7   )r@   rv   r   rH   r0   Tr   r   r;   r   rb   )rI   new_ynew_Xy	gamma_hatgamma_hat_gramr    r    r$   test_swapped_regressors   s   
r   c                  C   sd   t t} t tj| }ttt| dd}ttt|dd}t 	|dks'J t 	|dks0J d S )Nr   r7   r   )
r@   
zeros_liker1   rH   r0   r{   r   r   r;   all)y_emptyXy_emptygamma_emptygamma_empty_gramr    r    r$   test_no_atoms   s   
r   c                  C   s   t ttddd} t ttddd}| jttdfksJ t| d d d d df | ttt	ddd} ttt	ddd}| jttdfksBJ t| d d d d df | d S )Nr   T)r   return_pathFr[   )
r   r0   r1   r8   r   rq   r   r   r;   r<   pathlastr    r    r$   test_omp_path   s    r   c                  C   sX   t ttdddd} t ttdddd}| jttdfksJ t| d d d d df | d S )Nr   T)r   r   r?   Fr[   )r   r0   r1   r8   r   rq   r   r   r    r    r$   #test_omp_return_path_prop_with_gram   s    r   c                  C   s   t d d df } td d df }tdddd}|t|  |jtks$J t|j| t	dd|jd}|t|  t|j|j d S )Nr   TFr   )r   rn   max_iter)r   rn   r   )
r1   rI   r	   r,   r0   n_nonzero_coefs_r   r   ro   r   )y_gamma_ompcvrs   r    r    r$   test_omp_cv   s   r   c                  C   sf   t d} d\}}d}| ||}| ||}t|d}t }||| ||| t|j|j d S )Nr   )r      r   r7   )r   r&   r   r
   r,   r   ro   )r/   r   r   rq   r0   Yrs   lstsqr    r    r$   test_omp_reaches_least_squares  s   
r   	data_typec                 C   s,   t t| t| dd}|j| ksJ d S Nr   r7   )r   r;   astyper<   dtype)r   coefr    r    r$   test_omp_gram_dtype_match  s   r   c                  C   sJ   t ttjttjdd} t ttjttjdd}t| | d S r   )r   r;   r   r@   float32r<   float64r   )coef_32coef_64r    r    r$   #test_omp_gram_numerical_consistency  s   r   )8numpyr@   rT   r(   sklearn.utils._testingr   r   r   r   sklearn.linear_modelr   r   r   r	   r
   sklearn.utilsr   sklearn.datasetsr   r   r   r   rq   r1   r0   rI   rH   r{   r;   r<   markparametrizer4   r9   r=   rB   rK   rN   rP   rX   r^   re   rm   filterwarningsru   ry   r   r   r   r   r   r   r   r   r   r   r    r    r    r$   <module>   st   	


	




