o
    \i$                     @   s  d dl Zd dl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mZmZmZ d\ZZZZeeeeed d\ZZZejejejZZZed9 Zed9 ZeejeeejeZ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ed igdd Z&dd Z'dd  Z(d!d" Z)d#d$ Z*d%d& Z+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1ej$%d3ej2ej3fd4d5 Z4d6d7 Z5dS )8    N)make_sparse_coded_signal)LinearRegressionOrthogonalMatchingPursuitOrthogonalMatchingPursuitCVorthogonal_mporthogonal_mp_gram)check_random_state)assert_allcloseassert_array_almost_equalassert_array_equalignore_warnings)   #         )	n_samplesn_components
n_featuresn_nonzero_coefsrandom_state
   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   Xyshaper    r   r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_omp.pytest_correct_shapes)      & r   c                   C   r   r   )r   GXyr   r   r   r   r   r   test_correct_shapes_gram.   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   r   Tr   
precompute)npcount_nonzeror   r   r   r   r   r   r   test_n_nonzero_coefs3   s   ( r(   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r+   r%      )r   r   r   r&   sumdot)r+   gamma
gamma_gramr   r   r   test_tol;   s
   .2r2   c                   C   $   t tttddtttddd d S )Nr   r   Tr$   r
   r   r   r   r   r   r   r   test_with_without_gramC   s   r5   c                   C   r3   )N      ?r*   Tr,   r4   r   r   r   r   test_with_without_gram_tolJ   s   r7   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   r*   r   Orthogonal matching pursuit ended prematurely due to linear dependence in the dictionary. The requested precision might not have been met.matchTr,   )r%   r   )r
   r   r   r   r   pytestwarnsRuntimeWarning)warning_messager   r   r   test_unreachable_accuracyP   s   "r?   positional_paramskeyword_paramsr      c                 C   s>   t t t| i | W d    d S 1 sw   Y  d S )N)r;   raises
ValueErrorr   )r@   rA   r   r   r   test_bad_input`   s   "rE   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   r   r-   decimal)r0   nonzeror   r   r   r   r!   r"   r   r&   flatnonzeror
   )idx	gamma_recr1   r   r   r   test_perfect_signal_recoveryj   s   rL   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-   rF   )r0   rH   r!   copysetflagsr"   r   r   r&   rI   r
   )rJ   
G_readonlyXy_readonlyr1   r   r   r    test_orthogonal_mp_gram_readonlyt   s   rT   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 | ttd d df  t|| j | j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 )Nr   r   r   T)fit_interceptF)r   r   fitr   r   coef_r   r   
intercept_r&   r'   	n_targetsrP   
set_paramsr
   )ompcoef_normalizedr   r   r   test_estimator   s,   
r]   c                  C   sf   t td} | ttdddf  | jtksJ t tdd} | ttdddf  | jdu s1J dS )z=Check `n_nonzero_coefs_` correct when `tol` is and isn't set.r   Nr   r)   )r   r+   )r   r   rV   r   r   n_nonzero_coefs_)r[   r   r   r   test_estimator_n_nonzero_coefs   s   
r_   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   rB   r6   r8   r9   r-   r   )
r   rP   r&   zerosr   r/   r;   r<   r=   r   )newXr0   newyr>   r   r   r   test_identical_regressors   s   
"rc   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 )Nr6      r)   r   r-   r   )r&   r`   r   r/   r   Tr   r   r!   r   rI   )r0   new_ynew_Xy	gamma_hatgamma_hat_gramr   r   r   test_swapped_regressors   s   
rj   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 )NrB   r   r   )
r&   
zeros_liker   r/   r   re   r   r   r!   all)y_emptyXy_emptygamma_emptygamma_empty_gramr   r   r   test_no_atoms   s   
rq   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_pathF)
r   r   r   r   r   rY   r
   r   r!   r"   pathlastr   r   r   test_omp_path   s    rw   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   rr   r%   Frs   )r   r   r   r   r   rY   r
   rt   r   r   r   #test_omp_return_path_prop_with_gram   s    rx   c                  C   s~   t d d df } td d df }tddd}|t|  |jtks#J t|j| t	d|jd}|t|  t|j|j d S )Nr   Fr   )rU   max_iter)rU   r   )
r   r0   r   rV   r   r^   r   r
   rW   r   )y_gamma_ompcvr[   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   r   )r   randnr   r   rV   r
   rW   )rngr   r   rY   r   Yr[   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   r   )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   )6numpyr&   r;   sklearn.datasetsr   sklearn.linear_modelr   r   r   r   r   sklearn.utilsr   sklearn.utils._testingr	   r
   r   r   r   r   r   rY   r   r   r0   re   r/   r!   r"   r   r#   r(   r2   r5   r7   r?   markparametrizerE   rL   rT   r]   r_   rc   rj   rq   rw   rx   r}   r   r   r   r   r   r   r   r   r   <module>   sZ   
	
