U
    Gvfn                     @   sF   d dl Zd dlmZmZmZ d dlmZ d dl	m
Z
 G dd dZdS )    N)assert_allcloseassert_equalassert_almost_equal)raises)
procrustesc                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestProcrustesc              
   C   s@  t ddgddgddgddggd| _t ddgddgddgddggd| _t ddgddgddgdd	ggd| _t jd
 }t ddgddgddgddggdt d | _t t |t 	|gt t jd | t 	t jd | gt | t 	| gt t jd |  t 	t jd |  ggdt d | _
dS )zcreates inputs         d   ig      @   r   N)nparraydata1data2data3pisqrtdata4cossindata5)selfZ
shiftangle r   H/tmp/pip-unpacked-wheel-96ln3f52/scipy/spatial/tests/test__procrustes.pysetup_method	   s4    &&&


zTestProcrustes.setup_methodc           
      C   s`   t | j| j\}}}t|| t|d t | j| j\}}}t|| j t | j| j\}}}	d S )Ng        )	r   r   r   r   r   r   r   r   r   )
r   abZ	disparityZm4Zm5Zdisp45m1m3disp13r   r   r   test_procrustes%   s    

zTestProcrustes.test_procrustesc                 C   s   t | j| j\}}}t | j| j\}}}t|| tdddgdddgddd	gd
ddgdddgdddgdddgdddgg}tdddgdddgdd d!gd"d#d$gd%d&d'gd(d)d*gd+d,d-gd.d/d0gg}t ||\}	}
}t ||\}}}t|| d S )1Ngߐ@gĈ?gYA?gR;EQ?gzOg/߸cԿgwKi?gc3O?g٣ÿg) A	 @gJ?g:o?gً3?gvO\?g<Р?g}v#?gP#@g-@gN	g;?go{1?gg=?gW$g*?gDW?gUϓ|6?g|_;?g\X3ƿg8g[g7~gVD?s?g$SgB9?gd?gq6ɿglx?g#)w<?gyw<5?g;{?gxi7?g9JNgv[SjgYNggj$#g^pտgDЍg6t(\ҿg1K[?)r   r   r   r   r   r   )r   r"   r#   r$   Zm3_2Zm1_2Zdisp31Zrand1Zrand3Zres1Zres3Zres3_2Zres1_2r   r   r   test_procrustes28   s0    
	zTestProcrustes.test_procrustes2c              
   C   s:   t tttddgddggtdddgdd	d
gg d S )Nr   r
   r	   r            r   	   
   assert_raises
ValueErrorr   r   r   r   r   r   r   test_procrustes_shape_mismatchT   s    z-TestProcrustes.test_procrustes_shape_mismatchc                 C   s   t g g}ttt|| d S )N)r   r   r-   r.   r   )r   emptyr   r   r   "test_procrustes_empty_rows_or_colsY   s    z1TestProcrustes.test_procrustes_empty_rows_or_colsc              	   C   s6   t tttddgddggtddgddgg d S )N*   -   r,   r/   r   r   r   test_procrustes_no_variation]   s    z+TestProcrustes.test_procrustes_no_variationc                 C   s   t tttddddddgtddgddgg t tttddddddgtddddddg t tttdtd t tttdgdgggtdd	ggg d S )
Nr   r
   r	   r'   r   r   r)         r,   r/   r   r   r   (test_procrustes_bad_number_of_dimensionsb   s    z7TestProcrustes.test_procrustes_bad_number_of_dimensionsN)
__name__
__module____qualname__r   r%   r&   r0   r2   r5   r8   r   r   r   r   r      s   r   )Znumpyr   Znumpy.testingr   r   r   Zpytestr   r-   Zscipy.spatialr   r   r   r   r   r   <module>   s   