U
    Âmœd0º  ã                
   @   sŒ  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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Zd dlmZmZmZmZmZmZ d dlmZmZmZmZm Z  d d	l!m"Z"m#Z# d d
l$m%Z%m&Z&m'Z' d dl(m)Z* d dl+Z+e#dgdddd„ ƒZ,e#dgdddd„ ƒZ-e#dgddgdddd„ ƒZ.e+j/ 0dddg¡e#dgddgdd d!„ ƒƒZ1d"d#„ Z2e+j/ 0d$d%d&d'd(d)g¡e"dgdd*d+„ ƒƒZ3e"dgdd,d-„ ƒZ4e"ƒ d.d/„ ƒZ5d0d1„ Z6d2d3„ Z7e+j/ 0d4dd5d6d7g¡d8d9„ ƒZ8e+j/ 0d4ddd:d;dg¡d<d=„ ƒZ9d>d?„ Z:d@dA„ Z;dBdC„ Z<e#dDgdddEdF„ ƒZ=dGdH„ Z>e+j/ 0dIdJdKggdLfdMdNggdOfej?dPdQggdRfdPdSggdTfdUdUggdVfg¡dWdX„ ƒZ@e#dYgdddZd[„ ƒZAe#d\gddd]d^„ ƒZBe#d_gddd`dadb„ ƒZCe"dgddcdd„ ƒZDdedf„ ZEdgdh„ ZFe#digdddjdk„ ƒZGe#dlgdddgdmdndo„ ƒZHdpdq„ ZIe#drgddd`dsdt„ ƒZJe#dugdddvdw„ ƒZKe"dgddxdy„ ƒZLe#dzgddgddd{d|d}„ ƒZMe#d~gddd`dd€„ ƒZNdd‚„ ZOe#dƒgddd`d„d…„ ƒZPd†d‡„ ZQdˆd‰„ ZRdŠd‹„ ZSdŒd„ ZTdŽd„ ZUdd‘„ ZVe+j/ 0d’ee Wd“¡e Wd”¡e Wd•¡ Xd–¡fe e Wd“¡e Wd”¡e Wd—¡ Xd˜¡fg¡d™dš„ ƒZYd›dœ„ ZZddž„ Z[e#dŸgddd d¡„ ƒZ\e#d¢gdd£d¤d¥d¦„ ƒZ]d§d¨„ Z^d©dª„ Z_e#d«gdd¬d¤d­d®„ ƒZ`e#d¯gddd°d±„ ƒZad²d³„ Zbe#d´gdddµd¶„ ƒZce#d·ge d¡ d¸krd nd¹dddºd»d¼„ ƒZed½d¾„ Zfe+j/ 0d¿dÀdÁ„ dÂ g¡ D ƒ¡dÃdÄ„ ƒZhe#dÅgddd`dÆdÇ„ ƒZie#dÈgddd`dÉdÊ„ ƒZje#dËgddd`dÌdÍ„ ƒZke+j/ 0dÎejlejmdÏdÐ„ dÑdÐ„ g¡dÒdÓ„ ƒZndÔdÕ„ ZodÖd×„ ZpdØdÙ„ ZqdÚdÛ„ Zre+j/ 0dÜdÝdÞg¡e+j/ 0dßdàdág¡dâdã„ ƒƒZsdädå„ Ztdædç„ Zudèdé„ Zvdêdë„ Zwe"ƒ dìdí„ ƒZxdîdï„ Zyej zd¡dðdñ„ ƒZ{G dòdó„ dóej|ƒZ}dôdõ„ Z~död÷„ Ze"dgddødù„ ƒZ€e+j/ 0dúdUdPg¡e"dgddûdü„ ƒƒZe"ƒ dýdþ„ ƒZ‚e#dÿgddd d„ ƒZƒe#dgdde d¡ dkrðdnd ddd„ ƒZ„e+j/ …d¡e+j/ 0d	d
dg¡e+j/ 0ddddgdddgg¡e"dddd„ ƒƒƒƒZ†e"dgddd„ ƒZ‡dS (  é    )Ú	ExitStack)ÚcopyN)ÚPath)Úassert_array_equal)ÚImage)ÚcolorsÚimageÚpatchesÚpyplotÚstyleÚrcParams)Ú	AxesImageÚ	BboxImageÚFigureImageÚNonUniformImageÚPcolorImage)Úcheck_figures_equalÚimage_comparison)ÚBboxÚAffine2DÚTransformedBboxZimage_interpsZmpl20)r   c                  C   s†   dt jd< t d¡ dd¡} t  d¡\}\}}}|j| dd | d	¡ | d¡ |j| d
d | d
¡ |j| dd | d¡ dS )z5Make the basic nearest, bilinear and bicubic interps.é   ztext.kerning_factoréd   é   é   é   Únearest©Úinterpolationzthree interpolationsÚbilinearZbicubicN)	Úpltr   ÚnpÚarangeÚreshapeÚsubplotsÚimshowÚ	set_titleZ
set_ylabel)ÚXÚfigÚax1Úax2Úax3© r,   úT/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_image.pyÚtest_image_interps   s    



r.   zinterp_alpha.pngT)Úremove_textc                  C   sf   t  dd¡\} \}}t d¡}t d¡|d< t tjdtjd¡|d< |j|dd	 |j|d
d	 dS )z:Test the interpolation of the alpha channel on RGBA imagesé   é   )r   r   é   ©r   r   ).r0   ©Údtype©.r   Únoner   r   N)r    r$   r!   ÚzerosÚonesZtrilÚuint8r%   )r(   ZaxlZaxrÚimgr,   r,   r-   Útest_alpha_interp.   s    
r<   Zinterp_nearest_vs_noneZpdfÚsvg)Ú
extensionsr/   c                  C   s„   dt d< tjdddgdddggd	d
dgd
ddgggtjd} t dd¡\}\}}|j| dd | d¡ |j| dd | d¡ dS )z5Test the effect of "nearest" and "none" interpolationr   úsavefig.dpiéÚ   é¥   é    éz   ég   éî   é   éÿ   r   éc   éG   r4   r0   r1   r7   r   zinterpolation noner   zinterpolation nearestN)r   r!   Úarrayr:   r    r$   r%   r&   )r'   r(   r)   r*   r,   r,   r-   Útest_interp_nearest_vs_none;   s    ÿÿ
rK   ÚsuppressCompositeFÚfigimageÚpng)r>   c                 C   s  t jddd}| |_t t d¡d t d¡d ¡\}}t |d |d  ||  ¡}t d|d  d|d   ¡}||d  }|j|d	d	d
d |j|d d d…d d …f d	dd
d |j|d d …d d d…f dd	d
d |j|d d d…d d d…f ddd
d d S )N©r1   r1   r   ©ÚfigsizeÚdpig      Y@r1   r   é2   r   r   Úlower)ZxoZyoÚoriginéÿÿÿÿ)r    ÚfigurerL   r!   Zix_r"   ÚsinrM   )rL   r(   ÚxÚyÚzÚcr;   r,   r,   r-   Útest_figimageM   s    $$$r]   c                  C   sF   t  ¡ \} }| dddg¡ t ¡ }|  |¡ | d¡ t  |¡ d S )Nr0   r1   r   r   )r    r$   ÚplotÚioÚBytesIOÚsavefigÚseekÚimread)r(   ÚaxÚbufferr,   r,   r-   Útest_image_python_io]   s    

rf   z!img_size, fig_size, interpolation)r   r1   Úhanning)r   r   r   )r   é
   r   )r   ç333333@rg   )r   g333333"@r   c           	      C   s¢   t j d¡ tjd }t j t|| ƒt|| ƒ¡}| |fD ]}| ||¡ q<|  ¡ }| 	ddddg¡ |j
|dd | ¡ }| 	ddddg¡ |j
||d d S )Né!N,r?   r   r0   Úantialiasedr   )r!   ÚrandomÚseedr    r   ÚrandÚintÚset_size_inchesr$   Úset_positionr%   )	Úfig_testÚfig_refZimg_sizeZfig_sizer   rR   ÚAr(   rd   r,   r,   r-   Útest_imshow_antialiasedf   s    
ru   c                 C   s¶   t j d¡ tjd }t j t|d ƒt|d ƒ¡}| |fD ]}| dd¡ q<|  ¡ }|j	|dd | 
ddg¡ | ddg¡ | ¡ }|j	|d	d | 
ddg¡ | ddg¡ d S )
Nrj   r?   r   ri   rk   r   rh   r   r   )r!   rl   rm   r    r   rn   ro   rp   r$   r%   Úset_xlimÚset_ylim)rr   rs   rR   rt   r(   rd   r,   r,   r-   Útest_imshow_zoom~   s    
rx   c                 C   sŽ   t  d¡ ttƒjd }ttƒjd }|  d¡}|d  t |¡¡ |d  t |¡¡ | d¡}|d  t	 
|¡¡ |d  t	 
|¡¡ d S )NÚdefaultú%baseline_images/pngsuite/basn3p04.pngú%baseline_images/test_image/uint16.tifr1   r   r0   )r   Zuser   Ú__file__Úparentr$   r%   r   Úopenr    rc   )rr   rs   Zpng_pathZ	tiff_pathÚaxsr,   r,   r-   Útest_imshow_pil   s    


r€   c                  C   sF   t  tj tj t¡ddd¡¡} | jtj	ks0t
‚t | ¡dksBt
‚d S )NZbaseline_imagesZ
test_imagez
uint16.tifé €ÿ)r    rc   ÚosÚpathÚjoinÚdirnamer|   r5   r!   Úuint16ÚAssertionErrorÚsum©r;   r,   r,   r-   Útest_imread_pil_uint16   s      ÿrŠ   c                  C   s:   t  ttƒjd ¡} | jtjks$t‚t 	| ¡dks6t‚d S )Nr{   r   )
r    rc   r   r|   r}   r5   r!   r†   r‡   rˆ   r‰   r,   r,   r-   Útest_imread_fspath¤   s
    ÿr‹   ÚfmtÚjpgÚjpegÚtiffc                 C   sÄ   | dk}t j d¡ t j dd¡}t ¡ }tj||| dd t ¡ }tj||| dd | d¡ tj	|| d}| d¡ tj	|| d}|j
ddd	| fksžt‚|j
ddd	| fks¶t‚t||ƒ d S )
N)r   rŽ   r0   i@  r1   )ÚformatrR   r   r   ©r   r   )r!   rl   rm   rn   r_   r`   r    Úimsaverb   rc   Úshaper‡   r   )rŒ   Z	has_alphaÚdataZ	buff_dpi1Zbuff_dpi100Zarr_dpi1Z
arr_dpi100r,   r,   r-   Útest_imsave«   s    	

r•   ÚpsZepsc                 C   s&   t jttjƒt ddgg¡| d d S )Nr   r0   r‘   )r    r’   r   r‚   Údevnullr!   rJ   )rŒ   r,   r,   r-   Útest_imsave_fspathÎ   s    r˜   c                  C   s”   t j d¡ dD ]~} t j ddd¡}t ¡ }tj||| dd | d¡ t 	|¡}d|  
d	¡}| d
krv|d d d… }d|  
d	¡}t||ƒ qd S )Nr0   )rT   Úupperé   r2   rN   )rU   r   r   rG   r:   rT   rV   )r!   rl   rm   rn   r_   r`   r    r’   rb   rc   Úastyper   )rU   r”   ÚbuffZarr_bufr,   r,   r-   Útest_imsave_color_alphaÓ   s    

r   c                  C   sh   ddl m}  t ¡ }| ƒ }| dd¡ tj|ddgddggdd	|id
 t |¡}|j	d dksdt
‚d S )Nr   )ÚPngInfoZSoftwareÚtestr0   r1   r   rN   Úpnginfo©r   Ú
pil_kwargs)ZPIL.PngImagePluginrž   r_   r`   Úadd_textr    r’   r   r~   Úinfor‡   )rž   Úbufr    Úimr,   r,   r-   Útest_imsave_pil_kwargs_pngì   s     ÿ
r§   c                     s€   ddl m‰  t ¡ } ddi}tj| ddgddggd|d	 t|ƒdksJt‚t 	| ¡}‡ fd
d„|j
 ¡ D ƒ}|d dks|t‚d S )Nr   )ÚTAGS_V2Údescriptionz
test imager0   r1   r   r   r¡   c                    s   i | ]\}}ˆ | j |“qS r,   )Úname)Ú.0ÚkÚv©ZTAGSr,   r-   Ú
<dictcomp>þ   s      z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)ZPIL.TiffTagsr¨   r_   r`   r    r’   Úlenr‡   r   r~   Ztag_v2Úitems)r¥   r¢   r¦   Útagsr,   r®   r-   Útest_imsave_pil_kwargs_tiff÷   s    
r³   Zimage_alphac                  C   sd   t j d¡ t j dd¡} t dd¡\}\}}}|j| ddd |j| ddd |j| dd	d d S )
Nr   r   r0   r   ç      ð?r7   )Úalphar   ç      à?r   )r!   rl   rm   rn   r    r$   r%   )ÚZr(   r)   r*   r+   r,   r,   r-   Útest_image_alpha  s    r¸   c            
      C   s|  ddl m}  t ¡ \}}|jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ksrt‚d
\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d ks°t‚| ¡  |jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	kst‚t ¡ \}}|jt d¡ dd¡ddddgd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡dks„t‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d ksÄt‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d kst‚tƒ  d¡ d¡}	|jt d¡ dd¡|	|j d}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ksxt‚d S )Nr   ©Ú
MouseEventr   rh   r™   )rU   ©r2   r2   Úmotion_notify_eventé,   )g333333$@r2   rT   r¶   ©Úextent)ç      Ð?rÀ   é7   )ç      è?rÀ   )ç{®Gáz„?g{®Gáz„¿r1   )Ú	transform)r   rh   )Úmatplotlib.backend_basesrº   r    r$   r%   r!   r"   r#   Ú	transDatarÄ   ÚcanvasÚget_cursor_datar‡   Úclearr   ÚscaleÚrotate)
rº   r(   rd   r¦   rY   rZ   ÚxdispÚydispÚeventZtransr,   r,   r-   Útest_cursor_data  sN    
$ÿrÏ   z
data, texti'  i'  z[10001.000]g°rh‘í|¿?g/Ý$•ï?z[0.123]r0   r1   ú[]g     ð?z[1.0000000000000000]rV   z[-1.0000000000000000]c           	      C   sb   ddl m} t ¡ \}}| | ¡}|j ddg¡\}}|d|j||ƒ}| | 	|¡¡|ks^t
‚d S )Nr   r¹   r¼   )rÅ   rº   r    r$   r%   rÆ   rÄ   rÇ   Úformat_cursor_datarÈ   r‡   )	r”   Útextrº   r(   rd   r¦   rÌ   rÍ   rÎ   r,   r,   r-   Útest_format_cursor_dataT  s    	
rÓ   Z
image_clipc                  C   sF   ddgddgg} t  ¡ \}}| | ¡}tjdd|jd}| |¡ d S )Nr0   r1   r   r2   ©r   r   )ZradiusrÄ   )r    r$   r%   r	   ZCirclerÆ   Úset_clip_path)Údr(   rd   r¦   Úpatchr,   r,   r-   Útest_image_clipg  s
    
rØ   Zimage_cliprectc                  C   sN   t  ¡ \} }ddgddgg}|j|dd}tjddd|jjd}| |¡ d S )	Nr0   r1   r   r2   ©r   r   r   r   r¾   ©r0   r0   )ZxyÚwidthÚheightrÄ   )r    r$   r%   r	   Z	RectangleZaxesrÆ   rÕ   )r(   rd   rÖ   r¦   Úrectr,   r,   r-   Útest_image_cliprectq  s       ÿrÞ   r%   )r/   r   c                  C   sH   t  ¡ \} }t d¡ d¡}|j|ddd | dd¡ | dd¡ d S )Nr   ©rh   rh   r   ©r0   r1   r0   r1   ©r   r¿   r   r   )r    r$   r!   r"   r#   r%   rv   rw   ©r(   rd   Úarrr,   r,   r-   Útest_imshow}  s
    rä   c                 C   s†   t  d¡ d¡}| ¡ }|j|d d …d d …df ddd | dd¡ | dd¡ |  ¡ }|j|ddd | dd¡ | dd¡ d S )Nr   )rh   rh   r0   r   r   rà   rá   r   )r!   r"   r#   r$   r%   rv   rw   )rr   rs   rã   rd   r,   r,   r-   Útest_imshow_10_10_1†  s    "rå   c               	   C   s@   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W 5 Q R X d S )NéÈ   )rh   rh   r1   ©	r    r$   r!   r"   r#   ÚpytestÚraisesÚ	TypeErrorr%   râ   r,   r,   r-   Útest_imshow_10_10_2•  s    rë   c               	   C   s@   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W 5 Q R X d S )Niô  )rh   rh   r   rç   râ   r,   r,   r-   Útest_imshow_10_10_5œ  s    rì   Zno_interpolation_originc                  C   sP   t  d¡\} }|d jt d¡ d¡ddd |d jt d¡ d¡dd	 d S )
Nr1   r   r   )r1   rS   rT   r7   )rU   r   r0   r   )r    r$   r%   r!   r"   r#   )r(   r   r,   r,   r-   Útest_no_interpolation_origin£  s
    ÿrí   Zimage_shift)r/   r>   c                  C   sT   dd„ t ddƒD ƒ} d}d}t ¡ \}}|j| t ¡ d||ddfd | d	¡ d S )
Nc                    s$   g | ]‰ ‡ fd d„t ddƒD ƒ‘qS )c                    s   g | ]}d | d ˆ   ‘qS )r0   r,   )r«   rY   ©rZ   r,   r-   Ú
<listcomp>­  s     z/test_image_shift.<locals>.<listcomp>.<listcomp>r0   r   )Úrange)r«   r,   rî   r-   rï   ­  s     z$test_image_shift.<locals>.<listcomp>r0   r   gMòãûk&Ag˜Šäûk&Ar7   )Únormr   r¿   Úauto)rð   r    r$   r%   r   ÚLogNormZ
set_aspect)ZimgDataZtMinZtMaxr(   rd   r,   r,   r-   Útest_image_shift«  s    
ÿrô   c                  C   s  t jddgd} | jddddgdd}t t d¡d¡ dd	¡}|j|d
ddddgddd}d }}| | |g¡ | 	| |g¡ | 
g ¡ | g ¡ t ¡ }| j|dd | d¡ t  |¡}t|d d …df ƒ\}}}	}
t|d d …df ƒ\}}}	}
|dkstdƒ‚d S )Nr0   ©rQ   r   F)Úframeoné   é   r   é	   r™   éöÿÿÿrh   r7   Úgray)rU   r¿   r   Úcmapr1   )r   r0   r   )Ú	facecolorrV   r   z.Expected a non-green edge - but sadly, it was.)r    rW   Úadd_axesr!   Ztiler"   r#   r%   rv   rw   Ú
set_xticksÚ
set_yticksr_   r`   ra   rb   rc   rˆ   r‡   )r(   rd   r”   r¦   rY   rZ   r¥   ÚrÚgÚbÚar,   r,   r-   Útest_image_edges·  s&     ÿ



r  Zimage_composite_backgroundc                  C   sf   t  ¡ \} }t d¡ dd¡}|j|ddddgd |j|ddddgd | d	¡ | ddg¡ d S )
Nr÷   r2   r   r   r1   rø   r¾   r   )r0   r   r   r¶   )r    r$   r!   r"   r#   r%   Úset_facecolorrv   râ   r,   r,   r-   Útest_image_composite_backgroundÓ  s    
r  Zimage_composite_alphac                  C   s¢  t  ¡ \} }t d¡}d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡|dd…dd…df< t d	¡}d|dd…dd…df< d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡dd…tjf |dd…dd…df< |j|dd
ddgdd |j|d
dddgdd |j|ddddgd |j|dddd
gd |j|ddd
dgdd |j|ddddgdd | d¡ | 	ddg¡ | 
ddg¡ dS )z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )é   é   r2   r0   Nr   gš™™™™™ñ?çš™™™™™¹?rV   r   )r	  r  r2   r1   r   ç333333Ó?)r¿   rµ   ç333333ã?r2   r¾   )r   r¶   r   r0   )r    r$   r!   r8   Zconcatenater"   Znewaxisr%   r  rv   rw   )r(   rd   rã   Zarr2r,   r,   r-   Útest_image_composite_alphaÞ  s.    
$ÿ
$ÿÿ
r  c                 C   st   t  d¡ d¡}| |fD ]P}| ¡ }|j|tj dddg¡|jfd |j|tj ddd	g¡|jfd qd
|_	d S )Nrù   ©r   r   rÔ   ©r   r0   )r0   r   )Ú	clip_pathrÚ   ©r0   r1   )r1   r0   T)
r!   r"   r#   Úadd_subplotr%   Úmplrƒ   r   rÆ   rL   )rr   rs   Útr(   rd   r,   r,   r-   Ú#test_clip_path_disables_compositingù  s    ÿÿ
r  Zrasterize_10dpi)r>   r/   r   c                  C   sÔ   t  ddgddgg¡} tjdddd\}}|d  | ¡ |d jddgddgdd	d
 |d jddd |d jddgddgdd |d jddd |D ],}| g ¡ | g ¡ |j	d d …  
d¡ qšdtd< d S )Nr0   r1   r   r2   )r   r0   rõ   r   g      4@T)Ú	linewidthZ
rasterizedr  )rV   r1   ©ÚxlimÚylim)r  Frh   r?   )r!   Úasarrayr    r$   r%   r^   Úsetrÿ   r   ZspinesZset_visibler   )r;   r(   r   rd   r,   r,   r-   Útest_rasterize_dpi  s    	

r  Zbbox_image_invertedc                  C   sÈ   t  d¡ d¡} t ¡ \}}tttddgddggƒ|jƒdd}| 	| ¡ | 
d¡ | dd¡ | dd¡ | |¡ t  d¡} tttdd	gd
dggƒ|jjƒdd}| 	| ¡ | 
d¡ | |¡ d S )Nr   rß   r   r   r   Frh   r
  çš™™™™™É?r  rÀ   )r!   r"   r#   r    r$   r   r   r   rÆ   Úset_dataZset_clip_onrv   rw   Z
add_artistÚidentityrW   ZtransFigure)r   r(   rd   Zbbox_imr,   r,   r-   Útest_bbox_image_inverted$  s(    þ



ÿþ

r   c               	   C   sN  t  ddddgddddgdd	d
dgddddgg¡} tjddd\}}| ddddg¡ | dd¡ | dd¡ |j| ddddgdd}|j 	¡  |jj
}| |¡}t| ¡ ddgddggƒ tjddd\}}| ddddg¡ | dd¡ | dd¡ |j| ddddgd|jd}|j 	¡  |jj
}| |¡}t| ¡ ddgddggƒ d S )NrÀ   rÂ   r´   r
  gÍÌÌÌÌÌä?r¶   çš™™™™™Ù?r  r  ç        r  çffffffæ?gÍÌÌÌÌÌì?rß   r   rP   r   r0   r   )r¿   r   i  ræ   i¼  i„  r1   )r¿   r   rÄ   )r!   rJ   r    r$   rq   rv   rw   r%   rÇ   ÚdrawÚrendererZget_window_extentr   Z
get_pointsZ	transAxes)r¦   r(   rd   Zim_objr%  Zim_bboxr,   r,   r-   Ú$test_get_window_extent_for_AxisImage=  s>    
 
ÿ 
 ÿ

 
 þ

r&  zzoom_and_clip_upper_origin.pngc                  C   sF   t  d¡} |  d¡} t ¡ \}}| | ¡ | dd¡ | dd¡ d S )Nr   rß   ç       @ç      à¿)r!   r"   r#   r    r$   r%   rw   rv   )r   r(   rd   r,   r,   r-   Útest_zoom_and_clip_upper_origin`  s    


r)  c                  C   s   t  ¡ } t| ƒ}| d¡ d S )NZBlues)r    Úgcar   Zset_cmap©rd   r¦   r,   r,   r-   Útest_nonuniformimage_setcmapl  s    r,  c                  C   s"   t  ¡ } t| ƒ}| t  ¡ ¡ d S ©N)r    r*  r   Úset_normÚ	Normalizer+  r,   r,   r-   Útest_nonuniformimage_setnormr  s    r0  c                  C   sn   t jddd} tdƒD ]"}t  ddd¡d | |d d …f< qt dd¡}| |  ¡ ¡ t 	¡ \}}| 
|¡ d S )	Nrß   r:   r4   rh   r"  r´   rG   ÚL)r!   r9   rð   Úlinspacer   ÚnewZputdataÚflattenr    r$   r%   )ZimdÚir¦   r(   rd   r,   r,   r-   Útest_jpeg_2dx  s     r6  c                  C   s¨   t jddd tjdtd} t ddd¡| d< t  | ¡ t ¡ }t j	|d	d
dd | 
d¡ t |¡}t| d¡ƒ}d|  krˆdksŽn t‚| d¡}|dks¤t‚d S )NrÚ   é,  rP   )r7  r7  r2   r4   r"  r´   r6   Úredr   )rý   r   rR   r   é   é¯   éÒ   rÔ   )éþ   r   r   )r    rW   r!   r8   Úfloatr2  rM   r_   r`   ra   rb   r   r~   r°   Z	getcolorsr‡   Zgetpixel)r¦   rœ   r   Z
num_colorsZcorner_pixelr,   r,   r-   Útest_jpeg_alphaƒ  s    



r>  c                  C   sP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dksLt	dƒ‚d S ©Nr÷   r4   ©r2   r   çÍÌÌÌÌÌ#@rÔ   r   úvalue changed)
r    r*  r   r!   r"   r=  r#   r  Ú_Ar‡   )rd   r¦   r[   r,   r,   r-   Útest_axesimage_setdata›  s    
rD  c                  C   sP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dksLt	dƒ‚d S r?  )
r    Zgcfr   r!   r"   r=  r#   r  rC  r‡   )r(   r¦   r[   r,   r,   r-   Útest_figureimage_setdata¤  s    
rE  zimage_cls,x,y,aç      @ç      @g      (@r@  g      @)r   r1   c                 C   sŽ   t  ¡ }| |ƒ}| |||¡ d |d<  |d< |d< |jd |jd   krf|jd   krfdkspn tdƒ‚| ||| |jd˜¡¡ d S )NrA  r   rÔ   rB  rV   )rV   )	r    r*  r  rC  Z_AxZ_Ayr‡   r#   r“   )Z	image_clsrY   rZ   r  rd   r¦   r,   r,   r-   Útest_setdata_xya­  s    :rH  c            
      C   sâ   ddl m}  tj d¡ tj dd¡}t dd¡\}}|d  |¡}|d  |¡}tj	||d d tj	||d d t
 ¡ }tj|dd t
 | ¡ ¡}|  |¡}d }| d	¡D ]*}	|d krÈ|	d
 }q²|	d
 |kr²ds²t‚q²d S )Nr   )ÚElementTreerh   r0   r1   )rd   r=   r‘   r   rÛ   F)Z	xml.etreerI  r!   rl   rm   rn   r    r$   Z
pcolormeshÚcolorbarr_   r`   ra   ÚgetvalueÚparseÚiterr‡   )
rI  r”   r(   rd   Úp1Úp2rœ   ÚtreerÛ   r   r,   r,   r-   Útest_minimized_rasterized½  s$    

rQ  c               	   C   sz   t tƒjd } dtjdkrdnd |  ¡  ¡  }tjt	dd t
 |¡ W 5 Q R X tj |¡}t
 |¡ W 5 Q R X d S )Nrz   zfile:Úwin32z///Ú zPlease open the URL©Úmatch)r   r|   r}   ÚsysÚplatformÚresolveÚas_posixrè   ré   Ú
ValueErrorr    rc   ÚurllibÚrequestÚurlopen)rƒ   ÚurlÚfiler,   r,   r-   Útest_load_from_urlÞ  s    ÿ
þr`  Zlog_scale_imagec                  C   sR   t  d¡} d| d d d…< t ¡ \}}|j| ddddgddddd |jd	d
 d S )Nrß   r0   r1   r   ÚviridisrV   rò   )r¿   rü   ÚvmaxÚvminÚaspectÚlog)Zyscale)r!   r8   r    r$   r%   r  )r·   r(   rd   r,   r,   r-   Útest_log_scale_imageé  s    
ÿrf  Zrotate_imagegffffffÖ?)r/   Útolc               	   C   s0  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }|| }t dd¡\}}	|	j|dd	d
ddddgdd}
tƒ  	d¡|	j
 }|
 |¡ |
 ¡ \}}}}|	j|||||g|||||gdd|d |	 dd¡ |	 dd¡ d S )NrÀ   ç      ÀrF  r1   r0   ç      ø?r¶   r7   ra  rT   éþÿÿÿr2   éýÿÿÿT)r   rü   rU   r¿   Úclip_oné   zr--r   )ZlwrÄ   r   r   )r!   r"   ÚmeshgridÚexpÚpir    r$   r%   r   Z
rotate_degrÆ   Zset_transformZ
get_extentr^   rv   rw   )ÚdeltarY   rZ   r'   ÚYÚZ1ÚZ2r·   r(   r)   Zim1Ztrans_data2Úx1Zx2Úy1Úy2r,   r,   r-   Útest_rotate_imageø  s,    &*ÿ

 þ
 ÿrx  c                  C   sR   t  ¡ } t d¡}tj| |dd |  d¡ t | ¡}|jd d… |jksNt	‚d S )N)iá  iA  rN   r‘   r   r1   )
r_   r`   r!   r8   r    r’   rb   rc   r“   r‡   )rœ   r¦   r;   r,   r,   r-   Útest_image_preserve_size  s    


ry  c                  C   sÌ   d} t  | t¡}tj| | fdd}t |ddddg¡}| ¡  | |¡ |j|dddd	 t	 
¡ }|j|d
d | d¡ t |¡}|jdks’t‚tt  |d d …d d …df t¡t  | t¡d d d… ƒ d S )Né   F)rQ   rö   r"  r´   r   rT   rò   )r   rU   rd  r0   )rR   r   )rz  rz  r2   rV   )r!   r  r=  r    rW   ZAxesÚset_axis_offrþ   r%   r_   r`   ra   rb   rc   r“   r‡   r   r  Úbool)Únr”   r(   rd   rœ   r;   r,   r,   r-   Útest_image_preserve_size2   s    


ÿr~  zmask_image_over_under.pngr´   c                  C   s~  dt jd< d} t dd| ¡ }}t ||¡\}}t |d |d   d ¡dtj  }t |d d d |d d	 d   d ¡dtj d	 d  }d
||  }t jjj	dddd}tj
 |dk|¡}	t  dd¡\}
\}}|j|	d|tjdddddddddgd}| d¡ |
j|dd|d
d |j|	d|tjdddd d!d	dgd"dd#dddddgd}| d$¡ |
j|dd%d|d
d& d S )'NFzpcolormesh.snapgš™™™™™™?rh  rF  r1   r0   ri  r¶   rh   r  r  r  ©ZoverÚunderÚbadç333333ó?r   g      ð¿r´   )rc  rb  ÚcliprT   rk  r   )r   rü   rñ   rU   r¿   zGreen=low, Red=high, Blue=badÚbothÚ
horizontal)ÚextendÚorientationrd   rd  r   rV   r(  gš™™™™™É¿r   r  r9  )Zncolorsrƒ  zWith BoundaryNormZproportional)r†  Úspacingr‡  rd   rd  )r    r   r!   r"   rn  ro  rp  Úcmrû   Úwith_extremesÚmaZmasked_wherer$   r%   r   r/  r&   rJ  ZBoundaryNorm)rq  rY   rZ   r'   rr  rs  rt  r·   ÚpaletteZZmr(   r)   r*   r¦   r,   r,   r-   Útest_mask_image_over_under6  sL    
&*ÿ 
ý

 ÿ ÿ 
ü

  ÿr  Z
mask_imagec                  C   s   t  dd¡\} \}}t d¡}tj|dd…dd…f< |j|dd tjdtd}d|dd…dd…f< tj 	tjdtj
d|¡}|j|dd d S )Nr0   r1   r3   r   r   r4   T)r    r$   r!   r9   Únanr%   r8   r|  r‹  Úmasked_arrayr†   )r(   r)   r*   rt   r,   r,   r-   Útest_mask_imageX  s    
r  c                  C   s2   t  dt j¡} t ¡ \}}| | ¡ |j ¡  d S )NrO   )r!   ÚfullrŽ  r    r$   r%   rÇ   Z	draw_idle)r”   r(   rd   r,   r,   r-   Útest_mask_image_allj  s    
r’  zimshow_endianess.pngc                  C   s|   t  d¡} t  | | ¡\}}t  |d |d ¡}t dd¡\}\}}tdddd}|j| d	¡f|Ž |j| d
¡f|Ž d S )Nrh   r   r0   r1   rT   r   ra  )rU   r   rü   z<f8z>f8)	r!   r"   rn  Úhypotr    r$   Údictr%   r›   )rY   r'   rr  r·   r(   r)   r*   Úkwargsr,   r,   r-   Útest_imshow_endianessr  s    
r–  Zimshow_masked_interpolationÚx86_64rÃ   )rg  r/   r   c            
      C   sð   t jd jdddd} d}tjd|| d d	}tj|| td
 ||¡}d|d< d|d< tj	|d< t 
|¡ d¡}d|d< tj ||¡}t dd¡\}}ttjƒ}| d¡ t|| ¡ ƒD ].\}}	|	 |¡ |	j||| |d |	 d¡ q¼d S )Nra  r  r  r¬   r  r   r   r0   ©rc  rb  r4   rV   r3   g     jø@)rø   r   )rø   rø   r|  T)r   rø   r   r   rk   )rñ   rü   r   Úoff)r  Ú	colormapsrŠ  r   r/  r!   r"   r=  r#   ÚinfZ
zeros_liker›   r‹  r  r    r$   ÚsortedÚmimageZ	_interpd_ÚremoveÚzipÚravelr&   r%   Úaxis)
rü   ÚNr}  r”   Úmaskr(   Zax_gridZinterpsZinterprd   r,   r,   r-   Ú test_imshow_masked_interpolation€  s"    



r¤  c                   C   s   t  ddgdtjgg¡ d S )Nr0   r1   r   )r    r%   r!   rŽ  r,   r,   r,   r-   Útest_imshow_no_warn_invalid¤  s    r¥  r5   c                 C   s   g | ]}t  |¡‘qS r,   )r!   r5   )r«   Úsr,   r,   r-   rï   ©  s     rï   zu2 u4 i2 i4 i8 f4 f8c                 C   sÎ   t jd| d d¡}| jdkr&|d8 }|dk }|dk}| jdkrH|d }t ¡ \}}| |¡ ¡ }|| dk ¡ svt	‚| jdkr¦|| d	k ¡ s”t	‚|j
jdksÊt	‚n$|| dk ¡ sºt	‚|j
t jksÊt	‚d S )
Nr7  r4   )rh   rh   r   Úurh   r   rG   Úfr0   )r!   r"   r#   Úkindr    r$   r%   Z	get_arrayÚallr‡   r5   r:   )r5   rã   Ztoo_lowZtoo_highÚ_rd   Úoutr,   r,   r-   Ú$test_imshow_clips_rgb_to_valid_range¨  s    


r­  zimshow_flatfield.pngc                  C   s0   t  ¡ \} }|jt d¡dd}| dd¡ d S )Nr3   r   r   r¶   ri  )r    r$   r%   r!   r9   Úset_clim©r(   rd   r¦   r,   r,   r-   Útest_imshow_flatfield½  s    r°  zimshow_bignumbers.pngc                  C   sN   dt d< t ¡ \} }tjdddgdddggtjd}| |¡}| d	d
¡ d S )Nr   úimage.interpolationr0   r1   g   ¢”mBr   r2   r4   r   r   )r   r    r$   r!   rJ   Zuint64r%   r®  ©r(   rd   r;   Zpcr,   r,   r-   Útest_imshow_bignumbersÄ  s
     
r³  zimshow_bignumbers_real.pngc                  C   sH   dt d< t ¡ \} }t dddgdddgg¡}| |¡}| dd	¡ d S )
Nr   r±  r'  r´   g’ÕMÏð€DrG  rF  r   r   )r   r    r$   r!   rJ   r%   r®  r²  r,   r,   r-   Útest_imshow_bignumbers_realÏ  s
    
r´  Ú	make_normc                   C   s
   t  d¡S ©Nr0   )r   Ú
SymLogNormr,   r,   r,   r-   Ú<lambda>ß  ó    r¸  c                   C   s
   t  d¡S r¶  )r   Z	PowerNormr,   r,   r,   r-   r¸  à  r¹  c              	   C   s~   t  ¡ \}}tjtdd |jg g| ƒ d}W 5 Q R X | ddddg¡ |j ¡  t 	t
¡ | |j ¡ ¡ W 5 Q R X d S )Nz.Attempting to set identical low and high xlimsrT  ©rñ   éûÿÿÿr   )r    r$   rè   ÚwarnsÚUserWarningr%   Z
set_extentrÇ   r$  ré   ÚRuntimeErrorÚ
make_imageZget_renderer)rµ  r(   rd   r¦   r,   r,   r-   Útest_empty_imshowÛ  s    ÿ
rÀ  c                  C   s0   t  ¡ \} }| tjdtjd¡ | j ¡  d S )Nr  r4   )r    r$   r%   r!   r8   Zfloat16rÇ   r$  ©r(   rd   r,   r,   r-   Útest_imshow_float16í  s    rÂ  c               	   C   s^   t  ¡ \} }| tjdtjd¡ t tjtjd¡r:tƒ nt	 
t¡ | j ¡  W 5 Q R X d S )Nr  r4   Úequiv)r    r$   r%   r!   r8   Z
longdoubleZcan_castÚfloat64r   rè   r¼  r½  rÇ   r$  rÁ  r,   r,   r-   Útest_imshow_float128ô  s    ÿrÅ  c                  C   s0   t  ¡ \} }| tjddgddggtd¡ d S )NTFr4   )r    r$   r%   r!   rJ   r|  rÁ  r,   r,   r-   Útest_imshow_boolý  s    rÆ  c                  C   s.   t  ¡ \} }| t dtj¡¡ | j ¡  d S )Nrß   )r    r$   r%   r!   r‘  rŽ  rÇ   r$  rÁ  r,   r,   r-   Útest_full_invalid  s    rÇ  zfmt,counted)r–   s    colorimage)r=   s   <imagezcomposite_image,count)Tr0   )Fr1   c           
      C   sº   t  t  ddd¡t  ddd¡¡\}}t  |d ¡}t ¡ \}}| dd¡ |j|ddddgd |j|d d d… ddddgd |tjd	< t	 
¡ }	|j|	| d
 |	 ¡  |¡|ks¶t‚d S )Nr»  r   r0   r1   r   r   r¾   rV   zimage.composite_imager‘   )r!   rn  r"   rX   r    r$   rv   r%   r   r_   r`   ra   rK  Úcountr‡   )
rŒ   ZcountedZcomposite_imagerÈ  r'   rr  r·   r(   rd   r¥   r,   r,   r-   Útest_composite	  s    $ 
rÉ  c                  C   sT   t  ¡ \} }|jdggdd | ¡  | ¡  | ¡ | ¡   krJdksPn t‚d S )Nr   ©r   r0   r   r0   r¾   r  )r    r$   r%   ZrelimZ	autoscaleZget_xlimZget_ylimr‡   rÁ  r,   r,   r-   Ú
test_relim  s
    rË  c                  C   sx   t  ¡ \} }| ¡  |jddgddggddddd}|jddd | j ¡  t | j 	¡ ¡d	d d
…f dk 
¡ stt‚d S )Nr   rò   )rú   rh   rú   rh   rû   F)rd  r¿   rü   rl  r  r  .r   )r    r$   r{  r%   r  rÇ   r$  r!   rJ   Zbuffer_rgbarª  r‡   r¯  r,   r,   r-   Útest_unclipped$  s     ÿ
rÌ  c                  C   sÂ   t  d¡\} }|D ]}| ¡  q|d jddgddggddd}| d ¡ | |d j¡ t ¡ }| j	|dd	 | 
¡ ™d
hks„t‚|d jdd t ¡ }| j	|dd	 | 
¡ | 
¡ ks¾t‚d S )Nr1   r0   r   r   rò   rÊ  )rd  r¿   Úrgbar‘   rG   )rV   r   )r  )r    r$   r{  r%   rÕ   Zset_clip_boxZbboxr_   r`   ra   rK  r‡   r  )r(   r   rd   r¦   Z
buf_beforeZ	buf_afterr,   r,   r-   Útest_respects_bbox0  s    
 
rÎ  c                  C   s„   t  ¡ \} }| t d¡¡}tjjdgdgd}| |¡dksBt‚tjjdgdgd}| |¡dksht‚tj	}| |¡dks€t‚d S )	Nr»   r   T©r£  rÐ   Fz[0]z[nan])
r    r$   r%   r!   r8   r‹  r  rÑ   r‡   rŽ  )r(   rd   r¦   r”   r,   r,   r-   Útest_image_cursor_formattingB  s    rÐ  c           
      C   sœ   t  dd¡}t  ||¡\}}t  d|d d  |d  ¡}|| ¡  }tjd }|  ¡ }|j|||dd	 | ¡ }|t	 
¡ |ƒƒ}	||	d
< |j|	dd dS )zPer-pixel alpha channel test.r   r0   rk  r¶   r1   g[Âõ(\ß?ra  r   )rµ   rü   r   ).rV   r   N)r!   r2  rn  ro  Úmaxr  rš  r  r%   r   r/  )
rr   rs   rY   ZxxÚyyÚzzrµ   rü   rd   rÍ  r,   r,   r-   Útest_image_array_alphaQ  s    
rÔ  c                	   C   s6   t jtdd tjt d¡ddgd W 5 Q R X d S )Nzalpha must be a float, two-drT  rO   r0   )rµ   )rè   ré   rê   r    r%   r!   r8   r,   r,   r,   r-   Ú!test_image_array_alpha_validationd  s    rÕ  c                  C   sð   t tjd ƒ} | jdd tjddd}| ddddg¡}tjd	d	d	ddddd
ddddd	d	d	ddddggt	d}|j
|d| ddd}| d¡ |j ¡  | |jj¡d d }| | |dggd  j ¡ ¡¡d  t¡}t ||k¡sìt‚d S )NZautumn_rZ	lightgrey)Úcolor)gffffffþ?r
  r   rP   r   r0   rV   é+   éO   é_   éB   é"   r4   rò   )rd  rü   rc  rb  r™  rh   rG   )r   r  rš  Ú	set_underr    rW   rþ   r!   rJ   r=  r%   r¡  rÇ   r$  r¿  r%  rü   rñ   ÚTr   r›   ro   rª  r‡   )rü   r(   rd   r”   r¦   Z
from_imageZdirect_computationr,   r,   r-   Útest_exact_vmini  s"    *þ

$ÿþrÞ  c                       s@   e Zd Zdd„ Zdd„ Z‡ fdd„Zdd„ Zed	d
„ ƒZ‡  Z	S )Ú
QuantityNDc                 C   s   t  |¡ | ¡}||_|S r-  )r!   r  ÚviewÚunits)ÚclsZinput_arrayrá  Úobjr,   r,   r-   Ú__new__‹  s    zQuantityND.__new__c                 C   s   t |dd ƒ| _d S ©Nrá  )Úgetattrrá  )Úselfrã  r,   r,   r-   Ú__array_finalize__  s    zQuantityND.__array_finalize__c                    s<   t | dd ƒ}tt| ƒ |¡}t|tƒs.|d k	r8t||ƒ}|S rå  )ræ  Úsuperrß  Ú__getitem__Ú
isinstance)rç  Úitemrá  Úret©Ú	__class__r,   r-   rê  “  s
    
zQuantityND.__getitem__c                 O   sl  t ||ƒ}d|krtS t|ƒdkrJ|d }t |ddƒ}|t |¡f|Ž}nþt|ƒdkrD|d }|d }	t |ddƒ}
t |	ddƒ}|
d krŒ|n|
}
|d krœ|
n|}|tjtjfkrÂ|
|kr¼t‚|
}nb|tjkrÜ|
› d|› }nH|tj	krø|
› d|› d	}n,|tj
tjtjtjtjtjfkr d }ntS || tj¡|	 tj¡f|Ž}ntS |d kr^t |¡}n
t||ƒ}|S )
Nr¬  r0   r   rá  Zdimensionlessr1   Ú*z/(ú))ræ  ÚNotImplementedr°   r!   r  ÚaddÚsubtractrZ  ÚmultiplyÚdivideZgreaterZgreater_equalÚequalÚ	not_equalÚlessZ
less_equalrà  ÚndarrayrJ   rß  )rç  ZufuncÚmethodÚinputsr•  ÚfuncZi0ÚunitZout_arrÚi1Zu0Úu1r,   r,   r-   Ú__array_ufunc__š  sH    



  þ 

zQuantityND.__array_ufunc__c                 C   s   |   tj¡S r-  )rà  r!   rú  )rç  r,   r,   r-   r­   Á  s    zQuantityND.v)
Ú__name__Ú
__module__Ú__qualname__rä  rè  rê  r  Úpropertyr­   Ú__classcell__r,   r,   rî  r-   rß  Š  s   'rß  c               	   C   s¶   t ddgdƒ} | d d … \}}t | jt ddg¡k¡s<t‚| jdksJt‚t || jt dg¡k¡sjt‚|| jdks|t‚|| jdksŽt‚t t	¡ |t ddƒ  W 5 Q R X d S )Nr0   r1   Úmr   zm*mzm/(m)r¦  )
rß  r!   rª  r­   r  r‡   rá  rè   ré   rZ  )ÚqÚq0Úq1r,   r,   r-   Útest_quantityndÆ  s     r  c                  C   s4   t t d¡dƒ} t ¡ \}}| | ¡ |j ¡  d S )NrO   r  )rß  r!   r9   r    r$   r%   rÇ   r$  )rã   r(   rd   r,   r,   r-   Útest_imshow_quantityndÒ  s    
r  c                 C   s.  t jddt jd}d|dd…d d …f< t jj|dd}d	|jdd…dd…f< tjd
 jdd}|  	¡ }|j
|tjddddd|d}| tjddd¡ |j
|tjddddd|d}| tjddd¡ |jddd | 	¡ }|j
|tjddddd|d |j
|tjddddd|d |jddd d S )Nr3   r0   r4   rV   r   r1   FrÏ  Tra  Úw©r€  r¶   r˜  rÙ   r   )rñ   r¿   r   rü   rj  )r   rh   r   rh   ©r   rh   r  )r!   r‘  rÄ  r‹  rJ   r£  r  rš  rŠ  r$   r%   r   ró   r.  r/  r  )rr   rs   r”   Zmasked_datarü   rd   r¦   r,   r,   r-   Útest_norm_changeÛ  s>      ÿ  ÿ  ÿ  ÿr  rY   c                 C   s²   t jd|t jd}d|dd…d d …f< |  ¡ }|j|tjd| ¡ ddd	d
 t jd|t jd}d|dd…d d …f< | ¡ }tj	d	 j
dd}|j|tjd| ¡ dd|d
 d S )Nr3   r4   g@Œµx¯Dr   r1   r0   r˜  r   ra  )rñ   r   rü   iè  r  r  )r!   r‘  rÄ  r$   r%   r   ró   rÑ  r  rš  rŠ  r/  )rr   rs   rY   r”   rd   rü   r,   r,   r-   Útest_huge_range_log÷  s     ÿ ÿr  c           	   
   C   sL  |   dd¡}|  dd¡}ddgddggddgddggddgddggf}dddg}tt||ƒƒD ]è\}\}}||  |¡ ||  |¡ ||  |¡ || j|ddd	d
ddd ||  dd¡ ||  dd¡ || j 	¡  || j
 d¡ || j d¡ || j tjdddddgdd¡ || j tjdddddgdd¡ q^d S )Nr0   r   r   r9   r8   Úmixedr   r÷  r™   ZGreys)r   rd  rU   rü   rc  rb  r(  ri  gÍÌÌÌÌÌð?r„  rù   r1   r   rh   T)ZnbinsZstepsÚinteger)r$   Ú	enumeraterŸ  r&   Zspyr%   rv   rw   ZxaxisZtick_topÚtitleZset_yZset_ticks_positionZset_major_locatorÚmtickerZMaxNLocatorZyaxis)	rr   rs   Úax_testÚax_refZ	plot_dataZplot_titlesr5  r[   r  r,   r,   r-   Útest_spy_box  s:    ý
   þ
ÿ
ÿr  znonuniform_and_pcolor.pngc                  C   sÈ   t jddjdddd} t| ddgƒD ]L\}}t||d}| t d¡d	 t d¡d	 t d
¡ d¡¡ | 	|¡ q&| d	  
t d¡d	 t d¡d	 t d
¡ d¡¡ | D ]}| ¡  |jdd qªd S )Nr  rõ   r   T)ÚsharexÚshareyr   r   r   r1   rù   r2   r  )r  )r    rW   r$   rŸ  r   r  r!   r"   r#   Z	add_imageZ
pcolorfastr{  r  )r   rd   r   r¦   r,   r,   r-   Útest_nonuniform_and_pcolor,  s    ÿ  ÿr  zrgba_antialias.png)Úaarch64Úppc64leÚs390xgyé&1¬|?)r   r/   rg  c                  C   s¢  t jddddddd\} }d}t ||f¡}d|d d d…d d …f< t |¡| d }t |¡| d }t ||¡\}}t |d |d  ¡}d	}	d
}
t tjd |	| |
|d  d   ¡}d|d t	|d ƒ…d d …f |d t	|d ƒ…d d …f dk < d|d t	|d ƒ…d d …f |d t	|d ƒ…d d …f dk < |d d …t	|d ƒd …f |d d …t	|d ƒd …f< tj
|dd…dd…f< d|dd…dd…f< d|dd…dd…f< d|dd…dd…f< d|dd…dd…f< tt jjƒ}| d¡ | d¡ | ¡ }|d j|d|ddd |d  |d d |d d g¡ |d  |d d |d d	 g¡ |d j|d|ddd |d j|dd |ddd! |d" j|dd#|ddd! d S )$Nr1   )ç      @r   FT)rQ   r  r  Zconstrained_layoutéú   rV   r¶   rh   éK   r!  r0   r  r   rS   g    €„.AéF   éZ   g    €„.Árm  éÃ   é×   ÚyellowÚcyanr   r   g333333ó¿r‚  )r   rü   rc  rb  é   rk   r”   )r   Zinterpolation_stagerü   rc  rb  r   rÍ  )r    r$   r!   r9   r"   rn  ÚsqrtrX   rp  ro   ÚNaNr   r‰  ZRdBu_rZset_overrÜ  r4  r%   rv   rw   )r(   r   r¢  ZaarY   rZ   r'   rr  ÚRZf0r¬   r  rü   r,   r,   r-   Útest_rgba_antialias<  sP     ÿ
(<<4

""  ÿ  ÿr-  z<ignore:Data with more than .* cannot be accurately displayedrU   r™   rT   zdim, size, msgÚrowi  € z2\*\*23 columnsÚcoli   z2\*\*24 rows)rN   c           
   	   C   sÒ   |   ¡ }|  ¡ }t d|d f¡}d|d d …|jd d …f< |dkrJ|j}|j|ddddd|d}	tjtd	|› d
d | j	 
¡  W 5 Q R X t d¡}d|d d …df< |dkr¶|j}|j|ddddd|d}	d S )Nr0   r1   r/  r   rò   rÊ  r7   )rc  rb  rd  r¿   r   rU   zData with more than z  cannot be accurately displayed.rT  r  )r$   r!   r8   ÚsizerÝ  r%   rè   r¼  r½  rÇ   r$  )
rr   rs   Údimr0  ÚmsgrU   r  r  rJ   r¦   r,   r,   r-   Útest_large_imagev  s2    
 ý
ÿ
ýr3  c              	   C   sZ  t j dd¡d d }|  dd¡}|d j|dd |d j|dd	d
 |d j|dd |d j|dddd |d j|dddd | dd¡}|d j|t ¡ d |d j|tjd	dd |d j|tjddd |d j|tjddddd |d j|ddd t|d j	d j
ƒtjks.t‚t t¡ |d j|dd W 5 Q R X d S )Nrh   gš™™™™™é?r
  r0   r   r   re  rº  r  )rñ   rc  r1   Zsymlogr   r  r#  )rñ   rc  rb  r2   Zlogit)rc  )Ú	linthresh)r4  rc  rb  )r  r#  )rñ   ZclimZfoobar)r!   rl   rn   r$   r%   r   ró   r·  ÚtypeZimagesrñ   r‡   rè   ré   rZ  )rr   rs   r  ZaxtsZaxrsr,   r,   r-   Útest_str_normsœ  s      r6  )ˆÚ
contextlibr   r   r_   r‚   Úpathlibr   rW  rV  Úurllib.requestr[  Únumpyr!   Znumpy.testingr   ZPILr   Z
matplotlibr  r   r   r  r	   r
   r    r   r   Zmatplotlib.imager   r   r   r   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.transformsr   r   r   Zmatplotlib.tickerZtickerr  rè   r.   r<   rK   ÚmarkZparametrizer]   rf   ru   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,  r0  r6  r>  rD  rE  r"   r#   rH  rQ  r`  rf  rx  ry  r~  r  r  r’  r–  Úmachiner¤  r¥  Úsplitr­  r°  r³  r´  r/  ró   rÀ  rÂ  rÅ  rÆ  rÇ  rÉ  rË  rÌ  rÎ  rÐ  rÔ  rÕ  ÚcontextrÞ  rú  rß  r  r  r  r  r  r  r-  Úfilterwarningsr3  r6  r,   r,   r,   r-   Ú<module>   s¸   

 ÿ
	üþ




"


Gûÿ

	





 ÿ
	


  ÿ

# ÿ

		  ÿ  ÿýÿ
	!


!

 þ
! ÿ



 ÿ

ýþ
	ÿ


 <	



   þ7 ÿÿ

