U
    ½mœdƒ.  ã                   @   s^  d dl 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	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mZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" dd„ Z#e	j$dd�dd„ ƒZ%e	j$dd�dd„ ƒZ&e	j$dd„ ƒZ'e	j$dd „ ƒZ(d!d"„ Z)d#d$„ Z*d%d&„ Z+d'd(„ Z,d)d*„ Z-e	j. /d+d,gd,d-gf¡d.d/„ ƒZ0e	j. /d0d1d2d3d4d5d6gfd7d8d9d:d;d<gfd=d>d?d@dAgfg¡dBdC„ ƒZ1dDdE„ Z2e	j. /dFdGi dHdIgfdJi dHgfdKdLdMidNdOgfg¡dPdQ„ ƒZ3dRdS„ Z4dTdU„ Z5dVdW„ Z6dXdY„ Z7dZd[„ Z8e	j. /d\ed]d^d_d`dagfedbdcddd`g fededfddd`dagfedgdgddd`dhdigfedjdkdd`g fedldmdId`g feedndo�dpdqdId`g fg¡drds„ ƒZ9e	j. /dteej:e;feej:ej:feej:e;feej:e;feej:ej:feej:e;fg¡dudv„ ƒZ<dwdx„ Z=dydz„ Z>d{d|„ Z?d}d~„ Z@dS )é    N)Úloads)Údumps)Úpartial)Úget_data_home)Úclear_data_home)Ú
load_files)Úload_sample_images)Úload_sample_image)Úload_digits)Úload_diabetes)Úload_linnerud)Ú	load_iris)Úload_breast_cancer)Ú	load_wine)Úload_csv_dataÚload_gzip_compressed_csv_data)Úscale)ÚBunch©Ú_is_resource©Úcheck_as_framec                 C   s   t j | ¡rt | ¡ d S ©N)ÚosÚpathÚisdirÚshutilÚrmtree)r   © r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/sklearn/datasets/tests/test_base.pyÚ_remove_dir    s    r    Úmodule)Úscopec                 c   s    t |  d¡ƒ}|V  t|ƒ d S )NZscikit_learn_data_home_test©ÚstrÚmktempr    ©Ztmpdir_factoryZtmp_filer   r   r   Ú	data_home%   s    r'   c                 c   s    t |  d¡ƒ}|V  t|ƒ d S )NZscikit_learn_load_files_testr#   r&   r   r   r   Úload_files_root,   s    r(   c                 c   sB   t j| d�}t j|dd�}| d¡ | ¡  t|ƒV  t|ƒ d S )N©ÚdirF)r*   Údeleteó   Hello World!
)ÚtempfileÚmkdtempÚNamedTemporaryFileÚwriteÚcloser$   r    )r(   Ztest_category_dir1Zsample_filer   r   r   Útest_category_dir_13   s    

r2   c                 c   s"   t j| d�}t|ƒV  t|ƒ d S )Nr)   )r-   r.   r$   r    )r(   Ztest_category_dir2r   r   r   Útest_category_dir_2=   s    
r3   c                 C   s^   t | d�} | | kst‚tj | ¡s&t‚t| d� tj | ¡r@t‚t | d�} tj | ¡sZt‚d S )N©r'   )r   ÚAssertionErrorr   r   Úexistsr   r4   r   r   r   Útest_data_homeD   s    


r7   c                 C   s>   t | ƒ}t|jƒdkst‚t|jƒdks,t‚|jd ks:t‚d S )Nr   )r   ÚlenÚ	filenamesr5   Útarget_namesÚDESCR)r(   Úresr   r   r   Útest_default_empty_load_filesS   s    r=   c                 C   sN   t |ƒ}t|jƒdkst‚t|jƒdks,t‚|jd ks:t‚|jdgksJt‚d S )Né   é   r,   )r   r8   r9   r5   r:   r;   Údata©r2   r3   r(   r<   r   r   r   Útest_default_load_filesZ   s
    rB   c                 C   sl   t j | ¡ d¡ ¡ }t|d|dd�}t|jƒdks8t‚t|j	ƒdksJt‚|j
dksXt‚|jdgksht‚d S )Nú/Útestzutf-8)ÚdescriptionÚ
categoriesÚencodingr>   zHello World!
)r   r   ÚabspathÚsplitÚpopr   r8   r9   r5   r:   r;   r@   )r2   r3   r(   Úcategoryr<   r   r   r   Ú.test_load_files_w_categories_desc_and_encodingb   s       ÿrL   c                 C   sT   t |dd�}t|jƒdkst‚t|jƒdks0t‚|jd ks>t‚| d¡d ksPt‚d S )NF)Zload_contentr>   r?   r@   )r   r8   r9   r5   r:   r;   ÚgetrA   r   r   r   Útest_load_files_wo_load_contento   s
    rN   Úallowed_extensionsz.txtz.jsonc                    sn   | d ‰ˆ  ¡  d}‡fdd„|D ƒ}|D ]}| d¡ q*t| ˆ d�}t‡ fdd„|D ƒƒt|jƒksjt‚dS )	z;Check the behaviour of `allowed_extension` in `load_files`.Úsub)z	file1.txtz
file2.jsonz
file3.jsonzfile4.mdc                    s   g | ]}ˆ | ‘qS r   r   ©Ú.0Úf)Údr   r   Ú
<listcomp>   s     z6test_load_files_allowed_extensions.<locals>.<listcomp>s   hello©rO   c                    s   g | ]}|j ˆ krt|ƒ‘qS r   )Úsuffixr$   )rR   ÚprV   r   r   rU   ƒ   s     
 N)ÚmkdirÚwrite_bytesr   Úsetr9   r5   )Ztmp_pathrO   ÚfilesÚpathsrX   r<   r   )rO   rT   r   Ú"test_load_files_allowed_extensionsy   s    ÿr^   zHfilename, expected_n_samples, expected_n_features, expected_target_nameszwine_data.csvé²   é   Zclass_0Zclass_1Zclass_2úiris.csvé–   é   ZsetosaZ
versicolorZ	virginicazbreast_cancer.csvé9  é   Z	malignantZbenignc                 C   sV   t | ƒ\}}}|jd |ks t‚|jd |ks2t‚|jd |ksDt‚tj ||¡ d S )Nr   r>   )r   Úshaper5   ÚnpÚtestingÚassert_array_equal)ÚfilenameZexpected_n_samplesZexpected_n_featuresZexpected_target_namesÚactual_dataZactual_targetZactual_target_namesr   r   r   Útest_load_csv_dataˆ   s
    rl   c                  C   s–   d} d}t | d�}t | |d�}t|ƒdks.t‚t|ƒdks>t‚tj |d |d ¡ tj |d |d ¡ tj |d	 |d	 ¡ |d
  d¡s’t‚d S )Nra   ziris.rst©Údata_file_name©rn   Údescr_file_namerc   é   r   r>   r?   éÿÿÿÿz.. _iris_dataset:)r   r8   r5   rg   rh   ri   Ú
startswith)rn   rp   Zres_without_descrZres_with_descrr   r   r   Útest_load_csv_data_with_descrš   s    
 ÿrt   z filename, kwargs, expected_shapezdiabetes_data_raw.csv.gzéº  é
   údiabetes_target.csv.gzzdigits.csv.gzÚ	delimiterú,é  éA   c                 C   s"   t | f|Ž}|jt|ƒkst‚d S r   )r   rf   Útupler5   )rj   ÚkwargsZexpected_shaperk   r   r   r   Ú"test_load_gzip_compressed_csv_data¬   s    	r~   c                  C   sB   d} d}t | d�}t | |d�\}}tj ||¡ | d¡s>t‚d S )Nrw   zdiabetes.rstrm   ro   z.. _diabetes_dataset:)r   rg   rh   ri   rs   r5   )rn   rp   Zexpected_datark   Údescrr   r   r   Ú-test_load_gzip_compressed_csv_data_with_descr¹   s    
þ
r€   c                  C   sÎ   zªt ƒ } t| jƒdkst‚t| jƒdks,t‚| j}t |d ddd d …f tjdddgtjd�k¡sht‚t |d ddd d …f tjddd	gtjd�k¡sžt‚| j	s¨t‚W n t
k
rÈ   t d
¡ Y nX d S )Nr?   r   é®   éÉ   éç   )Údtyper>   é   r`   ú3Could not load sample images, PIL is not available.)r   r8   Úimagesr5   r9   rg   ÚallÚarrayÚuint8r;   ÚImportErrorÚwarningsÚwarn)r<   r‡   r   r   r   Útest_load_sample_imagesÇ   s    66rŽ   c                  C   sL   z(t dƒ} | jdkst‚| jdks&t‚W n tk
rF   t d¡ Y nX d S )Nz	china.jpgrŠ   )i«  i€  rq   r†   )r	   r„   r5   rf   r‹   rŒ   r�   )Úchinar   r   r   Útest_load_sample_image×   s    r�   c                	   C   s,   t  d¡ t  t¡� tdƒ W 5 Q R X d S )NZPILzblop.jpg)ÚpytestZimportorskipÚraisesÚAttributeErrorr	   r   r   r   r   Ú$test_load_missing_sample_image_errorà   s    
r”   c                  C   sn   t dd�} | jjdkst‚| jjs*tdƒ‚t| jƒdks<t‚| jsFt‚t ƒ }t	j
jt| jƒd |jdd� d	S )
zTest to check that we load a scaled version by default but that we can
    get an unscaled version when setting `scaled=False`.F)Zscaled©ru   rv   ru   rv   g»‘T5@g-Cëâ6?)ZatolN)r   r@   rf   r5   ÚtargetÚsizer8   Úfeature_namesr;   rg   rh   Zassert_allcloser   )Zdiabetes_rawZdiabetes_defaultr   r   r   Útest_load_diabetes_rawæ   s    

  ÿr™   zEloader_func, data_shape, target_shape, n_target, has_descr, filenames)rd   re   )rd   r?   Trj   )r_   r`   )r_   rq   )rb   rc   )rb   )é   rq   Zdata_filenameZtarget_filenamer•   )ru   )rz   é@   )rz   é	   )Zn_class)éQ  r›   )r�   c                    sª   | ƒ ‰ t ˆ tƒst‚ˆ jj|ks$t‚ˆ jj|ks4t‚tˆ dƒrTtˆ jƒ|d ksTt‚|d k	rntˆ j	ƒ|ksnt‚|r|ˆ j
s|t‚|r¦dˆ ksŒt‚t‡ fdd„|D ƒƒs¦t‚d S )Nr˜   r>   Údata_modulec                    s&   g | ]}|ˆ ko t ˆ d  ˆ | ƒ‘qS )rž   r   rQ   ©Úbunchr   r   rU     s   ÿztest_loader.<locals>.<listcomp>)Ú
isinstancer   r5   r@   rf   r–   Úhasattrr8   r˜   r:   r;   rˆ   )Úloader_funcZ
data_shapeZtarget_shapeZn_targetZ	has_descrr9   r   rŸ   r   Útest_loaderö   s"    


þÿr¤   z%loader_func, data_dtype, target_dtypec                 C   s   | ƒ }t || ||d� d S )N)Zexpected_data_dtypeZexpected_target_dtyper   )r£   Z
data_dtypeZtarget_dtypeZdefault_resultr   r   r   Útest_toy_dataset_frame_dtype  s    ür¥   c                  C   s2   t dd�} tt| ƒƒ}d|_|d |jks.t‚d S )NÚx)r¦   Úy)r   r   r   r¦   r5   ©r    Zbunch_from_pklr   r   r   Útest_loads_dumps_bunch4  s    
r©   c                  C   sf   t dd�} d| jd< tt| ƒƒ}|jdks.t‚|d dks>t‚d|_|jdksRt‚|d dksbt‚d S )NÚoriginal)Úkeyzset from __dict__r«   Úchanged)r   Ú__dict__r   r   r«   r5   r¨   r   r   r   Ú8test_bunch_pickle_generated_with_0_16_and_read_with_0_17;  s    

r®   c                  C   s   t ƒ } dt| ƒkst‚d S )Nr@   )r   r*   r5   )r@   r   r   r   Útest_bunch_dirP  s    r¯   c               	   C   sX   d} t jt| d�� ddlm} W 5 Q R X d} t jt| d�� ddlm} W 5 Q R X dS )zLCheck that we raise the ethical warning when trying to import `load_boston`.z8The Boston housing prices dataset has an ethical problem)Úmatchr   )Úload_bostonzBcannot import name 'non_existing_function' from 'sklearn.datasets')Únon_existing_functionN)r‘   r’   r‹   Úsklearn.datasetsr±   r²   )Úmsgr±   r²   r   r   r   Útest_load_boston_errorV  s    rµ   )Ar   r   r-   rŒ   Úpickler   r   Ú	functoolsr   r‘   Únumpyrg   r³   r   r   r   r   r	   r
   r   r   r   r   r   Zsklearn.datasets._baser   r   Zsklearn.preprocessingr   Zsklearn.utilsr   Zsklearn.utils.fixesr   Z"sklearn.datasets.tests.test_commonr   r    Zfixturer'   r(   r2   r3   r7   r=   rB   rL   rN   ÚmarkZparametrizer^   rl   rt   r~   r€   rŽ   r�   r”   r™   r¤   Zfloat64Úintr¥   r©   r®   r¯   rµ   r   r   r   r   Ú<module>   s¾   




	


ýþ


ýþ
	úòþ




úþ

