ó
‡ˆ\c           @   s   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 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 ƒ\ Z Z Z e d 9Z e d 9Z e j e j e ƒ e j e j e ƒ Z Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d  „  Z- d! „  Z. d" „  Z/ e j0 j1 d# d$ ƒ d% „  ƒ Z2 d& „  Z3 d S((   iÿÿÿÿN(   t   assert_raises(   t   assert_true(   t   assert_equal(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_warns(   t   ignore_warnings(   t   orthogonal_mpt   orthogonal_mp_gramt   OrthogonalMatchingPursuitt   OrthogonalMatchingPursuitCVt   LinearRegression(   t   check_random_state(   t   make_sparse_coded_signali   i   i   i   t   random_statei    i
   c           C   s[   t  t t t d  d  … d f d d ƒj t f ƒ t  t t t d d ƒj t d f ƒ d  S(   Ni    t   n_nonzero_coefsi   i   (   R   R   t   Xt   yt   shapet
   n_features(    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_correct_shapes#   s    (
c           C   s[   t  t t t d  d  … d f d d ƒj t f ƒ t  t t t d d ƒj t d f ƒ d  S(   Ni    R   i   i   (   R   R   t   Gt   XyR   R   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_correct_shapes_gram*   s    (
c        	   C   sz   t  t j t t t d  d  … d f d d ƒƒ d k ƒ t  t j t t t d  d  … d f d d d t ƒƒ d k ƒ d  S(   Ni    R   i   t
   precompute(   R   t   npt   count_nonzeroR   R   R   t   True(    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_n_nonzero_coefs1   s    %+c          C   sØ   d }  t  t t d  d  … d f d |  ƒ} t  t t d  d  … d f d |  d t ƒ} t j t d  d  … d f t j t | ƒ d ƒ |  k s• t ‚ t j t d  d  … d f t j t | ƒ d ƒ |  k sÔ t ‚ d  S(   Ng      à?i    t   tolR   i   (   R   R   R   R   R   t   sumt   dott   AssertionError(   R   t   gammat
   gamma_gram(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_tol8   s
    %+?c        	   C   s5   t  t t t d d ƒt t t d d d t ƒƒ d  S(   NR   i   R   (   R   R   R   R   R   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_with_without_gram@   s    c        	   C   s5   t  t t t d d ƒt t t d d d t ƒƒ d  S(   NR   g      ð?R   (   R   R   R   R   R   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_with_without_gram_tolF   s    c        
   C   sl   t  t t t d d ƒt t t d t ƒƒ t  t t t t t d d d t ƒt t t d t d t ƒƒ d  S(   NR   i    R   R   (   R   R   R   R   R   R   t   RuntimeWarningR   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_unreachable_accuracyL   s    c           C   s¢   t  t t t t d d ƒt  t t t t d d ƒt  t t t t d t d ƒt  t t t t d d ƒt  t t t t d d ƒt  t t t t d t d ƒd  S(   NR   iÿÿÿÿR   i   (	   R    t
   ValueErrorR   R   R   R   R   R   R   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_bad_inputX   s    c          C   sÙ   t  d  d  … d f j ƒ  \ }  t t t d  d  … d f d ƒ } t t t d  d  … d f d ƒ } t |  t	 j
 | ƒ ƒ t |  t	 j
 | ƒ ƒ t t  d  d  … d f | d d ƒt t  d  d  … d f | d d ƒd  S(   Ni    i   t   decimali   (   R!   t   nonzeroR   R   R   R   R   R   R   R   t   flatnonzeroR   (   t   idxt	   gamma_recR"   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_perfect_signal_recoveryc   s    ""#c          C   sÂ   t  d  d  … d f j ƒ  \ }  t j ƒ  } | j d t ƒ t j ƒ  } | j d t ƒ t | | d  d  … d f d d t d t ƒ} t |  t	 j
 | ƒ ƒ t t  d  d  … d f | d d ƒd  S(   Ni    t   writei   t	   copy_Gramt   copy_XyR*   i   (   R!   R+   R   t   copyt   setflagst   FalseR   R   R   R   R,   R   (   R-   t
   G_readonlyt   Xy_readonlyR"   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt    test_orthogonal_mp_gram_readonlym   s    c          C   s	  t  d t ƒ }  |  j t t d  d  … d f ƒ t |  j j t f ƒ t |  j	 j d ƒ t
 j |  j ƒ t k sv t ‚ |  j t t ƒ t |  j j t t f ƒ t |  j	 j t f ƒ t
 j |  j ƒ t t k s× t ‚ |  j d j ƒ  } |  j d t d t ƒ |  j t t d  d  … d f ƒ t | |  j ƒ |  j d t d t ƒ |  j t t d  d  … d f ƒ t
 j |  j ƒ t k s„t ‚ t |  j j t f ƒ t |  j	 d ƒ |  j t t ƒ t |  j j t t f ƒ t |  j	 d ƒ t
 j |  j ƒ t t k st ‚ d  S(   NR   i    t   fit_interceptt	   normalize(    (   R	   R   t   fitR   R   R   t   coef_R   R   t
   intercept_R   R   R    t	   n_targetsR3   t
   set_paramsR   R5   R   (   t   ompt   coef_normalized(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_estimator{   s,     "  c          C   s   t  j ƒ  }  |  d  d  … d f |  d  d  … d f <t j t ƒ } d | d <| d <t j |  | ƒ } t t t |  | d ƒ d  S(   Ni    i   g      ð?i   (	   R   R3   R   t   zerosR   R   R   R&   R   (   t   newXR!   t   newy(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_identical_regressors˜   s    &c          C   sª   t  j t ƒ }  d |  d <d |  d <t  j t |  ƒ } t  j t j | ƒ } t t | d ƒ } t t | d ƒ } t	 t  j
 | ƒ d d g ƒ t	 t  j
 | ƒ d d g ƒ d  S(   Ng      ð?i   g      à?i    i   (   R   RC   R   R   R   t   TR   R   R   R   R,   (   R!   t   new_yt   new_Xyt	   gamma_hatt   gamma_hat_gram(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_swapped_regressors¡   s    

c          C   s   t  j t ƒ }  t  j t j |  ƒ } t t ƒ t |  d ƒ } t t ƒ t | d ƒ } t	 t  j
 | d k ƒ t ƒ t	 t  j
 | d k ƒ t ƒ d  S(   Ni   i    (   R   t
   zeros_likeR   R   R   RG   R   R   R   R   t   allR   (   t   y_emptyt   Xy_emptyt   gamma_emptyt   gamma_empty_gram(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_no_atoms°   s    c          C   sî   t  t t d d d t ƒ}  t  t t d d d t ƒ} t |  j t t d f ƒ t	 |  d  d  … d  d  … d f | ƒ t
 t t d d d t ƒ}  t
 t t d d d t ƒ} t |  j t t d f ƒ t	 |  d  d  … d  d  … d f | ƒ d  S(   NR   i   t   return_pathiÿÿÿÿ(   R   R   R   R   R5   R   R   R   R>   R   R   R   R   (   t   patht   last(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_omp_path¹   s    &c       	   C   s…   t  t t d d d t d t ƒ}  t  t t d d d t d t ƒ} t |  j t t d f ƒ t	 |  d  d  … d  d  … d f | ƒ d  S(   NR   i   RT   R   iÿÿÿÿ(
   R   R   R   R   R5   R   R   R   R>   R   (   RU   RV   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt#   test_omp_return_path_prop_with_gramÄ   s    		t   reasonsK   mkl problem - see https://github.com/scikit-learn/scikit-learn/issues/12676c       	   C   sÂ   t  d  d  … d f }  t d  d  … d f } t d t d t d d d d ƒ } | j t |  ƒ t | j t	 ƒ t
 | j | ƒ t d t d t d | j ƒ } | j t |  ƒ t
 | j | j ƒ d  S(	   Ni    R:   R9   t   max_iteri
   t   cvi   R   (   R   R!   R
   R   R5   R;   R   R   t   n_nonzero_coefs_R   R   R<   R	   (   t   y_t   gamma_t   ompcvR@   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_omp_cvÌ   s    c          C   s‘   t  d ƒ }  d \ } } d } |  j | | ƒ } |  j | | ƒ } t d | ƒ } t ƒ  } | j | | ƒ | j | | ƒ t | j | j ƒ d  S(   Ni    i
   i   i   R   (   i
   i   (   R   t   randnR	   R   R;   R   R<   (   t   rngt	   n_samplesR   R>   R   t   YR@   t   lstsq(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   test_omp_reaches_least_squaresÛ   s    	(   i   i   i   i   (4   t   numpyR   t   pytestt   sklearn.utils.testingR    R   R   R   R   R   R   t   sklearn.linear_modelR   R   R	   R
   R   t   sklearn.utilsR   t   sklearn.datasetsR   Rc   R   R   R>   R   R   R!   R   RG   R   R   R   R   R   R#   R$   R%   R'   R)   R/   R8   RB   RF   RL   RS   RW   RX   t   markt   xfailR`   Rf   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_omp.pyt   <module>   sF   (

+									
									