ó
Ê½÷Xc           @` s  d  Z  d d l m Z m Z m Z d d l Z d d l m Z m Z d d l	 m
 Z
 m Z m Z m Z m Z m Z m Z d d l m Z d d l m Z m Z d d l m Z d d	 l m Z d
 d d d d d d g Z d d e e d „ Z d e
 f d „  ƒ  YZ e d k re ƒ  n  d S(   s)   test sparse matrix construction functionsi    (   t   divisiont   print_functiont   absolute_importN(   t   arrayt   matrix(   t   TestCaset   run_module_suitet   assert_equalt   assert_t   assert_array_equalt   assert_raisest   assert_array_almost_equal_nulp(   t   assert_raises_regex(   t
   csr_matrixt
   coo_matrix(   t	   construct(   t   randt   csrt   csct   coot   bsrt   diat   lilt   dokg{®Gáz„?c         C` sm   | d  k r t j } n- t | t t j f ƒ rE t j j | ƒ } n  | j } t j |  | | | | | | ƒ S(   N(	   t   Nonet   npt   randomt
   isinstancet   intt   integert   RandomStatet   randnR   (   t   mt   nt   densityt   formatt   dtypet   random_statet   data_rvs(    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   _sprandn   s    	t   TestConstructUtilsc           B` sà   e  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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c   
      C` s²  t  d d d d d g g ƒ } t  d d d d d g d d d d	 d
 g g ƒ } t  d d d d d g d d d d	 d
 g d d d d d g g ƒ } g  } | j | d d d d g g f ƒ | j | d g d d d g g f ƒ | j | d g d d d g d g g f ƒ | j | d g d d d d g g f ƒ | j | d g d d d d g g f ƒ | j | d g d d d d g g f ƒ | j | d g d d d d g d d g g f ƒ | j | d g d d d d g d d g g f ƒ | j | d g d d d d g d d g g f ƒ | j | d g d d d d d d g d d d d g d d d d g g f ƒ | j | d g d d d d d d g d d d d g d d d d g g f ƒ | j | d g d d d d d d d g d d d d d g d d d d d g g f ƒ | j | d d g d d d d d g d d d g d d d g g f ƒ | j | d d g d d d d d d g d d d d g d d d d g g f ƒ | j | d d g d d d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g g f ƒ | j | d d d g d d d d d d d d g d d d d d d g d d d d d d g d d d d	 d d g d d d d d
 d g d d d d d d g g f ƒ | j | d d d g d d d d d d d g d d d d	 d g d d d d d
 g d d d d d g d d d d d g d d d d d g g f ƒ xB | D]: \ } } } } }	 t t j | | | | ƒ j ƒ  |	 ƒ qpWd  S(   Ni   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   i    iÿÿÿÿiýÿÿÿiüÿÿÿ(   R   t   appendR   R   t   spdiagst   todense(
   t   selft   diags1t   diags2t   diags3t   casest   dt   oR    R!   t   result(    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_spdiags!   sR    "%+(((111LLUFO-0-c   	      C` s¹  t  d d d d d g ƒ } t  d d d d	 d
 g ƒ } t  d d d d d g ƒ } g  } | j | d  d d d g g f ƒ | j | d  g d g d d g g f ƒ | j | d  g d g d d g d g g f ƒ | j | d  g d g d d d g g f ƒ | j | d  g d g d d d g g f ƒ | j | d  g d g d d d g d d g g f ƒ | j | d  g d g d d d g d d g g f ƒ | j | d  g d g d d d d d g d d d d g d d d d g g f ƒ | j | d  g d g d  d d d d g d d d d g d d d d g g f ƒ | j | d  g d g d! d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d" d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d# d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d$ d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d% d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d& d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d' d d d d d g d d d d d g d d d d d g g f ƒ | j | d  g d g d( d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  g d g d) d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  g d g d* d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  g d g d+ d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  g d g d, d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  g d g d- d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  g d g d. d d d g d d d g d d d g d d d g d d d g g f ƒ | j | d  | d  g d d g d/ d d d g d d d g d d d g g f ƒ | j | d  | d  g d d g d0 d d d d g d d d d g d d d d g g f ƒ | j | d  | d  g d d g d1 d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g d d d d d d g g f ƒ | j | d  | | d  g d d d g d2 d d d d d g d d d d d g d d d d d g d d d d	 d g d d d d d
 g g f ƒ | j | d  | d  | g d d d g d3 d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g g f ƒ | j | g d g d4 d g g f ƒ | j | d  | g d d g d5 d d d g d d d g d d d g g f ƒ | j t j  d d d g d d d g g ƒ d d g d6 d d d g d d d g d d d g g f ƒ | j d d d g d d d g d7 d d d g d d d g d d d g g f ƒ xÏ | D]Ç \ } } } } yŽ t t j | | d | ƒj ƒ  | ƒ | d | d k r‰t | d d ƒ r‰t | d ƒ t	 | ƒ k r‰t t j | | ƒ j ƒ  | ƒ n  Wqê
t
 d | | | | f ƒ ‚  qê
Xqê
Wd  S(8   Ni   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   i    iÿÿÿÿiþÿÿÿiüÿÿÿiýÿÿÿt   shapet   __len__s   %r %r %r %r(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R)   R   R   R   t   diagsR+   t   hasattrt   lent   maxt   print(	   R,   t   at   bt   cR0   R1   R2   R5   R3   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt
   test_diagsP   sz    #)/,,55PPYYYYYYY_______QZ8;;%Md-C&c         C` sD   t  d d d d d g ƒ } t t j | ƒ j ƒ  t j | ƒ ƒ d  S(   Ni   i   i   i   i   (   R   R   R   R7   R+   R   t   diag(   R,   R<   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_default™   s    c         C` sG   t  d d d d d g d d d d d g g ƒ } t t t j | ƒ d  S(   Ni   i   i   i   i   i   (   R   R
   t
   ValueErrorR   R7   (   R,   R<   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_default_bad   s    0c         C` sÖ  t  d d d d d g ƒ } t  d d d d	 d
 g ƒ } t  d d d d d g ƒ } g  } | j | d  g d d f ƒ | j | d  | | d  g d d d g d f ƒ | j | d  | | d  g d d d g d f ƒ | j | d  | | d  g d d d g d  f ƒ | j g  d d d g d  f ƒ | j d g d g d f ƒ | j | g d d  f ƒ xX | D]P \ } } } y t t t j | | | ƒ Wq_t d | | | f ƒ ‚  q_Xq_Wt t t j d  g g d g ƒ d  S(   Ni   i   i   i   i   i   i   i   i	   i
   i   i   i   i   i   i    iÿÿÿÿiüÿÿÿiûÿÿÿs   %r %r %r(   i   i   (   i   i   (   i   i   (   i   i   (	   R   R)   R   R
   RB   R   R7   R;   t	   TypeError(   R,   R<   R=   R>   R0   R1   R2   R5   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_bad¡   s$    000c   
      C` sw  t  j j d ƒ x`d d d d d d g D]F} d | d t  j j d d ƒ } t  j | d | d ƒ } t  j j | ƒ | |  } g  | D]" } t  j j | t | ƒ ƒ ^ qŒ } t j	 | | ƒ } t
 g  t | | ƒ D] \ } } t  j | | ƒ ^ qÙ ƒ }	 t | j ƒ  |	 ƒ t | ƒ d k r) t j	 | d | d ƒ } t  j | d | d ƒ }	 t | j ƒ  |	 ƒ q) q) Wd  S(	   NiÒ  i   i   i   i   i   i
   i    (   R   R   t   seedt   randintt   aranget   shuffleR   t   absR   R7   t   sumt   zipR@   R   R+   R9   (
   R,   t   n_diagsR!   t   offsetst   qt	   diagonalst   matt   xt   jt	   dense_mat(    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_vs_diag¸   s    !
/:c         C` s]   t  j d g d g d d d t ƒ} t | j t ƒ t | j ƒ  d d g d d g g ƒ d  S(   Ngš™™™™™@i    R5   i   R$   (   i   i   (   R   R7   R   R   R$   R+   (   R,   RR   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_dtypeÓ   s    $c         C` sg   t  t d ƒ ƒ } xN t d d ƒ D]= } t t j | | ƒ j ƒ  t j | g | g ƒ j ƒ  ƒ q" Wd  S(   Ni   iûÿÿÿi   (   t   listt   rangeR   R   R7   t   toarray(   R,   R1   t   k(    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_one_diagonalØ   s    c         C` s#   t  j g  ƒ } t | j d ƒ d  S(   Ni    (   i    i    (   R   R7   R   R5   (   R,   RR   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_diags_emptyÞ   s    c         C` s  t  t j d ƒ j ƒ  d g g ƒ t  t j d ƒ j ƒ  d d g d d g g ƒ t j d d d d d ƒ} t  | j t j d ƒ ƒ t  | j d ƒ xj t D]b } t j d d | ƒ} t  | j | ƒ t  | j ƒ  d d d g d d d g d d d g g ƒ q› Wd  S(	   Ni   i   i    i   R$   t   int8R#   R   (   R   R   t   identityRY   R$   R   R#   t   sparse_formats(   R,   t   It   fmt(    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_identityâ   s    ".c      
   C` sÊ  t  t j d d ƒ j ƒ  d g g ƒ t  t j d d ƒ j ƒ  d d d g d d d g g ƒ t  t j d d ƒ j ƒ  d d g d d g d d g g ƒ t  t j d d ƒ j ƒ  d d d g d d d g d d d g g ƒ t  t j d d d d ƒj t j d ƒ ƒ x¿ d d g D]± } x¨ d d g D]š } x‘ t d d	 ƒ D]€ } t  t j | | d
 | ƒj ƒ  t j | | d
 | ƒƒ | | k r:t  t j | d
 | ƒj ƒ  t j | | d
 | ƒƒ q:q:Wq$WqWd  S(   Ni   i   i   i    R$   t   int16i   iûÿÿÿi   RZ   (   R   R   t   eyeRY   R$   R   RX   (   R,   R    R!   RZ   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_eyeï   s    %7:C+7c         C` s  t  t j d ƒ j ƒ  d g g ƒ t  t j d ƒ j ƒ  d d g d d g g ƒ t j d d d d d ƒ} t  | j t j d ƒ ƒ t  | j d ƒ xj t D]b } t j d d | ƒ} t  | j | ƒ t  | j ƒ  d d d g d d d g d d d g g ƒ q› Wd  S(	   Ni   i   i    i   R$   R]   R#   R   (   R   R   Rd   RY   R$   R   R#   R_   (   R,   R`   Ra   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_eye_oneþ   s    ".c      	   C` sD  g  } | j  t d g g ƒ ƒ | j  t d g g ƒ ƒ | j  t d g g ƒ ƒ | j  t d g g ƒ ƒ | j  t d g d g g ƒ ƒ | j  t d d g g ƒ ƒ | j  t d d g d d g g ƒ ƒ | j  t d d g d d g g ƒ ƒ | j  t d d d	 g d
 d d g g ƒ ƒ | j  t d d g d d g d d g g ƒ ƒ | j  t d d d g d d d g d d d
 g g ƒ ƒ | j  t d d d d d d d
 g g ƒ ƒ | j  t d d d d g d d d d g g ƒ ƒ xb | D]Z } xQ | D]I } t j t | ƒ t | ƒ ƒ j ƒ  } t j | | ƒ } t | | ƒ qïWqâWd  S(   Ni    iÿÿÿÿi   i
   i   i   i   i   iúÿÿÿi   i   i   g      à?g      À?g      
@g      @(   R)   R   R   t   kronR   R+   R   R	   (   R,   R0   R<   R=   R3   t   expected(    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt	   test_kron  s&    %%+.7+1$c         C` s¹  g  } | j  t d g g ƒ ƒ | j  t d g g ƒ ƒ | j  t d g g ƒ ƒ | j  t d g g ƒ ƒ | j  t d d g d d g g ƒ ƒ | j  t d d g d d g g ƒ ƒ | j  t d d d	 g d
 d d g d d d g g ƒ ƒ | j  t d d d g d d d g d d d
 g g ƒ ƒ x | D]ˆ } x | D]w } t j t | ƒ t | ƒ ƒ j ƒ  } t j t j t	 | ƒ ƒ | ƒ t j | t j t	 | ƒ ƒ ƒ } t
 | | ƒ q6Wq)Wd  S(   Ni    iÿÿÿÿi   i
   i   i   i   i   iúÿÿÿi   i   iþÿÿÿ(   R)   R   R   t   kronsumR   R+   R   Rg   Rd   R9   R	   (   R,   R0   R<   R=   R3   Rh   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_kronsum"  s    %%77$"c         C` s  t  d d g d d g g ƒ } t  d d g g ƒ } t d d g d d g d d g g ƒ } t t j | | g ƒ j ƒ  | ƒ t t j | | g d t j ƒj t j ƒ t t j | j	 ƒ  | j	 ƒ  g ƒ j ƒ  | ƒ t t j | j	 ƒ  | j	 ƒ  g d t j ƒj t j ƒ d  S(   Ni   i   i   i   i   i   R$   (
   R   R   R   R   t   vstackR+   R   t   float32R$   t   tocsr(   R,   t   At   BRh   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_vstack5  s    	"+'-c         C` s  t  d d g d d g g ƒ } t  d g d g g ƒ } t d d d g d d d g g ƒ } t t j | | g ƒ j ƒ  | ƒ t t j | | g d t j ƒj t j ƒ t t j | j	 ƒ  | j	 ƒ  g ƒ j ƒ  | ƒ t t j | j	 ƒ  | j	 ƒ  g d t j ƒj t j ƒ d  S(   Ni   i   i   i   i   i   R$   (
   R   R   R   R   t   hstackR+   R   Rm   R$   t   tocsc(   R,   Ro   Rp   Rh   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_hstackD  s    "+'-c         C` sR  t  d d g d d g g ƒ } t  d g d g g ƒ } t  d g g ƒ } t  d ƒ } t d d d g d d d g d d d g g ƒ } t t j | | g d  | g g ƒ j ƒ  | ƒ t d d d g d d d g d d d g g ƒ } t t j | d  g d  | g g ƒ j ƒ  | ƒ t d d g d d g d d g g ƒ } t t j d  | g | d  g g ƒ j ƒ  | ƒ t t j d ƒ ƒ } t t j d  d  g g ƒ j ƒ  | ƒ t t j d  | g | d  g g ƒ j ƒ  | ƒ t d g g ƒ } t t j d  | g | d  g g ƒ j ƒ  | ƒ t	 t
 d	 t j | g | g g ƒ t	 t
 d
 t j | | g g ƒ d  S(   Ni   i   i   i   i   i   i   i    s.   Got blocks\[1,0\]\.shape\[1\] == 1, expected 2s.   Got blocks\[0,1\]\.shape\[0\] == 1, expected 2(   i    i    (   i    i    (   R   R   R   R   t   bmatR   R+   R   t   emptyR   RB   (   R,   Ro   Rp   t   Ct   DRh   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt	   test_bmatR  s6    ..	.%..c      	   C` sÈ   t  d d g d d g g ƒ } t  d g d g g ƒ } t  d g g ƒ } t d d d d g d d d d g d d d d g d d d d g d d d d g g ƒ } t t j | | | f ƒ j ƒ  | ƒ d	 S(
   s    basic test for block_diag i   i   i   i   i   i   i   i    N(   R   R   R   R   t
   block_diagR+   (   R,   Ro   Rp   Rw   Rh   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_block_diag_basicx  s    c         C` sD   t  t j d d g d g ƒ j ƒ  d d d g d d d g g ƒ d S(   s)    block_diag with scalar and 1d arguments i   i   i   i    N(   R	   R   Rz   RY   (   R,   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_block_diag_scalar_1d_args†  s    !c         C` s×   t  t j d d g g ƒ j ƒ  t d d g g ƒ ƒ t  t j d d g g g ƒ j ƒ  t d d g g ƒ ƒ t  t j d g d g g g ƒ j ƒ  t d g d g g ƒ ƒ t  t j d g ƒ j ƒ  t d g g ƒ ƒ d S(   s    block_diag with one matrix i   i    N(   R   R   Rz   R+   R   (   R,   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_block_diag_1Œ  s    !$c      	   ` sç  xàt  t f D]Ò‰  xu t j t j t j g D][ } ˆ  d d d d d | ƒ} t | j | ƒ t | j d ƒ t | j	 ƒ  d j
 d ƒ q, Wˆ  d d d d d d ƒ} t | j t j ƒ ˆ  d d d d d t j j d ƒ ƒ} t | j | j ƒ t | j | j ƒ t | j | j ƒ xU d	 d d
 d g D]A } ˆ  d d d | ƒ} t | j t | t j | j ƒ ƒ ƒ q,Wx? d d d d g D]+ } ˆ  d d d | ƒ} t | j | ƒ q„Wt t ‡  f d †  ƒ t t ‡  f d †  ƒ q Wd  S(   Ni   i
   R"   gš™™™™™¹?R$   i    R%   iá  g        g      à?g      ð?R   R   R   R   R#   c           ` s   ˆ  d d d ƒ S(   Ni   i
   gš™™™™™ñ?(    (    (   t   f(    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   <lambda>²  s    c           ` s   ˆ  d d d ƒ S(   Ni   i
   gš™™™™™¹¿(    (    (   R~   (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyR   ³  s    (   i   i
   (   t   sprandR'   R   Rm   t   float64t
   longdoubleR   R$   R5   t   nonzerot   sizet   doubleR   R   R	   t   datat   rowt   colt   nnzR   t   prodR#   R
   RB   (   R,   t   tRR   t   x1t   x2R"   Ra   (    (   R~   s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_random_sampling˜  s(    '*c      
   C` s   xˆ d  d t j j ƒ  f D]n } t d d d d d t j d | ƒ} t t j t j d | j	 ƒ ƒ ƒ t t j t j | j	 d	 ƒ ƒ ƒ q Wd  S(
   Niá  i
   i   R"   g      à?R$   R%   i    i   (
   R   R   R   R   R€   R   R   t   allt
   less_equalR†   (   R,   R%   RR   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt	   test_randµ  s
    	"c      
   C` s   xˆ d  d t j j ƒ  f D]n } t d d d d d t j d | ƒ} t t j t j | j	 d ƒ ƒ ƒ t t j t j d	 | j	 ƒ ƒ ƒ q Wd  S(
   Niá  i
   i   R"   g      à?R$   R%   i    i   (
   R   R   R   R   R'   R   R   t   anyt   lessR†   (   R,   R%   RR   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt
   test_randn½  s
    	"c         C` s   t  j d d d d ƒ} d  S(   Ni
   R$   R1   (   R   R   (   R,   R<   (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   test_random_accept_str_dtypeÇ  s    (   t   __name__t
   __module__R4   R?   RA   RC   RE   RU   RV   R[   R\   Rb   Re   Rf   Ri   Rk   Rq   Rt   Ry   R{   R|   R}   RŽ   R‘   R”   R•   (    (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyR(       s0   	/	I															&						
t   __main__(   t   __doc__t
   __future__R    R   R   t   numpyR   R   R   t   numpy.testingR   R   R   R   R	   R
   R   t   scipy._lib._numpy_compatR   t   scipy.sparseR   R   R   t   scipy.sparse.constructR   R€   R_   R   R'   R(   R–   (    (    (    s@   /tmp/pip-build-7oUkmx/scipy/scipy/sparse/tests/test_construct.pyt   <module>   s   4ÿ ®