U
    9%e                     @   s   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	Z	d dl	m
Z d dlmZ ddlmZ dZdddd	d
ddZG dd dZdd ZdS )    N)assert_assert_equalassert_array_equalassert_array_almost_equalassert_allclosesuppress_warnings)raises   )types-q=reflectZ	symmetricwrapedgeconstant)mirrorr   grid-mirror	grid-wrapnearestgrid-constantc                   @   sF  e Zd Zejdddddddddgfddddddddgfddddddddgfd	dddddddgfd
dddddddgfddddddddgfddddddddgfgdd Zejddddddgfdddddgfdddddgfd	ddddgfd
ddddgfdddddgfdddddgfgdd Zejdd	d
ddddgejdeddd Z	ejdeddejde
dd Zejdeddejde
dd Zejdeddejde
d d! Zejdeddejde
d"d# Zejdeddejde
d$d% Zejded&dd'd( Zejded&dd)d* Zejded&dd+d, Zejded&dd-d. Zejded&dejdejejgd/d0 Zejded&dd1d2 Zejded&dd3d4 Zejded&dd5d6 Zejded&dd7d8 Zejded&dd9d: Zejded&dd;d< Zejded&dd=d> Zejded&dd?d@ Zejded&ddAdB Z ejded&ddCdD Z!ejded&ddEdF Z"ejded&ddGdH Z#ejded&ddIdJ Z$ejded&ddKdL Z%ejded&ddMdN Z&ejded&ddOdP Z'dQdR Z(ejddddd	d
gejdeddSdT Z)dUdV Z*dWdX Z+ejded&dejdejejgdYdZ Z,ejded&dd[d\ Z-d]d^ Z.d_d` Z/dadb Z0ejj1dce2j3kpZe4d&j5ddk dedfdgdh Z6ejded&ddidj Z7ejded&ddkdl Z8ejded&ddmdn Z9ejded&ddodp Z:ejded&dejdejejgdqdr Z;ejded&ddsdt Z<ejded&ddudv Z=ejded&ddwdx Z>ejded&ddydz Z?ejded&dd{d| Z@ejded&dd}d~ ZAejded&ddd ZBejded&ddd ZCejded&ddd ZDejded&ddd ZEejded&ddd ZFejded&ddd ZGejded&ddd ZHejded&ddd ZIejded&ddd ZJejded&ddd ZKejded&ddd ZLejded&ddd ZMejded&ddd ZNejded&ddd ZOejded&ddd ZPdd ZQdd ZRdd ZSdd ZTdd ZUejddddddgejded&ddd ZVejded&ddd ZWejded&ddd ZXejded&ddd ZYejded&ddd ZZejded&ddd Z[ejded&dejdejejgdd Z\ejded&dejdddgejdejejgdd Z]ejded&ddd Z^ejded&ddd Z_ejded&ddd Z`ejded&dddĄ Zaejddddddgejded&dddƄ Zbejddddddgejded&dddȄ Zcddʄ Zdejded&ddd̄ Zeejded&dejdddgddф Zfejddddd	d
gejdedddӄ Zgejded&dddՄ Zhddׄ Ziddل Zjejded&dejdejejgddۄ Zkdd݄ Zldd߄ Zmdd Znejdddddgejddddd
d	dddgdd Zoejdddgejdddddgejddd
d	ddgdd Zpejdddgdd Zqejded&ddd Zrejded&ddd Zsejded&dejdejejgdd Ztejded&ddd Zuejded&ddd Zvejded&ddd Zwejded&ddd Zxejded&ddd Zyd d Zzdd Z{dd Z|dS (  TestNdimageInterpolationzmode, expected_valuer         ?g      @g      @   r   r   r   r   r   r   c              
   C   s:   dd }t ddddg}t|tj||d|ddd	 d S )
Nc                 S   s   | d d fS )Nr         ? xr   r   e/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/scipy/ndimage/tests/test_interpolation.pyshift&   s    z7TestNdimageInterpolation.test_boundaries.<locals>.shiftr	               @r   )   )cvalmodeoutput_shapeordernumpyarrayr   ndimagegeometric_transformselfr$   Zexpected_valuer   datar   r   r   test_boundaries   s     z(TestNdimageInterpolation.test_boundariesr	   r   r    c              	   C   s8   dd }t ddddg}t|tj||d|dd	 d S )
Nc                 S   s   | d d fS )Nr   g?r   r   r   r   r   r   :   s    z8TestNdimageInterpolation.test_boundaries2.<locals>.shiftr	   r   r    r   r   r   )r#   r$   r%   r'   r,   r   r   r   test_boundaries2/   s    z)TestNdimageInterpolation.test_boundaries2r$   r   r&      c                 C   s   t jddtd}t jdddd}tj||g||d}d	}t|}t j|||d
}tj||| g||d}	|dkrvdnd}
t	||	d|
d dS )z$Tests based on examples from gh-2640ir"   dtypei   i  )numr&   r$       r$   r   gh㈵>r   Hz>)rtolatolN)
r(   arangefloatZlinspacer*   map_coordinatesndimage_to_numpy_modegetpadr   )r-   r$   r&   r.   r   ynpadpad_modepaddedexpectedr<   r   r   r   test_boundary_spline_accuracyC   s    
z6TestNdimageInterpolation.test_boundary_spline_accuracyr4   c                 C   s(   t g |}tj||d}t|d d S )Nr&   r	   r(   onesr*   spline_filterr   r-   r4   r&   r.   outr   r   r   test_spline01W   s    z&TestNdimageInterpolation.test_spline01c                 C   s,   t dg|}tj||d}t|dg d S Nr	   rI   )r(   r)   r*   rL   r   rM   r   r   r   test_spline02^   s    z&TestNdimageInterpolation.test_spline02c                 C   s*   t g |}tj|||d}t|d d S )Noutputr	   rJ   rM   r   r   r   test_spline03e   s    z&TestNdimageInterpolation.test_spline03c                 C   s0   t dg|}t||}t|ddddg d S )Nr   r	   rJ   rM   r   r   r   test_spline04l   s    z&TestNdimageInterpolation.test_spline04c              	   C   sT   t ddg|}tj||d}t|ddddgddddgddddgddddgg d S )Nr   rI   r	   rJ   rM   r   r   r   test_spline05s   s    


z&TestNdimageInterpolation.test_spline05r   c                 C   s8   t dg}dd }tj|||j|d}t|dg d S )Nr	   c                 S   s   | S Nr   r   r   r   r   mapping   s    zDTestNdimageInterpolation.test_geometric_transform01.<locals>.mappingrI   r(   r)   r*   r+   shaper   r-   r&   r.   rX   rN   r   r   r   test_geometric_transform01}   s    z3TestNdimageInterpolation.test_geometric_transform01c                 C   s>   t dg}dd }tj|||j|d}t|ddddg d S )Nr   c                 S   s   | S rW   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform02.<locals>.mappingrI   r	   r(   rK   r*   r+   rZ   r   r[   r   r   r   test_geometric_transform02   s    z3TestNdimageInterpolation.test_geometric_transform02c                 C   s>   t dg}dd }tj|||j|d}t|ddddg d S )Nr   c                 S   s   | d d fS Nr   r	   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform03.<locals>.mappingrI   r   r	   r]   r[   r   r   r   test_geometric_transform03   s    z3TestNdimageInterpolation.test_geometric_transform03c                 C   sD   t ddddg}dd }tj|||j|d}t|ddddg d S )	Nr   r	   r    r   c                 S   s   | d d fS r_   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform04.<locals>.mappingrI   r   rY   r[   r   r   r   test_geometric_transform04   s    z3TestNdimageInterpolation.test_geometric_transform04c                 C   s   t jddddgddddgddddgg|d}t jddddgddddgddddgg|d}|jjdkr||d| 8 }|d| 8 }dd }tj|||j|d}t|| d S )	Nr	   r3   r   c              ?c                 S   s   | d | d d fS r_   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform05.<locals>.mappingrI   )r(   r)   r4   kindr*   r+   rZ   r   )r-   r&   r4   r.   rG   rX   rN   r   r   r   test_geometric_transform05   s(    



z3TestNdimageInterpolation.test_geometric_transform05c                 C   sp   t ddddgddddgddddgg}d	d
 }tj|||j|d}t|ddddgddddgddddgg d S )Nr   r	   r    r   r"   r2         c                 S   s   | d | d d fS r_   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform06.<locals>.mappingrI   r   rY   r[   r   r   r   test_geometric_transform06   s    



z3TestNdimageInterpolation.test_geometric_transform06c                 C   sp   t ddddgddddgddddgg}d	d
 }tj|||j|d}t|ddddgddddgddddgg d S )Nr   r	   r    r   r"   r2   rf   rg   c                 S   s   | d d | d fS r_   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform07.<locals>.mappingrI   r   rY   r[   r   r   r   test_geometric_transform07   s    



z3TestNdimageInterpolation.test_geometric_transform07c                 C   sp   t ddddgddddgddddgg}d	d
 }tj|||j|d}t|ddddgddddgddddgg d S )Nr   r	   r    r   r"   r2   rf   rg   c                 S   s   | d d | d d fS r_   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform08.<locals>.mappingrI   r   rY   r[   r   r   r   test_geometric_transform08   s    



z3TestNdimageInterpolation.test_geometric_transform08c                 C   s   t ddddgddddgddddgg}d	d
 }|dkrHtj||d}n|}tj|||j|dd}t|ddddgddddgddddgg d S )Nr   r	   r    r   r"   r2   rf   rg   c                 S   s   | d d | d d fS r_   r   r   r   r   r   rX      s    zDTestNdimageInterpolation.test_geometric_transform10.<locals>.mappingrI   Fr&   	prefilterr   )r(   r)   r*   rL   r+   rZ   r   )r-   r&   r.   rX   filteredrN   r   r   r   test_geometric_transform10   s     

 

z3TestNdimageInterpolation.test_geometric_transform10c                 C   sB   t dgt j}dd }tj||dg|d}t|ddddg d S )Nr   c                 S   s   | d d fS Nr   r   r   r   r   r   r   rX     s    zDTestNdimageInterpolation.test_geometric_transform13.<locals>.mappingr   rI   r	   )r(   rK   float64r*   r+   r   r[   r   r   r   test_geometric_transform13   s    z3TestNdimageInterpolation.test_geometric_transform13c                 C   sF   ddddddddg}dd	 }t j||dg|d
}t|ddddg d S )Nr	   rg   r   r2   r    r"   r   c                 S   s   d| d  fS )Nr   r   r   r   r   r   r   rX     s    zDTestNdimageInterpolation.test_geometric_transform14.<locals>.mappingrI   r*   r+   r   r[   r   r   r   test_geometric_transform14  s    z3TestNdimageInterpolation.test_geometric_transform14c                 C   sH   ddddg}dd }t j||dg|d}t|d d d ddddg d S )	Nr	   r   r    r   c                 S   s   | d d fS ro   r   r   r   r   r   rX     s    zDTestNdimageInterpolation.test_geometric_transform15.<locals>.mappingrf   rI   rr   r[   r   r   r   test_geometric_transform15  s    z3TestNdimageInterpolation.test_geometric_transform15c                 C   s\   ddddgddddgd	d
ddgg}dd }t j||d|d}t|ddgddgddgg d S )Nr	   r   r    r   rg   r2   r"   rf         "@
         c                 S   s   | d | d d fS Nr   r	   r   r   r   r   r   r   rX   !  s    zDTestNdimageInterpolation.test_geometric_transform16.<locals>.mappingr    r   rI   	   rr   r[   r   r   r   test_geometric_transform16  s    



z3TestNdimageInterpolation.test_geometric_transform16c                 C   sT   ddddgddddgd	d
ddgg}dd }t j||d|d}t|ddddgg d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   | d d | d fS Nr   r   r	   r   r   r   r   r   rX   .  s    zDTestNdimageInterpolation.test_geometric_transform17.<locals>.mappingr	   r   rI   rr   r[   r   r   r   test_geometric_transform17(  s    



z3TestNdimageInterpolation.test_geometric_transform17c                 C   sP   ddddgddddgd	d
ddgg}dd }t j||d|d}t|ddgg d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   | d d | d d fS r}   r   r   r   r   r   rX   ;  s    zDTestNdimageInterpolation.test_geometric_transform18.<locals>.mappingr	   r   rI   rr   r[   r   r   r   test_geometric_transform185  s    



z3TestNdimageInterpolation.test_geometric_transform18c                 C   sX   ddddgddddgd	d
ddgg}dd }t j||d|d}t|dd d df | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   | d | d d fS ry   r   r   r   r   r   rX   H  s    zDTestNdimageInterpolation.test_geometric_transform19.<locals>.mappingr    rf   rI   .rr   r[   r   r   r   test_geometric_transform19B  s    



z3TestNdimageInterpolation.test_geometric_transform19c                 C   sX   ddddgddddgd	d
ddgg}dd }t j||d|d}t|d d ddf | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   | d d | d fS r}   r   r   r   r   r   rX   U  s    zDTestNdimageInterpolation.test_geometric_transform20.<locals>.mappingr2   r   rI   .rr   r[   r   r   r   test_geometric_transform20O  s    



z3TestNdimageInterpolation.test_geometric_transform20c                 C   s^   ddddgddddgd	d
ddgg}dd }t j||d|d}t|d d dd d df | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   | d d | d d fS r}   r   r   r   r   r   rX   b  s    zDTestNdimageInterpolation.test_geometric_transform21.<locals>.mappingr2   rf   rI   rr   r[   r   r   r   test_geometric_transform21\  s    



z3TestNdimageInterpolation.test_geometric_transform21c                 C   sn   t ddddgddddgd	d
ddggt j}dd }dd }tj||d|d}tj||d|d}t|| d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   | d d | d d fS r}   r   r   r   r   r   mapping1o  s    zETestNdimageInterpolation.test_geometric_transform22.<locals>.mapping1c                 S   s   | d d | d d fS r}   r   r   r   r   r   mapping2r  s    zETestNdimageInterpolation.test_geometric_transform22.<locals>.mapping2r   rI   r    r   )r(   r)   rp   r*   r+   r   )r-   r&   r.   r   r   rN   r   r   r   test_geometric_transform22i  s"    

  z3TestNdimageInterpolation.test_geometric_transform22c                 C   sZ   ddddgddddgd	d
ddgg}dd }t j||d|d}|tj}t|ddg d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   d| d d fS )Nr	   r   r   r   r   r   r   r   rX     s    zDTestNdimageInterpolation.test_geometric_transform23.<locals>.mappingr   rI   )r*   r+   astyper(   Zint32r   r[   r   r   r   test_geometric_transform23{  s    


z3TestNdimageInterpolation.test_geometric_transform23c                 C   sV   ddddgddddgd	d
ddgg}dd }t j||d|dddid}t|ddg d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   c                 S   s   || d | fS )Nr   r   )r   abr   r   r   rX     s    zDTestNdimageInterpolation.test_geometric_transform24.<locals>.mappingr   )r	   r   )r&   Zextra_argumentsZextra_keywordsrr   r[   r   r   r   test_geometric_transform24  s    


    z3TestNdimageInterpolation.test_geometric_transform24c                 C   s\   t jdddgdddggtd}dd	 }t d
ddgdddgg}ttj||ddd| d S )Nr	   r   r    r   rg   r2   r3   c                 S   s   | d d | d d fS )Nr   r   r	   r   r   r   r   r   rX     s    zWTestNdimageInterpolation.test_geometric_transform_grid_constant_order1.<locals>.mapping      ?      ?      ?      @r!   r   r$   r&   )r(   r)   r>   r   r*   r+   )r-   r   rX   expected_resultr   r   r   -test_geometric_transform_grid_constant_order1  s    
zFTestNdimageInterpolation.test_geometric_transform_grid_constant_order1c           
      C   s   t jdtddd}dd }d}t|}t j|||d}tt|| g|j	 }t
j||||d| }	tt
j||||d|	d	d
 d S )N   r3   rx   c                 S   s   | d d | d d fS )Nr   皙?r	   gffffff@r   r   r   r   r   rX     s    zLTestNdimageInterpolation.test_geometric_transform_vs_padded.<locals>.mapping   r9   r   r:   r;   )r(   r=   r>   reshaper@   rA   rB   tupleslicendimr*   r+   r   )
r-   r&   r$   r   rX   rD   rE   xpcenter_slicer   r   r   r   "test_geometric_transform_vs_padded  s*    
   
z;TestNdimageInterpolation.test_geometric_transform_vs_paddedc                 C   sz   t dg}dd }|j|j t |t ||j fD ]4}tj|||j|d}|d krd|n|}t	|dg q@d S )Nr	   c                 S   s   | S rW   r   r   r   r   r   rX     s    zcTestNdimageInterpolation.test_geometric_transform_endianness_with_output_parameter.<locals>.mappingrR   )
r(   r)   r4   newbyteorder
empty_liker   r*   r+   rZ   r   )r-   r.   rX   rN   returnedresultr   r   r   9test_geometric_transform_endianness_with_output_parameter  s    zRTestNdimageInterpolation.test_geometric_transform_endianness_with_output_parameterc                 C   sH   t dg}dd }tj||dd}t|jt dk t|dg d S )Nr	   c                 S   s   | S rW   r   r   r   r   r   rX     s    zUTestNdimageInterpolation.test_geometric_transform_with_string_output.<locals>.mappingfrR   )r(   r)   r*   r+   r   r4   r   )r-   r.   rX   rN   r   r   r   +test_geometric_transform_with_string_output  s
    zDTestNdimageInterpolation.test_geometric_transform_with_string_outputc                 C   s   t ddddgddddgddddgg}t d	d	d	d	gd	dddgd	dddgg}|jjd
krt|d|  }|d|  }t |j}|d8 }tj|||d}t|| d S )Nr   r	   r    r   r"   r2   rf   rg   r   rb   rc   rI   )	r(   r)   r4   rd   indicesrZ   r*   r?   r   )r-   r&   r4   r.   rG   idxrN   r   r   r   test_map_coordinates01  s    



z/TestNdimageInterpolation.test_map_coordinates01c                 C   sn   t ddddgddddgddddgg}t |jt j}|d	8 }tj|d	|d
}tj|||d
}t|| d S )Nr   r	   r    r   r"   r2   rf   rg   r   rI   )	r(   r)   r   rZ   rp   r*   r   r?   r   )r-   r&   r.   r   out1out2r   r   r   test_map_coordinates02  s    

z/TestNdimageInterpolation.test_map_coordinates02c              	   C   sp  t jddddgddddgddddggd	d
}t |jd }t||}t|ddddgddddgddddgg t|t|d t |d d d jd }t|d d d |}t|ddddgddddgg t|t|d d d d t |d d d d df jd }t|d d d d df |}t|ddgddgddgg t|t|d d d d df d d S )Nr   r	   r    r   r"   r2   rf   rg   FrI   r   r	   r	   )r(   r)   r   rZ   r*   r?   r   r   r-   r.   r   rN   r   r   r   test_map_coordinates03  s.    




"z/TestNdimageInterpolation.test_map_coordinates03c                 C   s   t ddgddgg}t ddgddgg}t |j}|d8 }|j|j t |t ||j fD ].}tj	|||d}|d kr|n|}t
|| qld S )Nr	   r   r"   r2   r   rR   )r(   r)   r   rZ   r4   r   r   r   r*   r?   r   )r-   r.   rG   r   rN   r   r   r   r   r   5test_map_coordinates_endianness_with_output_parameter  s    zNTestNdimageInterpolation.test_map_coordinates_endianness_with_output_parameterc                 C   sP   t dgg}t |j}tj||dd}t|jt dk t|dgg d S Nr	   r   rR   )	r(   r)   r   rZ   r*   r?   r   r4   r   r   r   r   r   'test_map_coordinates_with_string_output  s
    z@TestNdimageInterpolation.test_map_coordinates_with_string_outputwin32rf   z2do not run on 32 bit or windows (no sparse memory))reasonc              
   C   s   z`d}t j|d t jd||}d||d d |d d f< tj||d g|d ggdd W n. tk
r } ztd	|W 5 d }~X Y nX d S )
Ni0u  r   r3   r   r    r   r	   rI   zNot enough memory available)	r(   emptyZfloat32r   r*   r?   MemoryErrorpytestskip)r-   nr   er   r   r   test_map_coordinates_large_data$  s    $z8TestNdimageInterpolation.test_map_coordinates_large_datac                 C   s0   t dg}tj|dgg|d}t|dg d S rP   r(   r)   r*   affine_transformr   r-   r&   r.   rN   r   r   r   test_affine_transform012  s    z0TestNdimageInterpolation.test_affine_transform01c                 C   s6   t dg}tj|dgg|d}t|ddddg d S )Nr   r	   rI   r(   rK   r*   r   r   r   r   r   r   test_affine_transform028  s    z0TestNdimageInterpolation.test_affine_transform02c                 C   s8   t dg}tj|dggd|d}t|ddddg d S )Nr   r	   r   rI   r   r   r   r   r   r   test_affine_transform03>  s    z0TestNdimageInterpolation.test_affine_transform03c                 C   s>   t ddddg}tj|dggd|d}t|ddddg d S )Nr   r	   r    r   r   rI   r   r   r   r   r   r   test_affine_transform04D  s    z0TestNdimageInterpolation.test_affine_transform04c                 C   s   t jddddgddddgddddgg|d}t jddddgddddgddddgg|d}|jjdkr||d| 8 }|d| 8 }tj|ddgddggddg|d}t|| d S )Nr	   r3   r   rb   rc   r   rI   )r(   r)   r4   rd   r*   r   r   r-   r&   r4   r.   rG   rN   r   r   r   test_affine_transform05J  s(    



 z0TestNdimageInterpolation.test_affine_transform05c                 C   sv   t ddddgddddgddddgg}tj|dd	gd	dggd	d
g|d}t|d	dddgd	dddgd	dddgg d S Nr   r	   r    r   r"   r2   rf   rg   r   r   rI   r   r   r   r   r   test_affine_transform06Z  s    

 

z0TestNdimageInterpolation.test_affine_transform06c                 C   sv   t ddddgddddgddddgg}tj|dd	gd	dggd
d	g|d}t|d	d	d	d	gddddgddddgg d S r   r   r   r   r   r   test_affine_transform07e  s    

 

z0TestNdimageInterpolation.test_affine_transform07c                 C   sv   t ddddgddddgddddgg}tj|dd	gd	dggd
d
g|d}t|d	d	d	d	gd	dddgd	dddgg d S r   r   r   r   r   r   test_affine_transform08p  s    

 

z0TestNdimageInterpolation.test_affine_transform08c                 C   s   t ddddgddddgddddgg}|dkr@tj||d	}n|}tj|dd
gd
dggddg|dd}t|d
d
d
d
gd
dddgd
dddgg d S )Nr   r	   r    r   r"   r2   rf   rg   rI   r   r   Frk   )r(   r)   r*   rL   r   r   r-   r&   r.   rm   rN   r   r   r   test_affine_transform09{  s     

 

z0TestNdimageInterpolation.test_affine_transform09c                 C   s<   t dgt j}tj|dggd|d}t|ddddg d S )Nr   r   r0   )r%   r&   r	   r   )r(   rK   rp   r*   r   r   r   r   r   r   test_affine_transform10  s
    z0TestNdimageInterpolation.test_affine_transform10c                 C   sB   ddddddddg}t j|dggdd	|d
}t|ddddg d S )Nr	   rg   r   r2   r    r"   r   r   r0   rI   r*   r   r   r   r   r   r   test_affine_transform11  s    z0TestNdimageInterpolation.test_affine_transform11c                 C   sD   ddddg}t j|dggdd|d}t|d d d ddddg d S )	Nr	   r   r    r   r   r   rf   rI   r   r   r   r   r   test_affine_transform12  s    z0TestNdimageInterpolation.test_affine_transform12c                 C   sb   ddddgddddgd	d
ddgg}t j|ddgddggdd|d}t|ddgddgddgg d S )Nr	   r   r    r   rg   r2   r"   rf   ru   rv   rw   rx   r   rz   rI   r{   r   r   r   r   r   test_affine_transform13  s    


z0TestNdimageInterpolation.test_affine_transform13c                 C   sZ   ddddgddddgd	d
ddgg}t j|ddgddggdd|d}t|ddddgg d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r   r~   rI   r   r   r   r   r   test_affine_transform14  s    


z0TestNdimageInterpolation.test_affine_transform14c                 C   sV   ddddgddddgd	d
ddgg}t j|ddgddggdd|d}t|ddgg d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r   r   rI   r   r   r   r   r   test_affine_transform15  s    


z0TestNdimageInterpolation.test_affine_transform15c                 C   s^   ddddgddddgd	d
ddgg}t j|ddgddggdd|d}t|dd d df | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx           r   r   r   rI   .r   r   r   r   r   test_affine_transform16  s    


 z0TestNdimageInterpolation.test_affine_transform16c                 C   s^   ddddgddddgd	d
ddgg}t j|ddgddggdd|d}t|d d ddf | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r   r   r   rI   .r   r   r   r   r   test_affine_transform17  s    


 z0TestNdimageInterpolation.test_affine_transform17c                 C   sd   ddddgddddgd	d
ddgg}t j|ddgddggdd|d}t|d d dd d df | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r   r   r   rI   r   r   r   r   r   test_affine_transform18  s    


 z0TestNdimageInterpolation.test_affine_transform18c                 C   sz   t ddddgddddgd	d
ddggt j}tj|ddgddggdd|d}tj|ddgddggdd|d}t|| d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r   r   r   rI          @r   )r(   r)   rp   r*   r   r   r   r   r   r   test_affine_transform19  s    

  z0TestNdimageInterpolation.test_affine_transform19c                 C   sP   ddddgddddgd	d
ddgg}t j|dgdggdd|d}t|ddg d S Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r   r   rI   r   r   r   r   r   test_affine_transform20  s    


z0TestNdimageInterpolation.test_affine_transform20c                 C   sP   ddddgddddgd	d
ddgg}t j|dgdggdd|d}t|dd	g d S r   r   r   r   r   r   test_affine_transform21  s    


z0TestNdimageInterpolation.test_affine_transform21c                 C   s@   t ddddg}tj|dggdgd|d}t|dddg d S )	Nr   r	   r    r   r   )r    rI   r   r   r   r   r   r   test_affine_transform22  s
    z0TestNdimageInterpolation.test_affine_transform22c                 C   sL   t ddddg}tj|dggdgd|d}t|d d d d	dddg d S )
Nr   r	   r    r   r   r   r   rI   r   r   r   r   r   r   test_affine_transform23  s
    z0TestNdimageInterpolation.test_affine_transform23c              	   C   sh   t ddddg}t &}|td tj|dgd|d}W 5 Q R X tj|dggd|d}t|| d S )Nr   r	   r    r   @The behavior of affine_transform with a 1-D array .* has changedr   rI   r(   r)   r   filterUserWarningr*   r   r   r-   r&   r.   supr   r   r   r   r   test_affine_transform24  s    z0TestNdimageInterpolation.test_affine_transform24c              	   C   sh   t ddddg}t &}|td tj|dgd|d}W 5 Q R X tj|dggd|d}t|| d S )	Nr   r	   r    r   r   r   r   rI   r   r   r   r   r   test_affine_transform25  s    z0TestNdimageInterpolation.test_affine_transform25c              	   C   s   t ddddgddddgddddgg}|dkr@tj||d	}n|}t d}t d
 }t ||f}t |dddggf}tj|||	 |dd}tj|||dd}	tj|||dd}
||	|
fD ],}t
|ddddgddddgddddgg qd S )Nr   r	   r    r   r"   r2   rf   rg   rI   r   r	   r   Frk   )r(   r)   r*   rL   eyerK   hstackvstackr   Zravelr   )r-   r&   r.   rm   Ztform_originalZoffset_originaltform_h1tform_h2r   r   Zout3rN   r   r   r   test_affine_transform26  s6    


 



z0TestNdimageInterpolation.test_affine_transform26c                 C   sn   t ddddgddddgddddgg}t t dt d	 f}t |dddggf}tttj	|| d S )
Nr   r	   r    r   r"   r2   rf   rg   r   )
r(   r)   r   r   rK   r   assert_raises
ValueErrorr*   r   )r-   r.   r   r   r   r   r   test_affine_transform273  s    

z0TestNdimageInterpolation.test_affine_transform27c              
   C   s   t d}t |t ||j |j|j fD ]\}t &}|td t	j
|ddg|d}W 5 Q R X |d krx|n|}t|ddgddgg q6d S )N)r   r   r   r	   rR   )r(   rK   r   r   r4   r   r   r   r   r*   r   r   )r-   r.   rN   r   r   r   r   r   r   9test_affine_transform_1d_endianness_with_output_parameter<  s    
 zRTestNdimageInterpolation.test_affine_transform_1d_endianness_with_output_parameterc                 C   sr   t dg}|j|j t |t ||j fD ]4}tj|dgg|d}|d kr\|n|}t|dg q8d S )Nr	   rR   )	r(   r)   r4   r   r   r   r*   r   r   )r-   r.   rN   r   r   r   r   r   >test_affine_transform_multi_d_endianness_with_output_parameterK  s    zWTestNdimageInterpolation.test_affine_transform_multi_d_endianness_with_output_parameterc              	   C   sv   t jdt jd}t d}|j}tj|dgg|d t|d d | t	t
 tj|dgg|dd W 5 Q R X d S )Nrf   r3   )   r	   rR   )rx   )rS   r%   )r(   r=   rp   rK   rZ   r*   r   r   r   r   RuntimeError)r-   r.   rN   Zoshaper   r   r   "test_affine_transform_output_shapeV  s    
   z;TestNdimageInterpolation.test_affine_transform_output_shapec                 C   sD   t dg}tj|dggdd}t|jt dk t|dg d S r   )r(   r)   r*   r   r   r4   r   )r-   r.   rN   r   r   r   (test_affine_transform_with_string_outputd  s    zATestNdimageInterpolation.test_affine_transform_with_string_outputr   )r	   r   r   r	   )r   r	   )r    )r   r"   c                 C   sr   t ddgddgg}t d}t d|d dd df< ||d d df< ttj||d|dt j||dd	 d S )
Nr   r	   r   r    r   r    r   r   r   Zaxis)r(   r)   zerosr   r   r*   r   roll)r-   r   r&   r   affiner   r   r   )test_affine_transform_shift_via_grid_wrapj  s    

zBTestNdimageInterpolation.test_affine_transform_shift_via_grid_wrapc                 C   s   t dddgdddgg}t d}t d|d dd df< |j|d d df< ttj||d|d	|d d d
d d d
f  d S )Nr   r	   r   r    r   rg   r   r   r   r   )r(   r)   r   r   rZ   r   r*   r   )r-   r&   r   r  r   r   r   #test_affine_transform_shift_reflecty  s    
z<TestNdimageInterpolation.test_affine_transform_shift_reflectc                 C   s.   t dg}tj|dg|d}t|dg d S )Nr	   rI   r   r(   r)   r*   r   r   r   r   r   r   test_shift01  s    z%TestNdimageInterpolation.test_shift01c                 C   s4   t dg}tj|dg|d}t|ddddg d S )Nr   r	   rI   r   r(   rK   r*   r   r   r   r   r   r   test_shift02  s    z%TestNdimageInterpolation.test_shift02c                 C   s2   t dg}tj|d|d}t|ddddg d S )Nr   r   rI   r	   r   r  r   r   r   r   test_shift03  s    z%TestNdimageInterpolation.test_shift03c                 C   s8   t ddddg}tj|d|d}t|ddddg d S )Nr   r	   r    r   rI   r   r  r   r   r   r   test_shift04  s    z%TestNdimageInterpolation.test_shift04c                 C   s   t jddddgddddgddddgg|d}t jddddgddddgddddgg|d}|jjdkr||d| 8 }|d| 8 }tj|ddg|d}t|| d S )Nr	   r3   r   rb   rc   rI   r(   r)   r4   rd   r*   r   r   r   r   r   r   test_shift05  s"    



z%TestNdimageInterpolation.test_shift05c                 C   s   t jddddgddddgddddgg|d}t jddddgddddgddddgg|d}|jjdkr||d| 8 }|d| 8 }d}||d d df< tj|ddg|||d}t|| d S )Nr	   r3   r   rb   rc   g      @)r&   r$   r#   r  )r-   r&   r$   r4   r.   rG   r#   rN   r   r   r   test_shift_with_nonzero_cval  s&    



z5TestNdimageInterpolation.test_shift_with_nonzero_cvalc                 C   sh   t ddddgddddgddddgg}tj|d	dg|d
}t|d	dddgd	dddgd	dddgg d S Nr   r	   r    r   r"   r2   rf   rg   r   rI   r  r   r   r   r   test_shift06  s    



z%TestNdimageInterpolation.test_shift06c                 C   sh   t ddddgddddgddddgg}tj|dd	g|d
}t|d	d	d	d	gddddgddddgg d S r  r  r   r   r   r   test_shift07  s    



z%TestNdimageInterpolation.test_shift07c                 C   sh   t ddddgddddgddddgg}tj|ddg|d	}t|d
d
d
d
gd
dddgd
dddgg d S )Nr   r	   r    r   r"   r2   rf   rg   rI   r   r  r   r   r   r   test_shift08  s    



z%TestNdimageInterpolation.test_shift08c                 C   s   t ddddgddddgddddgg}|dkr@tj||d	}n|}tj|ddg|d
d}t|ddddgddddgddddgg d S )Nr   r	   r    r   r"   r2   rf   rg   rI   Frk   r   )r(   r)   r*   rL   r   r   r   r   r   r   test_shift09  s    



z%TestNdimageInterpolation.test_shift09c                 C   s>   t ddgddgg}ttj||d|dt j||dd d S )	Nr   r	   r   r    r   r   r   r   )r(   r)   r   r*   r   r  r-   r   r&   r   r   r   r   test_shift_grid_wrap  s    
z-TestNdimageInterpolation.test_shift_grid_wrapc                 C   s:   t dd}ttj||d|dtj||d|d d S )N   )rg   r   r   r   r   )r(   r=   r   r   r*   r   r  r   r   r   test_shift_grid_constant1  s
    z2TestNdimageInterpolation.test_shift_grid_constant1c                 C   sT   t jdddgdddggtd}t dd	d
gd
ddgg}ttj|dddd| d S )Nr	   r   r    r   rg   r2   r3   r   r   r   r   r!   )r   r   r   r   )r(   r)   r>   r   r*   r   )r-   r   r   r   r   r   test_shift_grid_constant_order1  s    z8TestNdimageInterpolation.test_shift_grid_constant_order1c                 C   sL   t dddgdddgg}ttj||jd|d|d d d	d d d	f  d S )
Nr   r	   r   r    r   rg   r   r   r   )r(   r)   r   r*   r   rZ   )r-   r&   r   r   r   r   test_shift_reflect  s    z+TestNdimageInterpolation.test_shift_reflectrl   FTc                 C   sj   t d}td||d}ttj||d d f|d |d  ttj|| d d f|d |d  d S )Nr   r   )r$   r&   rl   r   r	   r   r   )r(   r=   dictr   r*   r   )r-   r&   rl   r   kwargsr   r   r   test_shift_nearest_boundary  s    
  z4TestNdimageInterpolation.test_shift_nearest_boundaryc           
      C   s   t jdtddd}d}d}t|}t j|||d}tt|| g|j	 }t
j||||d| }	tt
j||||d|	dd	 d S )
Nr   r3   rx   )r   gffffffr8   r9   r   r:   r   )r(   r=   r>   r   r@   rA   rB   r   r   r   r*   r   r   )
r-   r&   r$   r   r   rD   rE   r   r   r   r   r   r   test_shift_vs_padded&  s&    
   z-TestNdimageInterpolation.test_shift_vs_paddedc                 C   s   dddgfD ]}t ttddt}tj|||d}t	|j
d tt |dd d f dk tt |dd d f dt k tt |dd d f d	t k tt |dt k tt |d
t k qd S )Nr      )rg   rg   rI   )rv   rv   r   r   r  rg   r   )r(   r)   listranger   r   r>   r*   zoomr   rZ   r   alleps)r-   r&   zarrr   r   r   
test_zoom1;  s    ""z#TestNdimageInterpolation.test_zoom1c                 C   s2   t dd}tt|dd}t|| d S )Nrx   r   r   r   )r(   r=   r   r*   r   r   )r-   r$  rN   r   r   r   
test_zoom2G  s    z#TestNdimageInterpolation.test_zoom2c                 C   sb   t ddgg}t|d}t|d}t|t ddgddgg t|t ddddgg d S )Nr	   r   r   r   )r(   r)   r*   r   r   )r-   r$  r   r   r   r   r   
test_zoom3L  s
    z#TestNdimageInterpolation.test_zoom3c              	   C   s   t jddddgddddgd	d
ddgg|d}|jjdkrD|d| 8 }t *}|td tj|ddgdd|d}W 5 Q R X t	|d d dd d df | d S )Nr	   r   r    r   rg   r2   r"   rf   r{   rv   rw   rx   r3   rb   rc   r   r   r   r   rI   )
r(   Zasarrayr4   rd   r   r   r   r*   r   r   )r-   r&   r4   r.   r   rN   r   r   r   test_zoom_affine01T  s"    

 z+TestNdimageInterpolation.test_zoom_affine01c                 C   s&   d}t jt||fd| dd d S )Nrf         ?r   r9   )r*   r   r(   r   )r-   dimr   r   r   test_zoom_infinityd  s    z+TestNdimageInterpolation.test_zoom_infinityc                 C   s6   t d}d}tj||dd}t d}t|| d S )N)r	   rg   rg   )r)  r   r   r"   )r#   )r	   rv   rv   )r(   r   r*   r   r   )r-   r$  r   rN   refr   r   r   test_zoom_zoomfactor_onei  s
    

z1TestNdimageInterpolation.test_zoom_zoomfactor_onec                 C   s*   t d}d}t||}t|jd d S )N)r    rw   r  )gUUUUUU?gE]t?g(\?)r   r5      )r(   r   r*   r   r   rZ   )r-   r$  r   rN   r   r   r   test_zoom_output_shape_roundoffr  s    
z8TestNdimageInterpolation.test_zoom_output_shape_roundoffr   r   )r    rg   )rf   r   )rf   rf   c                 C   sD   t jddgddggtd}ttj||d|dt |t | d S )Nr   r	   r   r    r3   r7   )r(   r)   r>   r   r*   r   kronrK   )r-   r   r$   r   r   r   r   test_zoom_by_int_order0x  s    	
z0TestNdimageInterpolation.test_zoom_by_int_order0rZ   r   )r   r   c                 C   sF   t jt |td|}ttj||d|ddt |t 	| d S )Nr3   r   T)r&   r$   	grid_mode)
r(   r=   prodr>   r   r   r*   r   r0  rK   )r-   rZ   r   r$   r   r   r   r   test_zoom_grid_by_int_order0  s
    z5TestNdimageInterpolation.test_zoom_grid_by_int_order0c              	   C   sF   t jdtdd}tjtdd tj|d|ddf W 5 Q R X d S )	Nr{   r3   )r    r    zIt is recommended to use mode)matchr   T)r$   r2  )	r(   r=   r>   r   r   Zwarnsr   r*   r   )r-   r$   r   r   r   r   test_zoom_grid_mode_warnings  s
    z5TestNdimageInterpolation.test_zoom_grid_mode_warningsc                 C   sL   t jddddgddddgddddggt jd}tj|d|d}t|| d S )Nr   r	   r3   rI   r(   r)   rp   r*   rotater   r   r   r   r   test_rotate01  s    

z&TestNdimageInterpolation.test_rotate01c                 C   s|   t jddddgddddgddddggt jd}t jdddgdddgdddgdddggt jd}tj|d|d}t|| d S )Nr   r	   r3   Z   rI   r7  r-   r&   r.   rG   rN   r   r   r   test_rotate02  s    

z&TestNdimageInterpolation.test_rotate02c                 C   s   t jdddddgdddddgdddddgg|d}t jdddgdddgdddgdddgdddgg|d}|jjdkr|d| 8 }|d| 8 }tj|d|d}t|| d S )Nr   r	   r3   rb   rc   r:  rI   )r(   r)   r4   rd   r*   r8  r   r   r   r   r   test_rotate03  s&    z&TestNdimageInterpolation.test_rotate03c                 C   s   t jdddddgdddddgdddddggt jd}t jdddddgdddddgdddddggt jd}tj|dd|d}t|| d S )Nr   r	   r3   r:  F)r   r&   r7  r;  r   r   r   test_rotate04  s    z&TestNdimageInterpolation.test_rotate04c                 C   s   t d}tdD ]F}t jdddgdddgdddgdddggt jd|d d d d |f< qt jddddgddddgddddggt jd}tj|d|d}tdD ] }t|d d d d |f | qd S )N)r   r    r    r    r   r	   r3   r:  rI   r(   r   r  r)   rp   r*   r8  r   r-   r&   r.   irG   rN   r   r   r   test_rotate05  s$    


z&TestNdimageInterpolation.test_rotate05c                 C   s   t d}tdD ]D}t jddddgddddgddddggt jd|d d d d |f< qt jdddgdddgdddgdddggt jd}tj|d|d}tdD ] }t|d d d d |f | qd S )N)r    r   r    r    r   r	   r3   r:  rI   r?  r@  r   r   r   test_rotate06  s$    


z&TestNdimageInterpolation.test_rotate06c                 C   s   t jdddddgdddddgdddddgggd t jd}| }t jdddgdddgdddgdddgdddgggd t jd}|dddg}tj|dd|d}t|| d S )Nr   r	   r   r3   r:  r   )axesr&   r(   r)   rp   Z	transposer*   r8  r   r;  r   r   r   test_rotate07  s,    z&TestNdimageInterpolation.test_rotate07c                 C   s   t jdddddgdddddgdddddgggd t jd}| }t jdddddgdddddgdddddgggd t jd}| }tj|ddd|d}t|| d S )	Nr   r	   r   r3   r:  r   F)rD  r   r&   rE  r;  r   r   r   test_rotate08  s(    z&TestNdimageInterpolation.test_rotate08c              	   C   sf   t jdddddgdddddgdddddggd t jd}tt tj|dd|jfd W 5 Q R X d S )Nr   r	   r   r3   r:  )rD  )r(   r)   rp   r   r   r*   r8  r   )r-   r.   r   r   r   test_rotate09	  s    
z&TestNdimageInterpolation.test_rotate09c                 C   s   t jdt jdd}t dddgdddgdddgdd	d
gdddggdddgdddgdddgdddgdddggdddgdddgdddgdddgdddggg}tj|d d!d"}t|| d S )#N-   r3   )r    rg   r    r   g|S2@g|S2@g>)!@g9HD%@g9HD'@g9HD)@gc~@gc~@gzLb @g[ic6*@g[ic6,@g[ic6.@g      5@g      6@g      7@gRK<@gRK=@gRK>@g,PA@g,PgB@g,PB@gݠ'?@grn@@grnГ@@gGA@gG9B@gGB@rx   F)Zangler   )r(   r=   rp   r   r)   r*   r8  r   )r-   r.   rG   rN   r   r   r   test_rotate10  s,    z&TestNdimageInterpolation.test_rotate10c                 C   s4   t t dd}tt|dd}t|| d S )Nrg   )rg   r	      iL)r(   Ztiler=   r*   r8  r   )r-   r   r   r   r   r   test_rotate_exact_180'  s    z.TestNdimageInterpolation.test_rotate_exact_180N)}__name__
__module____qualname__r   markZparametrizer/   r1   r  rH   r
   rO   rQ   rT   rU   rV   r\   r^   r`   ra   r(   rp   Z
complex128re   rh   ri   rj   rn   rq   rs   rt   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZskipifsysplatformZintpitemsizer   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  r  r  r  r  r  r  r%  r&  r'  r(  r+  r-  r/  r1  r4  r6  r9  r<  r=  r>  rB  rC  rF  rG  rH  rJ  rL  r   r   r   r   r      s  





 












	
	
	








 

 





























	





	
	
	
	

	 
	   









r   c                  C   s*   t dd} tj| dt dd dS )zTicket #643rx   r   r   r   rR   N)r(   r=   r   r*   r   r   r   r   r   r   test_zoom_output_shape-  s    rT  )rQ  r(   Znumpy.testingr   r   r   r   r   r   r   r   r   Zscipy.ndimager*    r
   r"  r@   r   rT  r   r   r   r   <module>   s4    
          