o
    ]ƒáem¹  ã                   @   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	Z
d dlmZ d dlmZ d dlmZ zd dlmZ W n eyF   d dlm  mZ Y nw d dlZddlmZ ddlmZ ddlmZ zd dlZesfJ ‚dZW n eyt   d	ZY nw G d
d„ dƒZ G dd„ dƒZ!G dd„ dƒZ"dS )é    N©Údistance©Ú	hierarchyé   )Úmatrix)Úcolor_palette)Úassert_colors_equalFTc                   @   s¾  e Zd Zej eeedƒƒ¡Z	e	 
dd¡Zejg d¢ddZejeedZe	 dd	¡Ze e¡Zed
d
d
d
dddd
dd
d
dZdd„ Zdd„ Zdd„ Zej deejeg¡dd„ ƒZdd„ Z dd„ Z!dd„ Z"dd„ Z#d d!„ Z$d"d#„ Z%d$d%„ Z&d&d'„ Z'd(d)„ Z(d*d+„ Z)d,d-„ Z*d.d/„ Z+d0d1„ Z,d2d3„ Z-d4d5„ Z.d6d7„ Z/d8d9„ Z0d:d;„ Z1d<d=„ Z2d>d?„ Z3d@dA„ Z4dBdC„ Z5dDdE„ Z6ejj7e8j9dFkdGdHdIdJ„ ƒZ:dKdL„ Z;dMdN„ Z<dOdP„ Z=dQdR„ Z>dSdT„ Z?dUdV„ Z@d
S )WÚTestHeatmapÚheatmapé   é   )ÚAÚBÚCÚDÚletters©Úname©Úindexé   é   NFú.2fT)ÚvminÚvmaxÚcmapÚcenterÚrobustÚannotÚfmtÚ	annot_kwsÚcbarÚcbar_kwsÚmaskc                 C   s„   t j| jfi | j¤Ž}t |j| j¡ t |j	t
 | j¡¡ t |jt d¡¡ t |jt d¡¡ |jdks9J ‚|jdks@J ‚d S )Nr   r   Ú )ÚmatÚ_HeatMapperÚx_normÚdefault_kwsÚnptÚassert_array_equalÚ	plot_dataÚpdtÚassert_frame_equalÚdataÚpdÚ	DataFrameÚxticklabelsÚnpÚarangeÚyticklabelsÚxlabelÚylabel©ÚselfÚp© r;   úc/var/www/html/SPIRAL.web.tool/spiral_venv/lib/python3.10/site-packages/seaborn/tests/test_matrix.pyÚtest_ndarray_input0   s   zTestHeatmap.test_ndarray_inputc                 C   s|   t j| jfi | j¤Ž}t |j| j¡ t 	|j
| j¡ t |jt d¡¡ t |j| jj¡ |jdks5J ‚|jdks<J ‚d S )Nr   r%   r   )r&   r'   Údf_normr)   r*   r+   r,   r(   r-   r.   r/   r2   r3   r4   r5   r   Úvaluesr6   r7   r8   r;   r;   r<   Útest_df_input<   s   zTestHeatmap.test_df_inputc                 C   sœ   | j  ¡ }tjjg d¢ddgd}d|_||_tj|fi | j	¤Ž}g d¢}t
 |j|¡ |jdks3J ‚tj|jfi | j	¤Ž}t
 |j|¡ |jdksLJ ‚d S )N©)r   é   )r   r   )r   é   )r   r   ÚletterÚnumber©Únamesúletter-number©zA-1zB-2zC-3zD-4)r>   Úcopyr0   Ú
MultiIndexÚfrom_tuplesr   r   r&   r'   r)   r*   r+   r5   r7   ÚTr2   r6   )r9   Údfr   r:   Úcombined_tick_labelsr;   r;   r<   Útest_df_multindex_inputH   s   
þz#TestHeatmap.test_df_multindex_inputÚdtypec                 C   sZ   | j  ¡ }| jdk}||d< | j |¡}tj|fi |¤Ž}tj ||¡}t	 
|j|¡ d S ©Nr   r$   )r)   rJ   r(   Úastyper&   r'   r3   ÚmaÚmasked_wherer*   r+   r,   )r9   rQ   Úkwsr$   r/   r:   r,   r;   r;   r<   Útest_mask_input\   s   

zTestHeatmap.test_mask_inputc                 C   sÚ   | j  ¡ }| jdk}||d< tj| jfi |¤Ž}|jtjj| j|d 	¡ ks(J ‚|j
tjj| j|d ¡ ks8J ‚| jdk }||d< tj| jfi |¤Ž}|j
tjj| j|d ¡ ks[J ‚|jtjj| j|d 	¡ kskJ ‚dS )z9Make sure masked cells are not used to calculate extremesr   r$   )r$   N)r)   rJ   r(   r&   r'   r   r3   rT   ÚarrayÚmaxr   Úmin)r9   rV   r$   r:   r;   r;   r<   Útest_mask_limitsh   s   

  
 $zTestHeatmap.test_mask_limitsc                 C   sB   t j| jfi | j¤Ž}|j| j ¡ ksJ ‚|j| j ¡ ksJ ‚d S ©N)	r&   r'   Údf_unifr)   r   Úx_unifrZ   r   rY   r8   r;   r;   r<   Útest_default_vlims{   s   zTestHeatmap.test_default_vlimsc                 C   sZ   | j  ¡ }d|d< tj| jfi |¤Ž}|jt | jd¡ksJ ‚|j	t | jd¡ks+J ‚d S )NTr   r   éb   )
r)   rJ   r&   r'   r]   r   r3   Ú
percentiler^   r   ©r9   rV   r:   r;   r;   r<   Útest_robust_vlims   s
   
zTestHeatmap.test_robust_vlimsc                 C   sN   | j  ¡ }d|d< d|d< tj| jfi |¤Ž}|jdksJ ‚|jdks%J ‚d S )Nr   r   rB   r   )r)   rJ   r&   r'   r]   r   r   rb   r;   r;   r<   Útest_custom_sequential_vlimsŠ   s   
z(TestHeatmap.test_custom_sequential_vlimsc                 C   sV   | j  ¡ }d|d< d|d< d|d< tj| jfi |¤Ž}|jdks"J ‚|jdks)J ‚d S )Néüÿÿÿr   é   r   r   r   )r)   rJ   r&   r'   r>   r   r   rb   r;   r;   r<   Útest_custom_diverging_vlims”   s   
z'TestHeatmap.test_custom_diverging_vlimsc                 C   sx   | j  dd¡}t d¡tj }tj||f }tj|fi | j¤Ž}tj|fi | j¤Ž}|j	|j	ks2J ‚|j
|j
ks:J ‚d S )Né
   )ÚrsÚrandr3   ÚzerosÚnanÚc_r&   r'   r)   r   r   )r9   Úx1ÚnullsÚx2Úm1Úm2r;   r;   r<   Útest_array_with_nansŸ   s   z TestHeatmap.test_array_with_nansc                 C   sr   t jg d¢dtjdgddtjgdœd}| j ¡ }t |j¡|d< tj	|fi |¤Ž}t
 t |jj¡|jj¡ d S )N©rB   rB   rB   r   rC   ©ÚaÚbÚc©r/   r$   )r0   r1   r3   rl   r)   rJ   Úisnanr?   r&   r'   r*   r+   r,   r/   r$   )r9   rN   rV   Úmr;   r;   r<   Ú	test_mask«   s   



þ
ÿzTestHeatmap.test_maskc                 C   s<   | j  ¡ }d|d< tj| jfi |¤Ž}|jtjjksJ ‚d S )NÚBuGnr   )	r)   rJ   r&   r'   r]   r   ÚmplÚcmr}   rb   r;   r;   r<   Útest_custom_cmap¹   s   
zTestHeatmap.test_custom_cmapc                 C   sV   | j  ¡ }d|d< tj| jfi |¤Ž}|j| jj ¡ ksJ ‚|j| jj 	¡ ks)J ‚d S )Nç      à?r   )
r)   rJ   r&   r'   r]   r   r?   rZ   r   rY   rb   r;   r;   r<   Útest_centered_vlimsÀ   s
   
zTestHeatmap.test_centered_vlimsc                 C   sX   t  ddd¡}tjj}tj|g|d}|jd  ¡ }t  ddd¡}t	 
|||ƒd¡ d S )Nçš™™™™™É?rB   é	   )r   r   r   ©r3   Úlinspacer~   r   Úbinaryr&   r   ÚcollectionsÚget_facecolorsr*   Úassert_array_almost_equal)r9   Úvalsr   ÚaxÚfcÚcvalsr;   r;   r<   Útest_default_colorsÊ   s   zTestHeatmap.test_default_colorsc                 C   sL   t  ddd¡}tjj}tj|gd|d}|jd  ¡ }t	 
|||ƒd¡ d S )Nrƒ   rB   r„   r   )r   r   r   r…   ©r9   r‹   r   rŒ   r   r;   r;   r<   Útest_custom_vlim_colorsÓ   ó
   z#TestHeatmap.test_custom_vlim_colorsc                 C   sL   t  ddd¡}tjj}tj|gd|d}|jd  ¡ }t	 
|||ƒd¡ d S )Nrƒ   rB   r„   r   )r   r   r   r   r…   r   r;   r;   r<   Útest_custom_center_colorsÛ   r’   z%TestHeatmap.test_custom_center_colorsc                 C   sî  | j  ¡ }t tj d¡¡}| d¡ ||d< tj| jfi |¤Ž}t	 
|tj tjg¡ƒ| tj tjg¡¡¡ d|d< tj| jfi |¤Ž}t	 
|tj tjg¡ƒ| tj tjg¡¡¡ | j  ¡ }t tj d¡¡}| d¡ ||d< tj| jfi |¤Ž}t	 
|tj ƒ| tj ¡¡ d|d< tj| jfi |¤Ž}t	 
|tj ƒ| tj ¡¡ | j  ¡ }t tj d¡¡}| d¡ ||d< tj| jfi |¤Ž}t	 
|tj ƒ| tj ¡¡ d|d< tj| jfi |¤Ž}t	 
|tjƒ| tj¡¡ d S )NÚBrBGÚredr   r   r   )r)   rJ   r~   r   Úget_cmapÚset_badr&   r'   r]   r*   r+   r3   rT   Úmasked_invalidrl   r   Ú	set_underÚinfÚset_over)r9   rV   r   Úhmr;   r;   r<   Útest_cmap_with_propertiesã   sB   

þþ



z%TestHeatmap.test_cmap_with_propertiesc                 C   sN   | j  ¡ }d|d< d|d< tj| jfi |¤Ž}|jg ksJ ‚|jg ks%J ‚d S )NFr2   r5   )r)   rJ   r&   r'   r>   r2   r5   rb   r;   r;   r<   Útest_tickabels_off
  s   
zTestHeatmap.test_tickabels_offc                 C   s~   | j  ¡ }tdd | jjd … ƒ}tdd | jjd … ƒ}||d< ||d< tj| jfi |¤Ž}|j|ks6J ‚|j|ks=J ‚d S )NÚiheartheatmapsrB   Úheatmapsarecoolr   r2   r5   )	r)   rJ   Úlistr>   Úshaper&   r'   r2   r5   )r9   rV   r2   r5   r:   r;   r;   r<   Útest_custom_ticklabels  s   
z"TestHeatmap.test_custom_ticklabelsc                 C   s¸   | j  ¡ }d\}}||d< ||d< tj| jfi |¤Ž}| jjj\}}t |j	t
 d||¡d ¡ t |jt
 d||¡d ¡ t |j| jjd||… ¡ t |j| jjd||… ¡ d S )N)r   rC   r2   r5   r   r   )r)   rJ   r&   r'   r>   rM   r¢   r*   r+   Úxticksr3   r4   Úyticksr2   Úcolumnsr5   r   )r9   rV   ÚxstepÚystepr:   ÚnxÚnyr;   r;   r<   Útest_custom_ticklabel_interval  s   
ÿÿz*TestHeatmap.test_custom_ticklabel_intervalc                 C   s\   t j| jddddid}t| jj|jƒD ]\}}| ¡ d |¡ks#J ‚| 	¡ dks+J ‚qd S )NTú.1fÚfontsizeé   ©r   r    r!   ú{:.1f})
r&   r   r>   Úzipr(   ÚflatÚtextsÚget_textÚformatÚget_fontsize©r9   rŒ   ÚvalÚtextr;   r;   r<   Útest_heatmap_annotation,  s   ÿþz#TestHeatmap.test_heatmap_annotationc                 C   sb   t dddd}tj| jdd|d}|jD ]}| ¡ dksJ ‚| ¡ dks&J ‚| ¡ dks.J ‚qd S )Nz0.3ÚbottomÚleft)ÚcolorÚvaÚhaTr¬   r¯   )Údictr&   r   r>   r³   Ú	get_colorÚget_haÚget_va)r9   r!   rŒ   r¹   r;   r;   r<   Ú%test_heatmap_annotation_overwrite_kws4  s   ÿ
ýz1TestHeatmap.test_heatmap_annotation_overwrite_kwsc                 C   s¢   t jg d¢dtjdgddtjgdœd}t |j¡}tj ||¡}tj	|dd|d}t
| ¡ ƒt
|jƒks7J ‚t| ¡ |jƒD ]\}}d	 |¡| ¡ ksNJ ‚q?d S )
Nrt   r   rC   ru   ry   Tr¬   )r   r    r$   r°   )r0   r1   r3   rl   rz   r?   rT   rU   r&   r   ÚlenÚ
compressedr³   r±   rµ   r´   )r9   rN   r$   Ú	df_maskedrŒ   r¸   r¹   r;   r;   r<   Ú!test_heatmap_annotation_with_mask>  s   



þÿz-TestHeatmap.test_heatmap_annotation_with_maskc                 C   sB   t j| jdd}|jd }t| ¡ ƒ| jjjksJ ‚t 	d¡ d S )NT)r   r   Úall)
r&   r   r>   rˆ   rÅ   r‰   r?   ÚsizeÚpltÚclose)r9   rŒ   Úmeshr;   r;   r<   Ú#test_heatmap_annotation_mesh_colorsJ  s   
z/TestHeatmap.test_heatmap_annotation_mesh_colorsc                 C   sf   | j d }tj| j |dddid}t|jj|jƒD ]\}}| ¡ d |¡ks(J ‚| 	¡ dks0J ‚qd S )Nrh   r¬   r­   r®   r¯   r°   )
r>   r&   r   r±   r?   r²   r³   r´   rµ   r¶   )r9   Ú
annot_datarŒ   r¸   r¹   r;   r;   r<   Ú"test_heatmap_annotation_other_dataR  s   
ÿþz.TestHeatmap.test_heatmap_annotation_other_datac                 C   sJ   t j| jddddd}t| jj|jƒD ]\}}| ¡ d |¡ks"J ‚qd S )Nr   TF)r    r   r2   r5   z{:.2f})	r&   r   r>   r±   r(   r²   r³   r´   rµ   r·   r;   r;   r<   Ú/test_heatmap_annotation_with_limited_ticklabels\  s   ÿÿz;TestHeatmap.test_heatmap_annotation_with_limited_ticklabelsc                 C   s¨   t  ¡ }t | j¡ t|jƒdksJ ‚t  |¡ t  ¡ }tj| jdd t|jƒdks-J ‚t  |¡ t  d¡\}\}}tj| j||d t|jƒdksMJ ‚t  |¡ d S )Nr   F)r"   rB   )rŒ   Úcbar_ax)	rË   Úfigurer&   r   r>   rÅ   ÚaxesrÌ   Úsubplots©r9   ÚfÚax1Úax2r;   r;   r<   Útest_heatmap_cbarb  s   

zTestHeatmap.test_heatmap_cbarú3.1.1úmatplotlib 3.1.1 bug©Úreasonc                 C   sœ   t  | j¡}dd„ | ¡ D ƒ}|t| jjƒksJ ‚dd„ | ¡ D ƒ}|t| jjƒks,J ‚| ¡ dks4J ‚| 	¡ dks<J ‚| 
¡ dksDJ ‚| ¡ dksLJ ‚d S )Nc                 S   s   g | ]}t | ¡ ƒ‘qS r;   )Úintr´   ©Ú.0Úlr;   r;   r<   Ú
<listcomp>y  ó    z1TestHeatmap.test_heatmap_axes.<locals>.<listcomp>c                 S   ó   g | ]}|  ¡ ‘qS r;   ©r´   rà   r;   r;   r<   rã   {  ó    r%   r   )r   r   )r   r   )r&   r   r>   Úget_xticklabelsr¡   r¦   Úget_yticklabelsr   Ú
get_xlabelÚ
get_ylabelÚget_xlimÚget_ylim)r9   rŒ   ÚxtlÚytlr;   r;   r<   Útest_heatmap_axess  s   zTestHeatmap.test_heatmap_axesc                 C   s  t jdd\}}tj| jdd|d | ¡ D ]
}| ¡ dks J ‚q| ¡ D ]
}| ¡ dks/J ‚q%t  |¡ | j 	¡ }dd„ |j
D ƒ|_
d	d„ |jD ƒ|_t jdd\}}tj|dd|d | ¡ D ]
}| ¡ dkskJ ‚qa| ¡ D ]
}| ¡ dkszJ ‚qpt  |¡ d S )
N©r   r   ©ÚfigsizerB   )r2   r5   rŒ   r   éZ   c                 S   ó   g | ]}t |ƒd  ‘qS ©rh   ©Ústr©rá   rx   r;   r;   r<   rã   ’  rä   z?TestHeatmap.test_heatmap_ticklabel_rotation.<locals>.<listcomp>c                 S   ó   g | ]}|d  ‘qS rö   r;   ©rá   Úir;   r;   r<   rã   “  rç   )rË   rÕ   r&   r   r>   rè   Úget_rotationré   rÌ   rJ   r¦   r   ©r9   r×   rŒ   ÚtrN   r;   r;   r<   Útest_heatmap_ticklabel_rotation„  s"   

z+TestHeatmap.test_heatmap_ticklabel_rotationc                 C   sP   d}t j| jd|d}|jd }| ¡ d dksJ ‚t| ¡ d ƒ|ks&J ‚d S )N)r   r   rB   rB   r   )Ú
linewidthsÚ	linecolorr   )r&   r   r>   rˆ   Úget_linewidthsÚtupleÚget_edgecolor)r9   rx   rŒ   rÍ   r;   r;   r<   Útest_heatmap_inner_lines   s
   
z$TestHeatmap.test_heatmap_inner_linesc                 C   s4   t j| jdd}| ¡ }|dks|dksJ ‚d S d S )NT)ÚsquareÚequalrB   )r&   r   r>   Ú
get_aspect)r9   rŒ   Ú
obs_aspectr;   r;   r<   Útest_square_aspect¨  s   zTestHeatmap.test_square_aspectc                 C   sÒ   t  | jd ¡}|j| jjksJ ‚|j ¡ dksJ ‚t t¡ | j	 
dd¡dk}t  | j|¡ W d   ƒ n1 s9w   Y  t t¡ t | j	 
dd¡dk¡}t  | j|¡ W d   ƒ d S 1 sbw   Y  d S )Nr   rC   é   r   r   )r&   Ú_matrix_maskr>   r¢   r?   ÚsumÚpytestÚraisesÚ
ValueErrorri   Úrandnr0   r1   )r9   r$   Úbad_array_maskÚbad_df_maskr;   r;   r<   Útest_mask_validation°  s   þ"þz TestHeatmap.test_mask_validationc                 C   sŠ   t  tjdtd dd¡¡}tj|jd< t 	|d ¡}t
 |ddgddgg¡ t ddgddgg¡}t 	||¡}t
 |ddgddgg¡ d S )Nr   ©rQ   r   )r   r   TF)r0   r1   r3   r4   ÚfloatÚreshaperl   Úlocr&   r  r*   r+   rX   )r9   r/   r$   Úmask_inÚmask_outr;   r;   r<   Útest_missing_data_mask¾  s   z"TestHeatmap.test_missing_data_maskc                 C   sB   t  d¡\}\}}tj| j||tddd t|jƒdksJ ‚d S )Nr   T)Ú	drawedges)rŒ   rÒ   r#   )rË   rÕ   r&   r   r>   rÀ   rÅ   rˆ   rÖ   r;   r;   r<   Útest_cbar_ticksÉ  s
   ÿzTestHeatmap.test_cbar_ticks)AÚ__name__Ú
__module__Ú__qualname__r3   ÚrandomÚRandomStater  ÚmapÚordri   r  r(   r0   ÚSeriesr   r1   r>   rj   r^   r]   rÀ   r)   r=   r@   rP   r  ÚmarkÚparametrizer  Úint64ÚobjectrW   r[   r_   rc   rd   rg   rs   r|   r€   r‚   r   r‘   r“   r   rž   r£   r«   rº   rÄ   rÈ   rÎ   rÐ   rÑ   rÚ   Úxfailr~   Ú__version__rð   r   r  r  r  r  r  r;   r;   r;   r<   r
   "   sb    

þ
	

	'


ÿ
r
   c                   @   s   e Zd Zej eeedƒƒ¡Z	e	 
dd¡e d¡ Zeje d¡ jZejg d¢ddZejeedZzdd	lZejejd
ddZW n eyZ   ejejd
dZejeddZY nw ejedej dZed Ze  ej!e ¡Z"e#d	d
dddddZ$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dd„ Z)dd „ Z*d!d"„ Z+d#d$„ Z,d%d&„ Z-e.j/j0e1d'd(d)d*„ ƒZ2e.j/j0e1d'd(d+d,„ ƒZ3d-d.„ Z4e.j/j5e6j7d/kd0d(d1d2„ ƒZ8d3d4„ Z9d	S )5ÚTestDendrogramÚ
dendrogramr   r   ©r   r   r   r   ÚEÚFÚGÚHr   r   ©r¦   r   NÚ	euclideanÚsingle©ÚmetricÚmethod©r8  ©r9  T©Úno_plotÚcolor_thresholdÚleavesrB   F)Úlinkager8  r9  ÚaxisÚlabelÚrotatec                 C   s®   t j| jfi | j¤Ž}t |jj| j¡ t 	|j
jt | j¡¡ t |j| j¡ |j| jks0J ‚t |j| j¡ t |j| j¡ t |jg ¡ |jd u sNJ ‚|jdksUJ ‚d S )Nr%   )r&   Ú_DendrogramPlotterr(   r)   r*   r+   rX   rM   r-   r.   r/   r0   r1   r@  Úx_norm_linkager.  Úx_norm_dendrogramÚreordered_indÚx_norm_leavesr2   r5   r6   r7   r8   r;   r;   r<   r=   ë  s   z!TestDendrogram.test_ndarray_inputc                 C   s¬   t j| jfi | j¤Ž}t |jjt 	| j¡¡ t
 |jj| j¡ t |j| j¡ |j| jks0J ‚t |jt 	| jj¡| j ¡ t |jg ¡ |jdksMJ ‚|jdksTJ ‚d S )Nr   r%   )r&   rD  r>   r)   r*   r+   rX   rM   r3   Úasarrayr-   r.   r/   r@  rE  r.  rF  r2   r¦   rH  r5   r6   r7   r8   r;   r;   r<   r@   û  s   ÿÿzTestDendrogram.test_df_inputc                    sž   | j  ¡ }tjjg d¢ddgd}d|_||_| j ¡ }d|d< tj	|j
fi |¤Ž}g d¢‰ ‡ fd	d
„|jD ƒ‰ t |jˆ ¡ t |jg ¡ |jdksMJ ‚d S )NrA   rD   rE   rF   rH   TrB  rI   c                    s   g | ]}ˆ | ‘qS r;   r;   rû   ©r2   r;   r<   rã     rç   z:TestDendrogram.test_df_multindex_input.<locals>.<listcomp>)r>   rJ   r0   rK   rL   r   r   r)   r&   rD  rM   rG  r*   r+   r2   r5   r6   )r9   rN   r   rV   r:   r;   rJ  r<   rP     s   
þ
z&TestDendrogram.test_df_multindex_inputc                 C   s°   | j  ¡ }d|d< tj| jjfi |¤Ž}t |jt	 
| jj¡¡ t |j| jj¡ t |j| j¡ |j| jks9J ‚t |j| j¡ t |jg ¡ |jdksOJ ‚|jdksVJ ‚d S )Nr   rA  r   r%   )r)   rJ   r&   rD  r>   rM   r*   r+   rX   r3   rI  r-   r.   r/   r@  rE  r.  rF  r2   Údf_norm_leavesr5   r6   r7   rb   r;   r;   r<   Útest_axis0_input  s   
zTestDendrogram.test_axis0_inputc                 C   sŽ   | j  ¡ }d|d< tj| jfi |¤Ž}t |jjt	 
| j¡¡ t |jj| j¡ t |jg ¡ t |j| j¡ |jdks>J ‚|jdksEJ ‚d S )NTrC  r%   r   )r)   rJ   r&   rD  r>   r*   r+   rX   rM   r3   rI  r-   r.   r/   r2   r5   rK  r6   r7   rb   r;   r;   r<   Útest_rotate_input/  s   
z TestDendrogram.test_rotate_inputc                 C   sD   | j  ¡ }d|d< d|d< tj| jjfi |¤Ž}t |j| j	¡ d S )NTrC  r   rA  )
r)   rJ   r&   rD  r>   rM   r*   r+   rG  rH  rb   r;   r;   r<   Útest_rotate_axis0_input<  s
   
z&TestDendrogram.test_rotate_axis0_inputc                 C   sª   | j  ¡ }zdd l}|j| jddd}W n ty,   tj| jdd}tj	|dd}Y nw tj
|dtj d}||d	< tj| jfi |¤Ž}t |j	|¡ |j
|ksSJ ‚d S )
Nr   r6  r5  ©r9  r8  r:  r;  Tr<  r@  )r)   rJ   ÚfastclusterÚlinkage_vectorr(   ÚImportErrorr   Úpdistr   r@  r.  r3   rš   r&   rD  r>   r*   r+   )r9   rV   rP  r@  Údr.  r:   r;   r;   r<   Útest_custom_linkageD  s"   


ÿþÿz"TestDendrogram.test_custom_linkagec                 C   s~   | j  ¡ }d|d< tj| jfi |¤Ž}|jg ksJ ‚|jg ks!J ‚|jg ks(J ‚|jg ks/J ‚|j	dks6J ‚|j
dks=J ‚d S )NFrB  r%   )r)   rJ   r&   rD  r>   r¤   r¥   r2   r5   r6   r7   rb   r;   r;   r<   Útest_label_falseW  s   
zTestDendrogram.test_label_falsec                 C   sr   t j| jfi | j¤Ž}| ¡ }ddlm} ddlm} |j	| jj
| jd d}|j|| jd d}t ||¡ d S )Nr   r   r   r8  r:  r9  r;  )r&   rD  r(   r)   Ú_calculate_linkage_scipyÚscipy.spatialr   Úscipy.clusterr   rS  rM   r@  r*   r+   )r9   r:   Úscipy_linkager   r   Údistsr@  r;   r;   r<   Útest_linkage_scipyb  s   
ÿz!TestDendrogram.test_linkage_scipyzfastcluster not installedrÝ   c                 C   sT   dd l }| j ¡ }d|d< |j| jjddd}tj| jfi |¤Ž}t 	|j|¡ d S )Nr   Úaverager9  r5  rO  ©
rP  r)   rJ   r@  r(   rM   r&   rD  r*   r+   ©r9   rP  rV   r@  r:   r;   r;   r<   Útest_fastcluster_other_methodp  s   
ÿz,TestDendrogram.test_fastcluster_other_methodc                 C   sd   dd l }| j ¡ }d|d< d|d< |j| jj|d |d d}tj| jfi |¤Ž}t 	|j|¡ d S )Nr   Úcosiner8  r]  r9  rO  r^  r_  r;   r;   r<   Útest_fastcluster_non_euclidean{  s   
ÿz-TestDendrogram.test_fastcluster_non_euclideanc                 C   sx   t j| jfi | j¤Ž}t ¡ }| ¡ }t|jƒd }|d dks"J ‚|d |ks*J ‚t|j	d  
¡ ƒt|jƒks:J ‚d S )Nrh   r   rB   )r&   r.  r(   r)   rË   Úgcarì   rÅ   rG  rˆ   Ú	get_pathsÚdependent_coord)r9   rT  rŒ   ÚxlimÚxmaxr;   r;   r<   Útest_dendrogram_plot‡  s   $z#TestDendrogram.test_dendrogram_plotrÛ   rÜ   c                 C   sh   | j  ¡ }d|d< tj| jfi |¤Ž}t ¡ }| ¡ }t|j	ƒd }|d dks*J ‚|d |ks2J ‚d S )NTrC  rh   rB   r   )
r)   rJ   r&   r.  r(   rË   rc  rí   rÅ   rG  )r9   rV   rT  rŒ   ÚylimÚymaxr;   r;   r<   Útest_dendrogram_rotate”  s   
z%TestDendrogram.test_dendrogram_rotatec                 C   s
  t jdd\}}tj| j|d | ¡ D ]
}| ¡ dksJ ‚qt  |¡ | j ¡ }dd„ |j	D ƒ|_	dd„ |j
D ƒ|_
t jdd\}}tj||d | ¡ D ]
}| ¡ dksXJ ‚qNt  |¡ t jdd\}}tj|jdd	d
 | ¡ D ]
}| ¡ dks}J ‚qst  |¡ d S )Nrñ   rò   )rŒ   r   c                 S   rõ   rö   r÷   rù   r;   r;   r<   rã   ±  rä   zETestDendrogram.test_dendrogram_ticklabel_rotation.<locals>.<listcomp>c                 S   rú   rö   r;   rû   r;   r;   r<   rã   ²  rç   rô   T)rA  rC  )rË   rÕ   r&   r.  r>   rè   rý   rÌ   rJ   r¦   r   rM   ré   rþ   r;   r;   r<   Ú"test_dendrogram_ticklabel_rotation§  s$   


z1TestDendrogram.test_dendrogram_ticklabel_rotation):r  r   r!  r3   r"  r#  r  r$  r%  ri   r  r4   r(   rM   r0   r&  r   r1   r>   rP  rQ  rE  rR  r   rS  Úx_norm_distancesr   r@  r.  rš   rF  rH  rI  r¦   rK  rÀ   r)   r=   r@   rP   rL  rM  rN  rU  rV  r\  r  r'  ÚskipifÚ_no_fastclusterr`  rb  rh  r+  r~   r,  rk  rl  r;   r;   r;   r<   r-  Ñ  sZ    
ÿ
þþÿÿ


ÿ
r-  c                   @   sp  e Zd Zej eeedƒƒ¡Z	e	 
dd¡e d¡ Zeje d¡ jZejg d¢ddZejeedZzdd	lZejejd
ddZW n eyZ   ejejd
dZejeddZY nw ejedej dZed Ze  ej!e ¡Z"e#d	d	d	dd	d	dddd	Z$e#d
dd	ddd	d	d	dZ%e&dej'd ƒZ(e&dej'd ƒZ)dd„ Z*dd„ Z+d d!„ Z,d"d#„ Z-d$d%„ Z.d&d'„ Z/d(d)„ Z0d*d+„ Z1d,d-„ Z2d.d/„ Z3d0d1„ Z4d2d3„ Z5d4d5„ Z6d6d7„ Z7d8d9„ Z8d:d;„ Z9d<d=„ Z:d>d?„ Z;d@dA„ Z<dBdC„ Z=dDdE„ Z>dFdG„ Z?dHdI„ Z@dJdK„ ZAdLdM„ ZBdNdO„ ZCdPdQ„ ZDdRdS„ ZEdTdU„ ZFdVdW„ ZGdXdY„ ZHdZd[„ ZId\d]„ ZJd^d_„ ZKd`da„ ZLdbdc„ ZMddde„ ZNdfdg„ ZOdhdi„ ZPd	S )jÚTestClustermapÚ
clustermapr   r   r/  r   r   r4  r   Nr5  r6  r7  r:  r;  Tr<  r?  )rh   rh   rƒ   ç¸…ëQ¸ž?)r   gš™™™™™é?çš™™™™™©?rƒ   )	Ú	pivot_kwsÚz_scoreÚstandard_scaleró   Ú
row_colorsÚ
col_colorsÚdendrogram_ratioÚcolors_ratioÚcbar_posr]  )r8  r9  Úcolorbar_kwsÚrow_clusterÚcol_clusterÚrow_linkageÚcol_linkageÚtree_kwsÚSet2ÚDark2rB   c                 C   s`   t j| jfi | j¤Ž}t |jt | j¡¡ t	|j
jƒdks J ‚|jd u s'J ‚|jd u s.J ‚d S )Nr   )r&   ÚClusterGridr(   r)   r-   r.   r/   r0   r1   rÅ   ÚfigrÔ   Úax_row_colorsÚax_col_colors©r9   Úcgr;   r;   r<   r=   è  s
   z!TestClustermap.test_ndarray_inputc                 C   s*   t j| jfi | j¤Ž}t |j| j¡ d S r\   )r&   r„  r>   r)   r-   r.   r/   rˆ  r;   r;   r<   r@   ï  s   zTestClustermap.test_df_inputc                 C   sb   | j  ¡ }tj|fi | j¤Ž}|jdi | j¤Ž |jjt	 
|j¡ }t |t	 |jjd ¡¡ d S )Nr   r;   )r>   Úcorrr&   r„  r)   ÚplotÚdefault_plot_kwsÚdata2dr?   r3   Údiag_indices_fromr*   r+   Úonesr¢   )r9   rN   r‰  Údiagr;   r;   r<   Útest_corr_df_inputó  s
   
z!TestClustermap.test_corr_df_inputc                 C   sf   | j  ¡ }d|j_tj| ¡ ddd}| j ¡ }tdddd|d< t	j
|fi |¤Ž}t |j|¡ d S )NÚnumbersr   )Úvar_nameÚid_varsÚvalue)r   r¦   r?   rt  )r>   rJ   r   r   r0   ÚmeltÚreset_indexr)   rÀ   r&   r„  r-   r.   r  )r9   r>   Údf_longrV   r‰  r;   r;   r<   Útest_pivot_inputú  s   
ÿ

ÿzTestClustermap.test_pivot_inputc                 C   sj   | j  ¡ }| j|d< | j|d< tj| jfi |¤Ž}t |j| j¡ t |j| j¡ t	|j
jƒdks3J ‚d S ©Nrw  rx  r  ©r)   rJ   rw  rx  r&   r„  r>   r*   r+   rÅ   r…  rÔ   ©r9   rV   r‰  r;   r;   r<   Útest_colors_input  s   


z TestClustermap.test_colors_inputc                 C   s¬   | j  ¡ }tj| jdd}tj| jd| jjd}||d< ||d< tt	t
jj|ƒƒ}tt	t
jj|ƒƒ}tj| jfi |¤Ž}t |j|¡ t |j|¡ t|jjƒdksTJ ‚d S )NÚcategoryr  )rQ   r   rw  rx  r  )r)   rJ   r0   r&  rw  rx  r>   r¦   r¡   r$  r~   ÚcolorsÚto_rgbr&   r„  r*   r+   rÅ   r…  rÔ   )r9   rV   rw  rx  Úexp_row_colorsÚexp_col_colorsr‰  r;   r;   r<   Útest_categorical_colors_input  s   
ÿz,TestClustermap.test_categorical_colors_inputc                 C   sz   | j  ¡ }| j| jg}| j| jg}||d< ||d< tj| jfi |¤Ž}t |j|¡ t |j|¡ t	|j
jƒdks;J ‚d S rš  r›  ©r9   rV   rw  rx  r   r;   r;   r<   Útest_nested_colors_input&  s   
z'TestClustermap.test_nested_colors_inputc                 C   sv   | j  ¡ }tjj|d< | j|d< | j|d< tj| j	fi |¤Ž}t
 |j| j¡ t
 |j| j¡ t|jjƒdks9J ‚d S )Nr   rw  rx  r  )r)   rJ   r~   r   ÚPRGnrw  rx  r&   rq  r>   r*   r+   rÅ   r…  rÔ   rœ  r;   r;   r<   Útest_colors_input_custom_cmap4  s   


z,TestClustermap.test_colors_input_custom_cmapc                 C   sV   | j  ¡ }|| ¡  | ¡  }| j ¡ }d|d< tj| j fi |¤Ž}t |j	|¡ d S )NrB   ru  )
r>   rJ   ÚmeanÚstdr)   r&   r„  r-   r.   r  ©r9   rN   rV   r‰  r;   r;   r<   Útest_z_scoreA  s   

zTestClustermap.test_z_scorec                 C   sb   | j  ¡ }|j}|| ¡  | ¡  }|j}| j ¡ }d|d< tj| j fi |¤Ž}t 	|j
|¡ d S )Nr   ru  )r>   rJ   rM   r¨  r©  r)   r&   r„  r-   r.   r  rª  r;   r;   r<   Útest_z_score_axis0J  s   

z!TestClustermap.test_z_score_axis0c                 C   s^   | j  ¡ }|| ¡  | ¡ | ¡   }| j ¡ }d|d< tj| j fi |¤Ž}t |j	|¡ d S )NrB   rv  )
r>   rJ   rZ   rY   r)   r&   r„  r-   r.   r  rª  r;   r;   r<   Útest_standard_scaleU  s   

z"TestClustermap.test_standard_scalec                 C   sj   | j  ¡ }|j}|| ¡  | ¡ | ¡   }|j}| j ¡ }d|d< tj| j fi |¤Ž}t 	|j
|¡ d S )Nr   rv  )r>   rJ   rM   rZ   rY   r)   r&   r„  r-   r.   r  rª  r;   r;   r<   Útest_standard_scale_axis0^  s   

z(TestClustermap.test_standard_scale_axis0c                 C   s^   | j  ¡ }d|d< d|d< t t¡ tj| jfi |¤Ž W d   ƒ d S 1 s(w   Y  d S )NTru  rv  )r)   rJ   r  r  r  r&   r„  r>   )r9   rV   r;   r;   r<   Útest_z_score_standard_scalei  s   
"ÿz*TestClustermap.test_z_score_standard_scalec                 C   sR   t jj| j| jdd\}}t| jƒD ]\}}| j| }t|||df ƒ|ƒ qd S )Nr   ©rA  ©r&   r„  Úcolor_list_to_matrix_and_cmaprx  rH  Ú	enumerater	   )r9   r   r   rü   Úleafr½   r;   r;   r<   Ú"test_color_list_to_matrix_and_cmapp  s   

ÿ
þz1TestClustermap.test_color_list_to_matrix_and_cmapc           	      C   sv   | j | j d d d… g}tjj|| jdd\}}t| jƒD ]\}}t|ƒD ]\}}|| }t||||f ƒ|ƒ q$qd S )Néÿÿÿÿr   r°  )rx  r&   r„  r²  rH  r³  r	   )	r9   rŸ  r   r   rü   r´  ÚjÚ	color_rowr½   r;   r;   r<   Ú)test_nested_color_list_to_matrix_and_cmapy  s   
ÿþÿz8TestClustermap.test_nested_color_list_to_matrix_and_cmapc                 C   sR   t jj| j| jdd\}}t| jƒD ]\}}| j| }t||d|f ƒ|ƒ qd S )NrB   r°  r   r±  )r9   r   r   r·  r´  r½   r;   r;   r<   Ú(test_color_list_to_matrix_and_cmap_axis1„  s   

ÿ
þz7TestClustermap.test_color_list_to_matrix_and_cmap_axis1c                 C   sX   | j | j d g}t t¡ tjj|| jdd\}}W d   ƒ d S 1 s%w   Y  d S )Nr   rB   r°  )rx  r  r  r  r&   r„  r²  rH  )r9   rŸ  r   r   r;   r;   r<   Ú2test_color_list_to_matrix_and_cmap_different_sizesŒ  s   ÿ"ÿzATestClustermap.test_color_list_to_matrix_and_cmap_different_sizesc                 C   s>   t j| jfi | j¤Ž}|jdi | j¤Ž |jt ¡ dd d S )NÚpng)rµ   r;   )	r&   r„  r>   r)   r‹  rŒ  ÚsavefigÚtempfileÚNamedTemporaryFilerˆ  r;   r;   r<   Útest_savefig’  s   zTestClustermap.test_savefigc                 C   sˆ   t j| jfi | j¤Ž}t|jjd  ¡ ƒt|jj	ƒksJ ‚t|j
jd  ¡ ƒt|jj	ƒks/J ‚| jj|jj|jjf }t |j|¡ d S )Nr   )r&   rq  r>   r)   rÅ   Úax_row_dendrogramrˆ   rd  Údendrogram_rowÚindependent_coordÚax_col_dendrogramÚdendrogram_colÚilocrG  r-   r.   r  )r9   r   r  r;   r;   r<   Útest_plot_dendrograms˜  s   
ÿ
ÿÿz$TestClustermap.test_plot_dendrogramsc                 C   sÂ   | j  ¡ }d|d< d|d< tj| jfi |¤Ž}t|jjƒdks!J ‚t|jjƒdks+J ‚t|j 	¡ ƒdks6J ‚t|j 
¡ ƒdksAJ ‚t|j 	¡ ƒdksLJ ‚t|j 
¡ ƒdksWJ ‚t |j| j¡ d S )NFr}  r~  r   )r)   rJ   r&   rq  r>   rÅ   rÁ  ÚlinesrÄ  Ú
get_xticksÚ
get_yticksr-   r.   r  ©r9   rV   r   r;   r;   r<   Útest_cluster_false¥  s   
z!TestClustermap.test_cluster_falsec                 C   s^   | j  ¡ }| j|d< | j|d< tj| jfi |¤Ž}t|jj	ƒdks#J ‚t|j
j	ƒdks-J ‚d S )Nrw  rx  rB   )r)   rJ   rw  rx  r&   rq  r>   rÅ   r†  rˆ   r‡  rË  r;   r;   r<   Útest_row_col_colorsµ  s   


z"TestClustermap.test_row_col_colorsc                 C   sþ   | j  ¡ }d|d< d|d< | j|d< | j|d< tj| jfi |¤Ž}t|jj	ƒdks+J ‚t|j
j	ƒdks5J ‚t|j ¡ ƒdks@J ‚t|j ¡ ƒdksKJ ‚t|j
 ¡ ƒdksVJ ‚t|j
 ¡ ƒdksaJ ‚t|jjƒdkskJ ‚t|jjƒdksuJ ‚t |j| j¡ d S )NFr}  r~  rw  rx  r   rB   )r)   rJ   rw  rx  r&   rq  r>   rÅ   rÁ  rÈ  rÄ  rÉ  rÊ  r†  rˆ   r‡  r-   r.   r  rË  r;   r;   r<   Ú!test_cluster_false_row_col_colors¿  s   


z0TestClustermap.test_cluster_false_row_col_colorsc                 C   sæ   | j  ¡ }tjt| jƒt| jƒdœ| jjddgd|d< tjt| jƒt| jƒdœ| jj	ddgd|d	< t
j| jfi |¤Ž}d
d„ |j ¡ D ƒ}|jddgksPJ ‚||jksWJ ‚dd„ |j ¡ D ƒ}|jddgksjJ ‚||jksqJ ‚d S )N©Úrow_1Úrow_2rÐ  rÑ  ©r   r¦   rw  ©Úcol_1Úcol_2rÔ  rÕ  rx  c                 S   rå   r;   ræ   rà   r;   r;   r<   rã   à  rç   z9TestClustermap.test_row_col_colors_df.<locals>.<listcomp>c                 S   rå   r;   ræ   rà   r;   r;   r<   rã   å  rç   )r)   rJ   r0   r1   r¡   rw  r>   r   rx  r¦   r&   rq  r†  rè   Úrow_color_labelsr‡  ré   Úcol_color_labels©r9   rV   r   Ú
row_labelsÚ
col_labelsr;   r;   r<   Útest_row_col_colors_dfÓ  s0   
ÿ
ýÿ
ýÿÿz%TestClustermap.test_row_col_colors_dfc           	         s  ˆ j j\}}‡ fdd„ttd|dƒƒttd|dƒƒ D ƒ}‡ fdd„ttd|dƒƒttd|dƒƒ D ƒ}ˆ j ¡ }tjdtˆ jƒiˆ j j	d}|j
| |d	< tjd
tˆ jƒiˆ j jd}|j
| |d< tjˆ j fi |¤Ž}t|jƒd tˆ jƒks{J ‚t|jƒd tˆ jƒks‰J ‚d S )Nc                    ó   g | ]}ˆ j j| ‘qS r;   ©r>   r   rû   ©r9   r;   r<   rã   î  rä   zBTestClustermap.test_row_col_colors_df_shuffled.<locals>.<listcomp>r   r   rB   c                    rÜ  r;   ©r>   r¦   rû   rÞ  r;   r<   rã   ð  rä   Ú	row_annotr   rw  Ú	col_annotrx  )r>   r¢   r¡   Úranger)   rJ   r0   r1   rw  r   r  rx  r¦   r&   rq  ©	r9   r{   ÚnÚshuffled_indsÚshuffled_colsrV   rw  rx  r   r;   rÞ  r<   Útest_row_col_colors_df_shuffledê  s&   
ÿ
ÿ
ÿÿ z.TestClustermap.test_row_col_colors_df_shuffledc                 C   sÚ   | j  ¡ }tjdt| jƒi| jjd}| | jjd ¡|d< tjdt| j	ƒi| jj
d}| | jj
d ¡|d< tj| jfi |¤Ž}t|j	ƒd dgt| j	dd … ƒ ksVJ ‚t|jƒd dgt| jdd … ƒ kskJ ‚d S )	Nrà  r   r   rw  rá  rx  ©ç      ð?ré  ré  rB   )r)   rJ   r0   r1   r¡   rw  r>   r   Údroprx  r¦   r&   rq  r¤  r;   r;   r<   Útest_row_col_colors_df_missing  s   
ÿÿ*.z-TestClustermap.test_row_col_colors_df_missingc                 C   s  | j  ¡ }tjt| jƒt| jƒdœ| jjddgd|d< tj	| jfi |¤Ž}dd„ |j
 ¡ D ƒ}|jddgks9J ‚||jks@J ‚| j  ¡ }tjt| jƒt| jƒdœ| jjd	d
gd|d< tj	| jfi |¤Ž}dd„ |j ¡ D ƒ}|jd	d
gksyJ ‚||jks€J ‚d S )NrÏ  rÐ  rÑ  rÒ  rw  c                 S   rå   r;   ræ   rà   r;   r;   r<   rã     rç   zBTestClustermap.test_row_col_colors_df_one_axis.<locals>.<listcomp>rÓ  rÔ  rÕ  rx  c                 S   rå   r;   ræ   rà   r;   r;   r<   rã   (  rç   )r)   rJ   r0   r1   r¡   rw  r>   r   r&   rq  r†  rè   rÖ  rx  r¦   r‡  ré   r×  )r9   Úkws1Úcm1rÙ  Úkws2Úcm2rÚ  r;   r;   r<   Útest_row_col_colors_df_one_axis  s4   
ÿ
ýÿ
ÿ
ýÿz.TestClustermap.test_row_col_colors_df_one_axisc                 C   sÂ   | j  ¡ }tjt| jƒd| jjd|d< tjt| jƒd| jj	d|d< t
j| jfi |¤Ž}dd„ |j ¡ D ƒ}|jdgks?J ‚||jksFJ ‚dd„ |j ¡ D ƒ}|jdgksXJ ‚||jks_J ‚d S )	Nrà  ©r   r   rw  rá  rx  c                 S   rå   r;   ræ   rà   r;   r;   r<   rã   6  rç   z=TestClustermap.test_row_col_colors_series.<locals>.<listcomp>c                 S   rå   r;   ræ   rà   r;   r;   r<   rã   :  rç   )r)   rJ   r0   r&  r¡   rw  r>   r   rx  r¦   r&   rq  r†  rè   rÖ  r‡  ré   r×  rØ  r;   r;   r<   Útest_row_col_colors_series-  s   

ÿ
ÿz)TestClustermap.test_row_col_colors_seriesc           	         s
  ˆ j j\}}‡ fdd„ttd|dƒƒttd|dƒƒ D ƒ}‡ fdd„ttd|dƒƒttd|dƒƒ D ƒ}ˆ j ¡ }tjtˆ jƒdˆ j j	d}|j
| |d	< tjtˆ jƒd
ˆ j jd}|j
| |d< tjˆ j fi |¤Ž}t|jƒtˆ jƒkswJ ‚t|jƒtˆ jƒksƒJ ‚d S )Nc                    rÜ  r;   rÝ  rû   rÞ  r;   r<   rã   B  rä   zFTestClustermap.test_row_col_colors_series_shuffled.<locals>.<listcomp>r   r   rB   c                    rÜ  r;   rß  rû   rÞ  r;   r<   rã   D  rä   rà  rñ  rw  rá  rx  )r>   r¢   r¡   râ  r)   rJ   r0   r&  rw  r   r  rx  r¦   r&   rq  rã  r;   rÞ  r<   Ú#test_row_col_colors_series_shuffled>  s&   
ÿ
ÿ
ÿÿz2TestClustermap.test_row_col_colors_series_shuffledc                 C   sÎ   | j  ¡ }tjt| jƒd| jjd}| | jjd ¡|d< tjt| j	ƒd| jj
d}| | jj
d ¡|d< tj| jfi |¤Ž}t|j	ƒdgt| j	dd … ƒ ksRJ ‚t|jƒdgt| jdd … ƒ kseJ ‚d S )	Nrà  rñ  r   rw  rá  rx  rè  rB   )r)   rJ   r0   r&  r¡   rw  r>   r   rê  rx  r¦   r&   rq  r¤  r;   r;   r<   Ú"test_row_col_colors_series_missingV  s   
ÿÿ&*z1TestClustermap.test_row_col_colors_series_missingc                 C   s¬   t j| j dd| jj¡| j| jdtj	 
¡ dd}t t | j¡|jj |jjd  ¡ d d …d d…f ¡s6J ‚t t | j¡|jj |jjd  ¡ d d …d d…f ¡sTJ ‚d S )Nr   éÈ   ÚSpectraléd   )rw  rx  r   Únormr   rC   )r&   rq  ri   Úuniformr>   r¢   rw  rx  r~   rŸ  ÚLogNormr3   Úarray_equalrX   rÂ  rG  r†  rˆ   r‰   rÅ  r‡  )r9   Úgr;   r;   r<   Ú)test_row_col_colors_ignore_heatmap_kwargsd  s   ûþþz8TestClustermap.test_row_col_colors_ignore_heatmap_kwargsc                 C   s®   t jt| jƒd| jjd}t jt| jƒd| jjd}t 	t
¡ tj| j|d W d   ƒ n1 s2w   Y  t 	t
¡ tj| j|d W d   ƒ d S 1 sPw   Y  d S )Nrà  rñ  rá  )rw  ©rx  )r0   r&  r¡   rw  r>   r   rx  r¦   r  r  Ú	TypeErrorr&   rq  r(   )r9   rw  rx  r;   r;   r<   Ú.test_row_col_colors_raise_on_mixed_index_typesw  s   ÿÿÿ"ÿz=TestClustermap.test_row_col_colors_raise_on_mixed_index_typesc                 C   s   | j  ¡ }| jdk|d< tj| jfi |¤Ž}t |jj|j	j¡ t |jj
|j	j
¡ t |j	j| jj|jj ¡ t |j	j
| jj
|jj ¡ d S rR   )r)   rJ   r>   r&   rq  r*   r+   r  r   r$   r¦   rÂ  rG  rÅ  )r9   rV   rü  r;   r;   r<   Útest_mask_reorganization‡  s   

ÿÿ
ÿÿz'TestClustermap.test_mask_reorganizationc           	      C   sÄ   | j  ¡ }t | jjd ¡}t|ƒ|d< | jjd | jjd … }||d< t	j
| jfi |¤Ž}dd„ |j ¡ D ƒ}dd„ |j ¡ D ƒ}||jj  d¡}||jj  d¡}t ||¡ t ||¡ d S )	NrB   r2   r   r5   c                 S   rå   r;   ræ   ©rá   rÿ   r;   r;   r<   rã   ¡  rç   z@TestClustermap.test_ticklabel_reorganization.<locals>.<listcomp>c                 S   rå   r;   ræ   r  r;   r;   r<   rã   ¢  rç   z<U1)r)   rJ   r3   r4   r>   r¢   r¡   r   r  r&   rq  Ú
ax_heatmaprè   ré   rÅ  rG  rS   rÂ  r*   r+   )	r9   rV   rî   rï   rü  Ú
xtl_actualÚ
ytl_actualÚxtl_wantÚytl_wantr;   r;   r<   Útest_ticklabel_reorganization—  s   
z,TestClustermap.test_ticklabel_reorganizationc                 C   sr   | j  ¡ }d|d< d|d< tj| jfi |¤Ž}dd„ |j ¡ D ƒ}dd„ |j ¡ D ƒ}|g ks1J ‚|g ks7J ‚d S )NFr2   r5   c                 S   rå   r;   ræ   r  r;   r;   r<   rã   ²  rç   z4TestClustermap.test_noticklabels.<locals>.<listcomp>c                 S   rå   r;   ræ   r  r;   r;   r<   rã   ³  rç   )r)   rJ   r&   rq  r>   r  rè   ré   )r9   rV   rü  r  r  r;   r;   r<   Útest_noticklabelsª  s   
z TestClustermap.test_noticklabelsc                 C   s  | j  ¡ }|jdd| j| jd | ¡ }|jddd tj| jfi |¤Ž}tj| jfi |¤Ž}|j 	¡ j
|j 	¡ j
ks=J ‚|j 	¡ j
|j 	¡ j
ksKJ ‚|j 	¡ j
|j 	¡ j
k sYJ ‚|j 	¡ j|j 	¡ jksgJ ‚|j 	¡ j|j 	¡ jksuJ ‚|j 	¡ j|j 	¡ jk sƒJ ‚| j  ¡ }|j| jd | ¡ }|j| j| jgd tj| jfi |¤Ž}tj| jfi |¤Ž}|j 	¡ j
|j 	¡ j
ks¿J ‚| j  ¡ }|jdd	 | ¡ }|jd
d	 tj| jfi |¤Ž}tj| jfi |¤Ž}|j 	¡ j|j 	¡ jksöJ ‚|j 	¡ j
|j 	¡ j
ksJ ‚d S )Nrƒ   rr  )ry  rz  rx  rw  ç333333Ó?rs  )ry  rz  rþ  )rƒ   rƒ   )ry  )rƒ   r
  )r)   rJ   Úupdaterx  rw  r&   rq  r>   rÄ  Úget_positionÚheightr‡  r  rÁ  Úwidthr†  )r9   rì  rî  Úg1Úg2r;   r;   r<   Útest_size_ratios·  s^   
ÿ

ÿ

ÿ

ÿ

ÿ

ÿ

ÿ


ÿ


ÿ

ÿzTestClustermap.test_size_ratiosc                 C   sº   | j  ¡ }d|d< tj| jfi |¤Ž}|j ¡ }t t	|j
ƒ¡|d d d… ks*J ‚t |j¡|d d ks8J ‚t |j¡|d d ksFJ ‚d |d< tj| jfi |¤Ž}|jd u s[J ‚d S )N)rƒ   gš™™™™™¹?gš™™™™™Ù?r
  r{  r   rC   )r)   rJ   r&   rq  r>   Úax_cbarr  r  Úapproxr  Úp0r  r  )r9   rV   rü  Úposr;   r;   r<   Útest_cbar_posó  s   

$zTestClustermap.test_cbar_posc                 C   s”   | j  ¡ }tj| jfi |¤Ž}t t¡ d|d< tj| jfi |¤Ž}W d   ƒ n1 s-w   Y  |j 	¡  
¡ }|j 	¡  
¡ }t ||¡sHJ ‚d S )NTr  )r)   rJ   r&   rq  r>   r  ÚwarnsÚUserWarningr  r  Ú
get_pointsr3   rû  )r9   rV   r  r  Úg1_shapeÚg2_shaper;   r;   r<   Útest_square_warning  s   
þz"TestClustermap.test_square_warningc                 C   sš   t j| jddd}tt |j¡j|jj	ƒD ]\}}| 
¡ d |¡ks$J ‚qt j| j| jdd}tt |j¡j|jj	ƒD ]\}}| 
¡ d |¡ksJJ ‚q;d S )NTr¬   )r   r    r°   )r&   rq  r>   r±   r3   rI  r  r²   r  r³   r´   rµ   )r9   rü  r¸   r¹   r;   r;   r<   Útest_clustermap_annotation  s     ÿz)TestClustermap.test_clustermap_annotationc                 C   sX   d}t j| jt|dd}|j|jfD ]}|j\}t| ¡  	¡ ƒd d… |ks)J ‚qd S )N)rB   r   rƒ   )r½   )r  rC   )
r&   rq  r>   rÀ   rÄ  rÁ  rˆ   r  rÁ   Úsqueeze)r9   Úrgbrü  rŒ   Útreer;   r;   r<   Útest_tree_kws  s   "þzTestClustermap.test_tree_kws)Qr  r   r!  r3   r"  r#  r  r$  r%  ri   r  r4   r(   rM   r0   r&  r   r1   r>   rP  rQ  rE  rR  r   rS  rm  r   r@  r.  rš   rF  rH  rI  r¦   rK  rÀ   r)   rŒ  r   r¢   rw  rx  r=   r@   r‘  r™  r  r£  r¥  r§  r«  r¬  r­  r®  r¯  rµ  r¹  rº  r»  rÀ  rÇ  rÌ  rÍ  rÎ  rÛ  rç  rë  rð  rò  ró  rô  rý  r   r  r  r	  r  r  r  r  r!  r;   r;   r;   r<   rp  Ã  s–    
ÿ
þþÿýü			
<
rp  )#r¾  rJ   Únumpyr3   Ú
matplotlibr~   Úmatplotlib.pyplotÚpyplotrË   Úpandasr0   rX  r   rY  r   Únumpy.testingÚtestingr*   Úpandas.testingr-   rR  Úpandas.util.testingÚutilr  r%   r   r&   r   Ú_testingr	   rP  ro  r
   r-  rp  r;   r;   r;   r<   Ú<module>   s@    ÿÿ   2 s