ó
‡ˆ\c           @   s1  d  d l  m Z 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 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 d  d l m Z e j j d ƒ Z d7 \ Z Z e j e e ƒ Z d „  Z d „  Z  d „  Z! e j" j# d ƒ e j" j$ d d d d d g ƒ e j" j$ d e% e& g ƒ e j" j$ d e% e& g ƒ d „  ƒ ƒ ƒ ƒ Z' d  „  Z( d! „  Z) d" „  Z* d# „  Z+ d$ „  Z, d% „  Z- d& „  Z. e j" j# d ƒ e j" j$ d d d d d g ƒ e j" j$ d e% e& g ƒ e j" j$ d e% e& g ƒ d' „  ƒ ƒ ƒ ƒ Z/ d( „  Z0 d) „  Z1 d* „  Z2 d+ „  Z3 d, „  Z4 d- „  Z5 d. „  Z6 e j" j# d ƒ e j" j$ d/ e% e& g ƒ d0 „  ƒ ƒ Z7 d1 „  Z8 d2 „  Z9 d3 „  Z: d4 „  Z; d5 „  Z< d6 „  Z= d S(8   iÿÿÿÿ(   t   divisionN(   t   ConvergenceWarning(   t   check_array(   t   assert_array_almost_equal(   t   assert_array_equal(   t   assert_equal(   t   assert_less(   t   assert_raises(   t   ignore_warnings(   t
   TempMemmap(   t   DictionaryLearning(   t   MiniBatchDictionaryLearning(   t   SparseCoder(   t   dict_learning_online(   t   sparse_encodei    i
   i   c    	   	   C   sØ   t  j j d ƒ }  d d d d d g } xª t j d d g d d	 g ƒ D]Š \ } } |  j | t ƒ } |  j | t ƒ } xW t j | d d
 g ƒ D]= \ } } t | | d | d | ƒ} t | j	 | | f ƒ q WqF Wd  S(   Ni    t   ompt
   lasso_larst   lasso_cdt   larst	   thresholdi   i   i	   i   t	   algorithmt   n_jobs(
   t   npt   randomt   RandomStatet	   itertoolst   productt   randnt
   n_featuresR   R   t   shape(	   t   rngt
   algorithmst   n_componentst	   n_samplest   X_t
   dictionaryR   R   t   code(    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_encode_shapes_omp   s    +%	c          C   sž   d }  t  |  d d ƒj t ƒ } t | j j |  t f ƒ d }  t  |  d d ƒj t ƒ } t | j j |  t f ƒ t | j t ƒ j t j d |  f ƒ d  S(   Ni   t   random_statei    i   (   R
   t   fitt   XR   t   components_R   R   t	   transform(   R    t   dico(    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_dict_learning_shapes+   s    c          C   sC   d }  t  |  d d ƒj t ƒ } | j j |  t f k s? t ‚ d  S(   Ni   R&   i    (   R
   R'   R(   R)   R   R   t   AssertionError(   R    R+   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_dict_learning_overcomplete6   s    s   ignore::DeprecationWarningt   transform_algorithmR   R   R   R   t   positive_codet   positive_dictc      
   C   s¾   d } t  | d |  d d d | d | ƒj t ƒ } | j t ƒ } | rf | j d k j ƒ  s t ‚ n | j d k  j ƒ  s t ‚ | r¢ | d k j ƒ  sº t ‚ n | d k  j ƒ  sº t ‚ d  S(   Ni   R/   R&   i    R0   R1   (   R
   R'   R(   R*   R)   t   allR-   t   any(   R/   R0   R1   R    R+   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_dict_learning_positivity=   s    c          C   s   d }  t  |  d d d d d d ƒ} | j t ƒ j t ƒ } t t j | | j ƒ t ƒ | j d d ƒ | j t ƒ } t t j | | j ƒ t d	 d
 ƒd  S(   Ni   R/   R   t   transform_alphagü©ñÒMbP?R&   i    R   t   decimali   (	   R
   R'   R(   R*   R   R   t   dotR)   t
   set_params(   R    R+   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt!   test_dict_learning_reconstruction^   s    c       
   C   s£   d }  t  |  d d d d d d d d	 ƒ} | j t ƒ j t ƒ } t t j | | j ƒ t ƒ | j d d
 ƒ | j t ƒ } t t j | | j ƒ t d d ƒd  S(   Ni   R/   R   R5   gü©ñÒMbP?R&   i    R   iÿÿÿÿR   R6   i   (	   R
   R'   R(   R*   R   R   R7   R)   R8   (   R    R+   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt*   test_dict_learning_reconstruction_parallelm   s    c          C   s“   d }  t  t ƒ { } t |  d d d d d d d d	 ƒ} t d
 t ƒ  | j | ƒ j | ƒ } Wd  QXt t j	 | | j
 ƒ | d d ƒWd  QXd  S(   Ni   R/   R   R5   gü©ñÒMbP?R&   i    R   iÿÿÿÿt   categoryR6   i   (   R	   R(   R
   R   R   R'   R*   R   R   R7   R)   (   R    t   X_read_onlyR+   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt(   test_dict_learning_lassocd_readonly_dataz   s    	c          C   s¶   d }  t  |  d d d d d d ƒ} | j t ƒ j t t j d f ƒ } t t j | ƒ ƒ d k sj t ‚ | j	 d d	 ƒ | j t t j d f ƒ } t
 t t j | ƒ ƒ d ƒ d  S(
   Ni   R/   R   t   transform_n_nonzero_coefsi   R&   i    i   R   (   R
   R'   R(   R*   R   t   newaxist   lent   flatnonzeroR-   R8   R   (   R    R+   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt    test_dict_learning_nonzero_coefs†   s    %!c          C   s/   d }  t  |  d d ƒ} t t | j t ƒ d  S(   Ni   t   fit_algorithms	   <unknown>(   R
   R   t
   ValueErrorR'   R(   (   R    R+   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt(   test_dict_learning_unknown_fit_algorithm’   s    c          C   s   d }  t  |  d d d d ƒ} | j t ƒ j t ƒ } t | _ | j t ƒ } t | d  d  … d  |  … f | d  d  … |  d  … f | ƒ d  S(   Ni   R/   R   R&   i    (   R
   R'   R(   R*   t   Truet
   split_signR   (   R    R+   R$   t
   split_code(    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_dict_learning_split˜   s    		c          C   s‹   t  j j d ƒ }  d } t t d | d d d |  ƒ\ } } t | j t | f ƒ t | j | t f ƒ t t  j	 | | ƒ j t j ƒ d  S(   Ni    i   R    t   alphai   R&   (
   R   R   R   R   R(   R   R   R!   R   R7   (   R   R    R$   R#   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt    test_dict_learning_online_shapes¤   s    c         C   sr  t  j j d ƒ } d } t | d |  d d d | d | ƒj t ƒ } | j t ƒ } | rx | j d k j ƒ  s“ t	 ‚ n | j d k  j
 ƒ  s“ t	 ‚ | r´ | d k j ƒ  sÌ t	 ‚ n | d k  j
 ƒ  sÌ t	 ‚ t t d | d d	 d | d | d | ƒ\ } } | r| d k j ƒ  s5t	 ‚ n | d k  j
 ƒ  s5t	 ‚ | rV| d k j ƒ  snt	 ‚ n | d k  j
 ƒ  snt	 ‚ d  S(
   Ni    i   R/   R&   R0   R1   R    RJ   i   (   R   R   R   R   R'   R(   R*   R)   R2   R-   R3   R   (   R/   R0   R1   R   R    R+   R$   R#   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt$   test_dict_learning_online_positivity¯   s,    c       
   C   s  d }  d d l  m } d d  l } | j } zª | ƒ  | _ t |  d d d d d d	 ƒ} | j t ƒ t |  d d d d
 d d	 ƒ} | j t ƒ t t d |  d d d d d d	 ƒt t d |  d d d d
 d d	 ƒWd  | | _ X| j j	 |  t
 f k s t ‚ d  S(   Ni   iÿÿÿÿ(   t	   cStringIOt   n_iteri   t   verbosei   R&   i    i   R    RJ   (   t   sklearn.externals.six.movesRM   t   syst   stdoutR   R'   R(   R   R)   R   R   R-   (   R    t   StringIORQ   t
   old_stdoutR+   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt#   test_dict_learning_online_verbosityß   s$    			
c          C   sM   d }  t  |  d d d d ƒ} | j t ƒ | j j |  t f k sI t ‚ d  S(   Ni   RN   i   R&   i    (   R   R'   R(   R)   R   R   R-   (   R    R+   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt*   test_dict_learning_online_estimator_shapesø   s    c          C   sI   d }  t  |  d d d d ƒj t ƒ } | j j |  t f k sE t ‚ d  S(   Ni   RN   i   R&   i    (   R   R'   R(   R)   R   R   R-   (   R    R+   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt&   test_dict_learning_online_overcompleteÿ   s    c          C   se   d }  t  j j d ƒ } | j |  t ƒ } t |  d d d | d d ƒj t ƒ } t | j	 | ƒ d  S(   Ni   i    RN   t	   dict_initR&   (
   R   R   R   R   R   R   R'   R(   R   R)   (   R    R   t   VR+   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt(   test_dict_learning_online_initialization  s    c       
   C   si   d }  t  j j d ƒ } | j |  t ƒ } | j d t ƒ t |  d d d | d d d t ƒj t	 ƒ d  S(	   Ni   i    t   writeRN   i   RX   R&   t   shuffle(
   R   R   R   R   R   t   setflagst   FalseR   R'   R(   (   R    R   RY   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt1   test_dict_learning_online_readonly_initialization  s    c          C   sT  d }  t  j j d ƒ } | j |  t ƒ } | t  j | d d d ƒd  d  … t  j f } t |  d d t t	 ƒ d d d	 d d
 t
 d | d d ƒj t	 ƒ } t |  d	 d d d d | d d ƒ} xE t d ƒ D]7 } x. t	 D]& } | j | t  j d  d  … f ƒ qÛ WqÎ Wt  j t t	 | j d	 d ƒd k ƒ s7t ‚ t | j | j d d ƒd  S(   Ni   i    i   t   axisi   RN   i
   t
   batch_sizeRJ   R\   RX   R&   R6   (   R   R   R   R   R   t   sumR?   R   R@   R(   R^   R'   t   ranget   partial_fitR2   R   R)   R-   R   (   R    R   RY   t   dict1t   dict2t   it   sample(    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt%   test_dict_learning_online_partial_fit  s"    0	(.c          C   sš   d }  t  j j d ƒ } | j |  t ƒ } | t  j | d d d ƒd  d  … t  j f } x9 d D]1 } t t | d | ƒ} t	 | j
 t |  f ƒ qa Wd  S(   Ni   i    i   R`   i   R   R   R   R   R   R   (   R   R   R   R   R   (   R   R   R   R   R   Rb   R?   R   R(   R   R   R!   (   R    R   RY   t   algoR$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_encode_shapes-  s    0t   positivec         C   s   d } t  j j d ƒ } | j | t ƒ } | t  j | d d d ƒd  d  … t  j f } xb d D]Z } t t | d
 | d |  ƒ} |  r£ | d k j	 ƒ  s» t
 ‚ qa | d k  j ƒ  sa t
 ‚ qa Wy t t | d
 d d |  ƒWn t k
 rû |  sü ‚  qü n Xd  S(   Ni   i    i   R`   i   R   R   R   R   R   Rl   R   (   R   R   R   R   (   R   R   R   R   R   Rb   R?   R   R(   R2   R-   R3   RD   (   Rl   R    R   RY   Rj   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_encode_positivity8  s    0c          C   s¸   d }  t  j j d ƒ } | j |  t ƒ } | t  j | d d d ƒd  d  … t  j f } t t d d ƒ} xE d D]= } t	 t | d | ƒ} t	 | | d | ƒ} t
 | | ƒ qs Wd  S(   Nid   i    i   R`   i   t   ordert   FR   R   R   R   R   R   (   R   R   R   R   R   (   R   R   R   R   R   Rb   R?   R   R(   R   R   (   R    R   RY   t   XfRj   t   at   b(    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_encode_inputP  s    0c          C   sÂ   d }  t  j j d ƒ } | j |  t ƒ } | t  j | d d d ƒd  d  … t  j f } t t | d d ƒ} t  j	 | d k ƒ s‹ t
 ‚ t t  j t  j t  j | | ƒ t d ƒ ƒ d ƒ d  S(	   Ni   i    i   R`   i   RJ   gü©ñÒMbP?gš™™™™™¹?(   R   R   R   R   R   Rb   R?   R   R(   R2   R-   R   t   sqrtR7   (   R    R   RY   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_encode_error\  s    0c          C   sk   t  j j d ƒ }  |  j d d ƒ } |  j d d ƒ } t t ƒ | | d d d d  ƒ} t | j d ƒ d  S(	   Ni    id   i@   i   R   R   t   n_nonzero_coefs(   id   i   (	   R   R   R   R   R   R   t   NoneR   R   (   R   R(   t   DR$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt)   test_sparse_encode_error_default_sparsityf  s    	c          C   sG   d }  t  j j d ƒ } | j |  t ƒ } t t t t | d d ƒd  S(   Ni   i    R   s	   <unknown>(	   R   R   R   R   R   R   RD   R   R(   (   R    R   RY   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_unknown_methodo  s    c          C   sÑ   d }  t  j j d ƒ } | j |  t ƒ } | t  j | d d d ƒd  d  … t  j f } t d | d d d	 d
 ƒ j t	 ƒ } t  j
 | d k ƒ sš t ‚ t t  j t  j t  j | | ƒ t	 d ƒ ƒ d ƒ d  S(   Ni   i    i   R`   i   R#   R/   R   R5   gü©ñÒMbP?gš™™™™™¹?(   R   R   R   R   R   Rb   R?   R   R*   R(   R2   R-   R   Rt   R7   (   R    R   RY   R$   (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_coder_estimatorv  s    0c          C   sŽ   t  j j d ƒ }  d
 \ } } |  j | | ƒ } t d ƒ d | } t  j j | | ƒ j t  j ƒ } t | d d d d	 ƒ} | j | ƒ d  S(   Ni	  i(   i@   g    €„>Ai   R/   R   R   i   (   i(   i@   (	   R   R   R   t   randt   intt   astypet   float32R   t   fit_transform(   R   R    R   t	   init_dictR!   t   datat   sc(    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   test_sparse_coder_parallel_mmap  s    !(   i
   i   (>   t
   __future__R    t   pytestt   numpyR   R   t   sklearn.exceptionsR   t   sklearn.utilsR   t   sklearn.utils.testingR   R   R   R   R   R   R	   t   sklearn.decompositionR
   R   R   R   R   R   R   t
   rng_globalR!   R   R   R(   R%   R,   R.   t   markt   filterwarningst   parametrizeR^   RF   R4   R9   R:   R=   RB   RE   RI   RK   RL   RU   RV   RW   RZ   R_   Ri   Rk   Rm   Rs   Ru   Ry   Rz   R{   R„   (    (    (    sM   lib/python2.7/site-packages/sklearn/decomposition/tests/test_dict_learning.pyt   <module>   sŽ   														#											
				