
    Q3j                        d dl Zd dlZd dl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lmZ d dlmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZm Z m!Z! d d	l"m#Z#m$Z$m%Z%m&Z& ejN                  jQ                  d
e      ejN                  jQ                  de      ejN                  jQ                  de      d                      Z)ejN                  jQ                  dejT                  ejV                  g      ejN                  jQ                  deez         d               Z,ejN                  jQ                  d
e      ejN                  jQ                  de      ejN                  jQ                  de      d                      Z-ejN                  jQ                  g dg dg dgg dg dgg dfg dg dgg dg dgg dfg dg dgg dg dgdfd ej\                  dgd ej\                  ej\                  ggd ej\                  dgd ej\                  ej\                  ggg dfd d gdej\                  gdd gd dgej\                  ej\                  gej\                  dggg dddej\                  gg dg d ej\                  ej\                  ej\                  gej\                  ej\                  dggd!d"gfg d#g d$gg d%g d&g ej^                  g d'      fg      ejN                  jQ                  deez         ejN                  jQ                  dejT                  ejV                  g      d(                      Z0ejN                  jQ                  g dg dg dgg dg dgddgfg dg dgg dg dg dgddgfg dg dgg dg dgdfd ej\                  dgd ej\                  ej\                  ggd ej\                  dgd ej\                  ej\                  ggd"d"gfd d dej\                  dd gd dej\                  ej\                  ej\                  dggd d dej\                  dd gd d dej\                  dd gd dej\                  ej\                  ej\                  dggd!d"gfg d#g dgg d#g dg dg dg ej^                  ddg      fg      ejN                  jQ                  deez         ejN                  jQ                  dejT                  ejV                  g      d)                      Z1ejN                  jQ                  d
e      ejN                  jQ                  de      ejN                  jQ                  de      d*                      Z2ejN                  jQ                  deez         d+        Z3ejN                  jQ                  d, ed-d.d/d 0       ed1d.d/d 0      f ed-d.d/d 0       ejh                   ejj                  d2ej\                  3       ed2d.d45      gd/6      fg      ejN                  jQ                  de      d7               Z6d8 Z7d9 Z8ejN                  jQ                  d:d dg      ejN                  jQ                  deez         d;               Z9ejN                  jQ                  de      d<        Z:ejN                  jQ                  de      d=        Z;d> Z<d? Z=ejN                  jQ                  d
e      ejN                  jQ                  de      d@               Z>ejN                  jQ                  d
e      ejN                  jQ                  de      dA               Z?ejN                  jQ                  dejT                  ejV                  g      ejN                  jQ                  d:g dB      ejN                  jQ                  dCeez         ejN                  jQ                  dDd ej                  ej                  dEfej\                  ej                  ej                  dFfg      ejN                  jQ                  dGdFdEg      dH                                    ZDejN                  jQ                  d
e      ejN                  jQ                  de      dI               ZEejN                  jQ                  d
e      ejN                  jQ                  de      dJ               ZFejN                  jQ                  d
e      ejN                  jQ                  de      dK               ZGejN                  jQ                  dLe%e&f      ejN                  jQ                  de      dM               ZHejN                  jQ                  dejT                  ejV                  g      dN        ZI ej                  dOeez   P      dQ        ZKdR ZLdS ZMdT ZNdU ZOejN                  jQ                  g dV ej                  dd/6       ej                  dd/6      ddWf ej                  dd/6       ej                  dd/6       ej                  d      dXf ej                  ddY6       ej                  dd/6      ddZf ej                  dd/6       ej                  ddY6      dd[f ej                  dd/ej                  \       ej                  dd/6      dd]f ej                  dd/ejT                  \       ej                  dd/ejV                  \      dd]fg      d^        ZRejN                  jQ                  d_dEdFg      ejN                  jQ                  d`eez         ejN                  jQ                  daeez         ejN                  jQ                  dejT                  ejV                  g      db                             ZSy)c    N)RandomState)assert_array_almost_equalassert_array_equal)linalg)make_classification)assert_allclose)CSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS_sparse_random_array)_implicit_column_offsetcount_nonzerocsc_median_axis_0incr_mean_variance_axisinplace_column_scaleinplace_row_scaleinplace_swap_columninplace_swap_rowmean_variance_axismin_max_axissparse_matmul_to_dense)assign_rows_csrcsr_row_normsinplace_csr_row_normalize_l1inplace_csr_row_normalize_l2csc_containercsr_containerlil_containerc           	      N   t        ddd      \  }}d|d<   d|d<   d|d<    ||      }d|d<   d|d<   t        j                  t              5  t	        |d	       d d d         ||      } | |      }t
        j                  t
        j                  ft
        j                  t
        j                  ft
        j                  t
        j                  ft
        j                  t
        j                  fg}|D ]  \  }	}
|j                  |	      }||fD ]  }|j                  |	      }t	        |d	      \  }}|j                  |
k(  sJ |j                  |
k(  sJ t        |t        j                  |d	             t        |t        j                  |d	               y # 1 sw Y   BxY w)
N      r   random_stater   r         r!      r'   r   axisr   pytestraises	TypeErrorr   npfloat32float64int32int64astypedtyper   meanvarr   r   r   X_X_lilX_csrX_cscexpected_dtypesinput_dtypeoutput_dtypeX_testX_sparseX_meansX_varss                  Q/DATA/.local/lib/python3.12/site-packages/sklearn/utils/tests/test_sparsefuncs.pytest_mean_variance_axis0rH   %   i    q!!4DAqAdGAdGAdG!EE$KAdG	y	!5q) 
" % E% E 
RZZ 	RZZ 	2::	2::	O &5!\+&H{3H0BOGV==L000<<<///%grwwvA/FG%fbffV!.DE ' &5 
"	!   FF$r7   sparse_constructorc                    t         j                  j                  d      }t        j                  dd|       }|j	                  t        j
                  |j                  d         dd      }t         j                  ||df<    ||      }|j                  |j                  d         j                  |       }t        ||d      \  }}|t        j                  |       j                  k  sJ y )	Nr   g      Y@)i  r'   )
fill_valueshaper7   
   F)replace)weightsr,   )r1   randomr   fullchoicearangerN   nanrandr6   r   finfoeps)r7   rK   rngr;   missing_indicessample_weightr<   r9   s           rG   "test_mean_variance_axis0_precisionr]   J   s    
 ))


"C
5	?Ajj1771:!6EjJOFFAoq1A HHQWWQZ(//6M=qAFAs%$$$$$    c           	      N   t        ddd      \  }}d|d<   d|d<   d|d<    ||      }d|d<   d|d<   t        j                  t              5  t	        |d	
       d d d         ||      } | |      }t
        j                  t
        j                  ft
        j                  t
        j                  ft
        j                  t
        j                  ft
        j                  t
        j                  fg}|D ]  \  }	}
|j                  |	      }||fD ]  }|j                  |	      }t	        |d
      \  }}|j                  |
k(  sJ |j                  |
k(  sJ t        |t        j                  |d
             t        |t        j                  |d
               y # 1 sw Y   BxY w)Nr    r!   r   r"   r$   r%   r(   r*   r'   r+   r-   r:   s                  rG   test_mean_variance_axis1r`   ^   rI   rJ   )Xwr;   rQ   )r   r   r'   r   r&   r)   )r'   r'   r'   )r   r'   r'   )r   r   r   r'   )r   r'   r'   r'   )r'   r&   r'   r&   )      ?rc   rc   r'   r)   r   r   r   )r&   r&   r   )r   r   r)   g       @rc   )r'   r   r'   )r   r)   r'   )r'   r   r   r   r'   )r   r)   r)   r)   r'   )r'   r)   r'   c                    d} ||       j                  |      } ||      j                  |      }t        j                  t        j                  |       d   |      }t        j                  ||      }	t        j                  |t        j
                        }
t        ||||	|
d       \  }}}t        ||||	|
|      \  }}}|j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ t        ||      \  }}t        ||       t        ||       t        ||       t        ||       t        ||       t        |||||d       \  }}}t        ||||||      \  }}}t        ||       t        ||       t        ||       |j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ y )Nr'   r   r7   r;   r,   	last_meanlast_varlast_nrQ   r;   r,   )
r6   r1   zerosrN   
zeros_liker5   r   r7   r   r   ra   r;   rQ   rK   r7   r,   	Xw_sparserD   rh   ri   rj   means0vars0n_incr0means_w0vars_w0	n_incr_w0means_simplevars_simplemeans1vars1n_incr1means_w1vars_w1	n_incr_w1s                            rG   +test_incr_mean_variance_axis_weighted_axis1r~      s   F D"2&--e4I!!$++E2H"a6I}}Ye4H]]9BHH5F4
FE7 $;
$ Hgy >>U"""==E!!!??e### 2XD IL+fh/fl3eW-e[1gy1 5
FE7 $;
$ Hgy fh/eW-gy1>>U"""==E!!!??e###r^   c                    d} ||       j                  |      } ||      j                  |      }t        j                  t        j                  | d      |      }t        j                  |      }	t        j                  |t        j
                        }
t        ||||	|
d       \  }}}t        ||||	|
|      \  }}}|j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ t        ||      \  }}t        ||       t        ||       t        ||       t        ||       t        ||       t        |||||d       \  }}}t        ||||||      \  }}}t        ||       t        ||       t        ||       |j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ y )Nr   r'   rf   rg   rk   )
r6   r1   rl   sizerm   r5   r   r7   r   r   rn   s                            rG   +test_incr_mean_variance_axis_weighted_axis0r      s   @ D"2&--e4I!!$++E2HQu5I}}Y'H]]9BHH5F4
FE7 $;
$ Hgy >>U"""==E!!!??e### 2XD IL+fh/fl3eW-e[1gy1 5
FE7 $;
$ Hgy fh/eW-gy1>>U"""==E!!!??e###r^   c           
         dD ]  }t         j                  j                  d      }d}d}|dk(  r+t        |      D cg c]  }|j	                  dd|       }}n*t        |      D cg c]  }|j	                  dd|       }}|dk(  rt        j
                  |      nt        j
                  |      }	t        j                  |	      }
t        j                  |	t         j                        }t        j                  |d         }t        j                  |      }|dk(  r|j                  n|} ||      } ||      }t        j                  t              5  t        ||	|
|	       d d d        t        j                  t              5  t        |||	|
|
       d d d        t        ||      \  }}t        |||	|
|
      \  }}}t!        ||       t!        ||       t#        |j$                  |   |        | |      }t        ||      \  }}t!        ||       t!        ||       t#        |j$                  |   |       t        j&                  |      }|dk(  r|j                  n|} ||      } ||      } | |      }t         j(                  t         j(                  ft         j*                  t         j*                  ft         j,                  t         j*                  ft         j                  t         j*                  fg}|D ]  \  }}||fD ]  }|j/                  |      }|	j/                  |      }	|
j/                  |      }
t        ||      \  }}t        |||	|
|
      \  }}}|j0                  |k(  sJ |j0                  |k(  sJ t!        ||       t!        ||       t#        |j$                  |   |          y c c}w c c}w # 1 sw Y   `xY w# 1 sw Y   ;xY w)Nr   r'   r   2   rO   r&   )r   rf   r'   )r;   r,   rh   ri   r,   rh   ri   rj   )r1   rR   r   rangerandintrl   rm   r5   array
atleast_2dTr.   r/   r0   r   r   r   r   rN   vstackr2   r3   r4   r6   r7   )r   r   r   r,   rZ   
n_features	n_samplesidata_chunksrh   ri   rj   r;   r=   r>   rE   rF   X_means_incrX_vars_incrn_incrr?   r@   rA   rB   rD   s                            rG   test_incr_mean_variance_axisr   H  s_    ii##A&
	19GLYGWXGW!3;;q!*;=GWKXFKJFWXFW3;;q!);<FWKX -1AIBHHZ(288I;N	==+y9 HH[^$MM!19ACC!a e$]]9%#Y(V & ]]9%#DIQW & -UD9,C	HV-
)k6 	"'<8!&+61774=&1e$,UD9!'<8!&+61774=&1 IIk"19ACC!a e$e$ ZZ$ZZ$XXrzz"XXrzz"	
 *9%K"EN#??;7%,,\:	#??<8"4Xt"D4K'%!51k6 $))\999"((L888)'<@)&+>"1774=&9! + *9y 
 YX &% &%s#   N:'N?OOO	O	c                 <   d\  }}t         j                  j                  d      } | |j                  ||            }t        j                  |      }t        j
                  |      }t        j                  |j                  t         j                        }t        |||      }t        |fddi|\  }	}
}t        t        j                  |j                         d      |	       t        t        j                  |j                         d      |
       t        j                  t               5  t        |fddi| d	d	d	       t        |d	d
 ||      }t        j                  t               5  t        |fddi| d	d	d	       y	# 1 sw Y   KxY w# 1 sw Y   y	xY w)zCheck that we raise proper error when axis=1 and the dimension mismatch.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/pull/18655
    )<   r!   *   rf   )rh   ri   rj   r,   r   r+   r'   N)r1   rR   r   rW   rl   rm   rN   r5   dictr   r   r8   toarrayr9   r.   r/   
ValueError)rK   r   r   rZ   r;   rh   ri   rj   kwargsmean0var0r<   s               rG   )test_incr_mean_variance_axis_dim_mismatchr     s<    "Iz
))


#C388Iz:;A$I}}Y'HXXiooRXX6FIHF,QAQA&ANE4BGGAIIKa0%8BFF199;Q/6 
z	"44V4 
# IcrNXfMF	z	"44V4 
#	" 
#	"
 
#	"s   -F.FFFzX1, X2r    r&   皙?csrdensityformatrZ   )   r&   )r   r'   )rM   r   )r   rZ   )r   c           	          ||       }  ||      }d}t        j                  | j                  d         t        j                  | j                  d         }}t        j                  | j                  d   t         j                        }t	        | ||||      \  }}}	t	        |||||	      \  }}}	t        j                  | |g      }
t        |t        j                  |
j                         |             t        |t        j                  |
j                         |             t        |	t        j                  t        j                  |
j                                d             y )Nr   r'   rf   r   r+   )r1   rl   rN   r5   r   spr   r   nanmeanr   nanvarr   isnan)X1X2r   r,   rh   ri   rj   updated_meanupdated_var	updated_nr;   s              rG   6test_incr_mean_variance_axis_equivalence_mean_variancer     s   2 
r	B	r	BD((288A;/"((1+1FxIXXbhhqk2F+B
Xf,(L+y ,C
I,(L+y 			2r(AL"**QYY[t"DEK199;T!BCIr//!))+1F0FQOPr^   c                     d} t        dddd      }t        dddd      }t        j                  |j                  d         t        j                  |j                  d         }}t        j                  |j                  d   t        j                        }t        || |||	      \  }}}t        || |||	      \  }}}t        ||       t        ||       t        ||       y )
Nr   )r    r'   r   r   r   r   r'   rf   r   )r   r1   rl   rN   r5   r   r   )	r,   r   r   rh   ri   rj   r   r   r   s	            rG    test_incr_mean_variance_no_new_nr     s    D	fc%Q	GB	fc%Q	GB((288A;/"((1+1FxIXXbhhqk2F"9
Xf#Ix ,C
Xf,(L+y L),K*Iv&r^   c                  N   d} t        dddd      }t        j                  |j                  d         t        j                  |j                  d         }}d}t	        || |||      \  }}}t        |t        j                  |j                  d   |j                  d                y )Nr   r   r   r   r   r'   r   )r   r1   rl   rN   r   r   rS   )r,   r;   rh   ri   rj   r<   new_ns          rG   test_incr_mean_variance_n_floatr     s    DVSAFA((1771:.0DxIF)		HVKAq% E2771771:qwwqz:;r^   r,   c                 8   t        j                  g d      }t        j                  g d      }t        j                  g dt         j                        } |t        j                  g dg dg dg            } |t        j                  dt         j                  ddgt         j                  dd	d	gd	d	t         j                  d
gd
d
d
t         j                  gg            }| r|j                  }|j                  }t        || |j                         |j                         |j                               \  }}}	t        || |j                         |j                         |j                               \  }
}}t        |
|       t        ||       t        ||	       y )N)     @r   r   r   )     @r   r   r   )r&   r&   r&   r&   rf   )   r   r   r   )  r   r   r   ),  r   r   r   r   r   r   r   )r1   r   r5   rV   r   r   copyr   )r,   rK   	old_meansold_variancesold_sample_countr;   X_nanrE   rF   X_sample_countX_nan_means
X_nan_varsX_nan_sample_counts                rG   'test_incr_mean_variance_axis_ignore_nanr     sd    56IHH=>MxxBHH=
&(<>RST	A 
bffc3'c3'c2663'c3'		
	E CC '>	.."##%$$&'#GV^ 3J.."##%$$&3/K/ K)J'&7r^   c                 *   t        ddd      \  }}d|d<   d|d<   d|d<    | |      }t        j                  t              5  t	        |d	       d d d        t        j                  t              5  t	        |d
	       d d d        t        j                  t              5  t	        |d	       d d d        t        j                  t              5  t        |dd d d        d d d        t        j                  t              5  t        |d
d d d        d d d        t        j                  t              5  t        |dd d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   y xY w)Nr    r!   r   r"   r$   r%   r(   r+   r&   r   r   )r   r.   r/   r   r   r   )r   r;   r<   r>   s       rG   test_mean_variance_illegal_axisr   3  s1   q!!4DAqAdGAdGAdG!E	z	"5r* 
#	z	"5q) 
#	z	"5r* 
# 
z	"dT$	
 
#
 
z	"TD	
 
#
 
z	"dT$	
 
#	"# 
#	"	"	"	"	" 
#	"
 
#	"
 
#	"sH   E1E E%E1E=3F	EE"%E.1E:=F	Fc           	         t         j                  t         j                  fD ]  } | g dg dg dg dg dg|      }t        j                  g dt         j                        }t        j
                  d|j                  d	   f|      }t        j                  g d
t         j                        }t        j                  |      }||d d f   j                         ||<   t        ||||       t        ||        y )Nr   r)   r   r&   r!   r   rd   	         r!   r   r    rf   rb      r'   )r'   r)   r!   )r1   r2   r3   r   intponesrN   	ones_liker   r   r   )r   r7   r;   X_rowsoutout_rowsexpects          rG   test_densify_rowsr   R  s    **bjj)	9iC5
 )2773ggq!''!*oU388IRWW5c"VQY<//1x68S13' *r^   c                     t         j                  j                  d      } t        dd      }|j	                         }|j                         }|j                         }| j                  d      }||z  }t        ||       t        ||       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                         |       d d d        |j                  t         j                        }|j                  t         j                        }|j	                         }|j                         }|j                         }||z  }t        ||       t        ||       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                         |       d d d        y # 1 sw Y   .xY w# 1 sw Y   y xY w)Nr   d      皙?r   r   )r1   rR   r   r   tocsrtocscr   rW   r   r   r.   r/   r0   tolilr6   r2   rZ   r;   XrXcXAscales         rG   test_inplace_column_scaler   c  s   
))


"CZ6A	
B	
B	
BHHSME%KBU#U#bjjlBJJL9b"**,/b"**,/	y	!QWWY. 
" 	
ALL$E	
B	
B	
B%KBU#U#bjjlBJJL9b"**,/b"**,/	y	!QWWY. 
"	! 
"	! 
"	!s    I#IIIc                      t         j                  j                  d      } t        dd      }|j	                         }|j                         }|j                         }| j                  d      }||j                  dd      z  }t        ||       t        ||       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                         |       d d d        |j!                  t         j"                        }|j!                  t         j"                        }|j	                         }|j                         }|j                         }||j                  dd      z  }t        ||       t        ||       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                         |       d d d        y # 1 sw Y   >xY w# 1 sw Y   y xY w)Nr   r   r   r   r   r   r'   )r1   rR   r   r   r   r   r   rW   reshaper   r   r.   r/   r0   r   r   r6   r2   r   s         rG   test_inplace_row_scaler     s   
))


"CZ6A	
B	
B	
BHHSME%--A
Bb% b% bjjlBJJL9b"**,/b"**,/	y	!QWWY. 
" 	
ALL$E	
B	
B	
B%--A
Bb% b% bjjlBJJL9b"**,/b"**,/	y	!QWWY. 
"	! 
"	! 
"	!s   I'I4'I14I=c                    t        j                  g dg dg dg dg dgt         j                        } ||      } | |      }t        j                  d|f      }|d   } ||d   |d	         \  |d<   |d	<   t        |dd	       t        |dd	       t        |j                         |j                                t        ||j                                t        ||j                                 ||d
   |d         \  |d
<   |d<   t        |d
d       t        |d
d       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                                d d d        t        j                  g dg dg dg dg dgt         j                        } ||      } | |      }t        j                  d|f      }|d   } ||d   |d	         \  |d<   |d	<   t        |dd	       t        |dd	       t        |j                         |j                                t        ||j                                t        ||j                                 ||d
   |d         \  |d
<   |d<   t        |d
d       t        |d
d       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   rd   r   r   rf   swapr   r   r&   r)   )r1   r   r3   r   get_blas_funcsr   r   r   r.   r/   r0   r   r2   r   r   r;   r>   r?   r   s         rG   test_inplace_swap_rowr     s    		Iy)Y?rzz	A !E!E  QD1D7DqtQrU#KAaD!B%UAr"UAr"u}}8q%--/*q%--/*adAaD!JAaD!A$UAq!UAq!u}}8q%--/*q%--/*	y	!' 
" 		Iy)Y?rzz	A !E!E  QD1D7DqtQrU#KAaD!B%UAr"UAr"u}}8q%--/*q%--/*adAaD!JAaD!A$UAq!UAq!u}}8q%--/*q%--/*	y	!' 
"	!- 
"	!, 
"	!s   M0M=0M:=Nc                    t        j                  g dg dg dg dg dgt         j                        } ||      } | |      }t        j                  d|f      }|d   } ||d d df   |d d d	f         \  |d d df<   |d d d	f<   t        |dd	       t        |dd	       t        |j                         |j                                t        ||j                                t        ||j                                 ||d d df   |d d d
f         \  |d d df<   |d d d
f<   t        |dd
       t        |dd
       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                                d d d        t        j                  g dg dg dg dg dgt         j                        } ||      } | |      }t        j                  d|f      }|d   } ||d d df   |d d d	f         \  |d d df<   |d d d	f<   t        |dd	       t        |dd	       t        |j                         |j                                t        ||j                                t        ||j                                 ||d d df   |d d d
f         \  |d d df<   |d d d
f<   t        |dd
       t        |dd
       t        |j                         |j                                t        ||j                                t        ||j                                t        j                  t              5  t        |j                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   rd   r   r   rf   r   r   r   r'   )r1   r   r3   r   r   r   r   r   r.   r/   r0   r   r2   r   s         rG   test_inplace_swap_columnr     s    		Iy)Y?rzz	A !E!E  QD1D7DQq!tWa2h/AadGQq"uXq"%q"%u}}8q%--/*q%--/*AadGQq!tW-AadGQq!tWq!$q!$u}}8q%--/*q%--/*	y	!EKKM* 
" 		Iy)Y?rzz	A !E!E  QD1D7DQq!tWa2h/AadGQq"uXq"%q"%u}}8q%--/*q%--/*AadGQq!tW-AadGQq!tWq!$q!$u}}8q%--/*q%--/*	y	!EKKM* 
"	!- 
"	!, 
"	!s   6N0N=0N:=O)r   r'   Nsparse_formatz.missing_values, min_func, max_func, ignore_nanFTlarge_indicesc                 Z   t        j                  g ddd|gg dd|dgg dg|       } ||      }	|r@|	j                  j                  d	      |	_        |	j                  j                  d	      |	_        t        |	||
      \  }
}t        |
 |||             t        | |||             y )Nr   r&   r   rd   r   r   r   rf   r5   )r,   
ignore_nanr+   )r1   r   indicesr6   indptrr   r   )r7   r,   r   missing_valuesmin_funcmax_funcr   r   r;   rD   mins_sparsemaxs_sparses               rG   test_min_maxr     s    $ 	N#"	
 		A QH#++227;"//009+H4JWK{HQT$:;{HQT$:;r^   c                 
   t        j                  g dg dg dg dg dgt         j                        } ||      } | |      }t        j                  t
              5  t        |j                         d       d d d        t        j                  t              5  t        |d	       d d d        t        j                  t              5  t        |d
       d d d        y # 1 sw Y   hxY w# 1 sw Y   ExY w# 1 sw Y   y xY w)Nr   r&   r   r   rd   r   r   rf   r   r+   r&   r   )	r1   r   r3   r.   r/   r0   r   r   r   )r   r   r;   r>   r?   s        rG   test_min_max_axis_errorsr  .  s     		J	9i@

	A !E!E	y	!U[[]+ 
"	z	"U# 
#	z	"U$ 
#	"	 
"	!	"	"	"	"s$   C!C-
C9!C*-C69Dc                 \   t        j                  g dg dg dg dg dgt         j                        } ||      } | |      }|dk7  }g d}|t        j                  |      d d d f   z  }d	D ]Q  }t        t	        ||
      |j                  |
             t        t	        |||      |j                  |
             S t        j                  t              5  t	        |       d d d        t        j                  t              5  t	        |d
       d d d        t	        |d
      j                  t	        |d
      j                  k(  sJ t	        |d|      j                  t	        |d|      j                  k(  sJ 	 |j                  j                  t         j                        |_        |j                  j                  t         j                        |_        t	        |d
      j                  t	        |d
      j                  k(  sJ t	        |d|      j                  t	        |d|      j                  k(  sJ y # 1 sw Y   _xY w# 1 sw Y   =xY w# t        $ rC}	d|	j                  d   v r!t        j                          j"                  dk  sJ |	       Y d }	~	y d }	~	ww xY w)Nr   r  rd   r   r   rf   r   )      ?g?g333333?皙?r  )r   r'   r   Nr+   )r,   r\   r&   r'   zaccording to the rule 'safe'r   )r1   r   r3   r   r   sumr.   r/   r0   r   r7   r   r6   r5   r   argsr   nbytes)
r   r   r;   r>   r?   	X_nonzeror\   X_nonzero_weightedr,   es
             rG   test_count_nonzeror  >  s9    		J	9i@

	A !E!EQI-M"RXXm%<QW%EE$!%d+Y]]]-E	
 	"%d-H"""-	
	 % 
y	!e 
"	z	"e!$ 
# Q'--u11M1S1SSSSe!=AGGQmDJJ	K	K	W,,RXX6||**2884U+11]5q5Q5W5WWWW%a}EKKU-HNNO	
O% 
"	!	"	"&  W-:rwwy?O?ORS?SVUVVS?SWs1   I	IC I II	J+(9J&&J+c                 "   t         j                  j                  d      }|j                  dd      }t        j                  |d      } | |      }t        |      }t        ||       |j                  dd      }d||dk  <   |j                  ddd      }||    ||<    | |      }t        j                  |d      }t        |      }t        ||       dd	gd
d
gddgddgg} | |      }t        t        |      t        j                  ddg             dd	gd
dgddgg} | |      }t        t        |      t        j                  ddg             t        j                  t              5  t         ||             d d d        y # 1 sw Y   y xY w)Nr   r   r   r+   3   g        gffffff?rO   r  r   r'   r&   r  g      r   )r1   rR   r   rW   medianr   r   r   r   r.   r/   r0   )r   r   rZ   r;   dense_mediancscsparse_medianinds           rG   test_csc_row_medianr  l  sq    ))


"CbA99QQ'L

C%c*M}l3 	SAAa#gJ
++aR
 CfWAcF

C99QQ'L%c*M}l3 R2r(QFQF+A

C(-rxxd/DE
R2r(QG$A

C(-rxxb	/BC 
y	!-*+ 
"	!	!s   *FFinplace_csr_row_normalizec                 h   t        t        j                  |       rt        j                  d      }nt        j                  d      }t        d      }t        j                  t        j                  fD ]>  }|j                  dd      j                  |      } | |      }t        j                  t        j                  fD ]  }|t        j                  u r@|j                  j                  |      |_        |j                  j                  |      |_        |j                  j                  |k(  sJ |j                  j                  |k(  sJ  ||       |j                  |k(  sJ |t        u r|xj                   dz  c_        t#        t        j$                  |      j'                  d      |        A y )N)rO   r'   rO   r    r&   r'   r+   )
issubclassr   
csr_matrixr1   r   r   r3   r2   randnr6   r4   r5   r   r   r7   r   datar   absr  )r   r  r   rsr7   r;   r>   index_dtypes           rG   test_inplace_normalizer     sC    "--/wwwwwr{	RB**bjj)HHRO""5)a HHbhh/K bhh&$||22;? % 4 4[ A==&&+555<<%%444%e,;;%'''(,HH

q 
%bffUm&7&7Q&7&?F 0 *r^   c                     t        dd| d      }t        j                  j                  |d      dz  }t	        |      }|j
                  | k(  sJ | t        j                  k(  rdnd	}t        |||
       y )N)r   rO   r   r   )r   r7   rZ   r'   r+   r&   gư>Hz>)rtol)	r   r   r   normr   r7   r1   r2   r   )r7   r;   scipy_normsnormsr#  s        rG   test_csr_row_normsr'    si     	YuErJA))...+q0K!E;;%BJJ&4DDE;T2r^   module)scopeparamsc                 2   | j                   }t        j                  j                  d      } |t	        ddd|            }|j                         }t        j                  |j                  d            j                         }t        ||      }||z
  }||fS )z?Returns equivalent tuple[sp.linalg.LinearOperator, np.ndarray].r   )i  r   r  r   r   r   r+   )
paramr1   rR   default_rngr   r   asarrayr8   ravelr   )requestsparse_containerrZ   rD   X_densemuX_sparse_centeredX_dense_centereds           rG   centered_matricesr6    s     }}
))


#CZULH  G	HMMqM)	*	0	0	2B/"=|...r^   c                     |\  }}t         j                  j                  |       }|j                  |j                  d   df      }t        ||z  |j                  |             t        ||z  ||z         y )Nr'   r   )r1   rR   r-  standard_normalrN   r   matmatglobal_random_seedr6  r4  r5  rZ   Ys         rG   test_implicit_center_matmatr=    sv    *;''
))

 2
3C-33A6;<A$q(*;*B*B1*EF$q(*;a*?@r^   c                     |\  }}t         j                  j                  |       }|j                  |j                  d         }t        ||z  |j                  |             t        ||z  ||z         y )Nr'   )r1   rR   r-  r8  rN   r   matvecr;  r6  r4  r5  rZ   ys         rG   test_implicit_center_matvecrB    sq    *;''
))

 2
3C,22156A$q(*;*B*B1*EF$q(*;a*?@r^   c                 (   |\  }}t         j                  j                  |       }|j                  |j                  d   df      }t        |j                  |z  |j                  |             t        |j                  |z  |j                  |z         y )Nr   r   )r1   rR   r-  r8  rN   r   r   rmatmatr:  s         rG   test_implicit_center_rmatmatrE    s    *;''
))

 2
3C-33A6;<A$&&*,=,E,Ea,HI$&&*,=,?,?!,CDr^   c                 $   |\  }}t         j                  j                  |       }|j                  |j                  d         }t        |j                  |z  |j                  |             t        |j                  |z  |j                  |z         y )Nr   )r1   rR   r-  r8  rN   r   r   rmatvecr@  s         rG   test_implit_center_rmatvecrH    s    *;''
))

 2
3C,22156A$&&*,=,E,Ea,HI$&&*,=,?,?!,CDr^   ABr   msgzShapes must fulfilzShape of outcoozInput 'A' mustzInput 'B' must)r   r7   zDtype of A and Bc                     t        j                  t        |      5  t        | ||       ddd       y# 1 sw Y   yxY w)z7Test that sparse_matmul_to_dense raises when it should.)matchr   N)r.   r/   r   r   rI  s       rG   "test_sparse_matmul_to_dense_raisesrQ    s*    . 
z	-q!- 
.	-	-s   4=out_is_Nonea_containerb_containerc                 2   t         j                  j                  |       }d\  }}}|j                  ||f      j	                  |      }	|j                  ||f      j	                  |      }
d|	j
                  |j                  ddg||z  ddg      <   d|
j
                  |j                  ddg||z  ddg      <    ||	      } ||
      }|rd}nt        j                  ||f|      }t        |||	      }t        ||	|
z  d
       |st        ||d
       yy)z4Test that sparse_matmul_to_dense computes correctly.)rO      r   r   FTr  )r   pNrf   rP  r"  )atol)
r1   rR   r-  r8  r6   flatrT   emptyr   r   )r;  rR  rS  rT  r7   rZ   n1n2n3a_denseb_denseabr   results                  rG   test_sparse_matmul_to_denserc  
  s    ))

 2
3CJBB!!2r(+2259G!!2r(+2259GJKGLLUDMRC:FGJKGLLUDMRC:FGGAGAhhBxu-#Aqc2FFGg-D9V$/ r^   )Tnumpyr1   r.   scipy.sparsesparser   numpy.randomr   numpy.testingr   r   scipyr   sklearn.datasetsr   sklearn.utils._testingr   sklearn.utils.fixesr	   r
   r   r   sklearn.utils.sparsefuncsr   r   r   r   r   r   r   r   r   r   r   sklearn.utils.sparsefuncs_fastr   r   r   r   markparametrizerH   r2   r3   r]   r`   rV   r   r~   r   r   r   hstackrS   r   r   r   r   r   r   r   r   r   r   minmaxnanminnanmaxr   r  r  r  r   r'  fixturer6  r=  rB  rE  rH  eyer4   rQ  rc   r^   rG   <module>ry     s4      $ G  0 2      .9.9.9F : : :FD 2::rzz":;-~/NO% P <%$ .9.9.9F : : :FD 
Y	)Y!7C
Y	,!=yI
Y	)Y!7>^a01^a01	
 Va[1a&1a&2662662BRVVQKPArvv(# #J	
 	"o.BHHY	
+< -~/NO2::rzz":;A$ < P=@A$H 
Y	)Y!7!Q@
Y	)Y	!BQFK
Y	)Y!7>^a01^a01#J	
 Arvvq!$q!RVVRVVRVVQ&GHAq"&&!Q'Aq"&&!Q'Arvvrvvrvvq1
 #J	
 	"	9i8BHHaV	
%6 -~/NO2::rzz":;A$ < P7:A$H .9.9.9N: : : :N:b -~/NO5 P58  !UJ #eK	

 !UJBIIBGGG7(#2F 		
& .9Q :'(Q,'&	< !Q(-~/NO,8 P ),8^ .9
 :
< .9( :( /@/@ .9.9-( : :-(` .9.9-+ : :-+` 2::rzz":;..>*IJ4"&&"))RYY!EF 4-8< 9	 K / <<> .9.9% : :% .9.9)W : :)WX .9.9, : :,D !#?@ .9G :	
G2 2::rzz":;
3 <
3 h~'FG/ H/$AAEE 	%	 &"&&5"94AUV	%	 &"&&5"96266!9nU	%	 &"&&5"94AQR	%	 &"&&5"94AQRBFF1U"((3BFF1U#		
 BFF1U"**5BFF1U"**5		
*.+*. 6(GH(GH2::rzz":;0 < I I 70r^   