a
    h^                     @   sJ   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	 G dd dZ
dS )    N)assert_allcloseassert_equal)pava)isotonic_regressionc                
   @   s   e Zd Zejdddggddfddgddggdfddgdgdfdddgddgd	fgd
d Zdd Zejdej	ej
ejejgejdej	ej
ejejgejdddgdd Zejdddgdd Zdd Zdd Zdd Zdd  ZdS )!TestIsotonicRegression)ywmsgr      Nz7array has incorrect number of dimensions: 2; expected 1   <Input arrays y and w must have one dimension of equal length)r
   r   r   z#Weights w must be strictly positivec                 C   s>   t jt|d t||d W d    n1 s00    Y  d S )N)match)r   weights)pytestZraises
ValueErrorr   )selfr   r   r	    r   i/var/www/html/assistant/venv/lib/python3.9/site-packages/scipy/optimize/tests/test_isotonic_regression.pytest_raise_error
   s    z'TestIsotonicRegression.test_raise_errorc                 C   st   t jg dt jd}t |}t j|jd d dt jd}t||| t|g d t|g d t|g d	 d S )
N      r   r   r   r   r   dtyper   r
   )shapeZ
fill_valuer   r   r   r   r   r   r   r   )   r
   r
   r
   r
   r
   r
   )r   r      r   r   r   r   r   )	nparrayfloat64	ones_likefullr   Zintpr   r   )r   r   r   rr   r   r   test_simple_pava   s    
z'TestIsotonicRegression.test_simple_pavay_dtypew_dtyper   onesc                 C   s   t jg d|d}|d ur(t j||d}t||d}|jjt jksFJ |jjt jksXJ t|jg d t|jddg t|j	g d t
|t jg dt jd d S )Nr   r   r   r   r   r
   )r   r   r   )r   r    r"   r   xr   r!   r   r   blocksr   )r   r   r'   r&   r   resr   r   r   test_simple_isotonic_regression*   s    z6TestIsotonicRegression.test_simple_isotonic_regression
increasingTFc                 C   sV   d}|rt dd|nt dd|}t||d}t|j| t|jt |d  d S )N
   r   r
   r.   )r   linspacer   r   r*   r+   arange)r   r.   nr   r,   r   r   r   test_linspace<   s
     z$TestIsotonicRegression.test_linspacec                 C   s   t g d}t g d}t||d}t|jg d t|jg d t|jg d t g d}t g d}t||d}tt |jd	d
 d	 t|jdd  |j t|j|j t|jdd  d |jdd   d S )N)r
   r            ?r6   r6   r
      )r7   r   r
   r/   	   r      r/   r)   )      ?r:   r:   r8   r8   r8         )@r;   )r   r:   r   )r   r7   r   r   )r
   r   r
   r
   r
   r
   r
   r6   r6   r6   r
   r7   )r7   r   r
   r
   r
   r
   r
   r/   r8   r   r9   r/   r   r   r   r
   )r   r    r   r   r*   r   r+   diff)r   r   r   r,   Zw2y2Zres2r   r   r   test_weightsD   s    z#TestIsotonicRegression.test_weightsc                 C   s   g d}t |}g d}t|j| t|jg d d}tjdd|dd}d	| td
|  }t |}g d}t|j| tt	|jdksJ tt
|jt
| t | dd}t|j |j t|j|j d S )N)
r   r   r   r7   r5   r   r
   r   r8   r   )
r   8T笪@r?   r?   r?   r?   r?   8T笪@r@   r@   )r   r
   r   r/   d   r   r
   F)numZendpointr5   r/   )dg        g_ӽ-?gO*e?g%2g?g;ك?g6Y:tW?g>l&?g?g:ǰ?g{?g!:Fv?gEr/?gk;?$'
"?rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   rC   gV ?gQk?v?g0n?g<?g [ @g7Y@g[d@g2-ڱ{@g+@g>	l@goT@gZO"@gN%U	@glJ
@gt NԐ@go@gDN>	@gVi$'@glO@gc@g]@gǾ@g{ur @gfue@g@gkY@gHZ@DFjv@rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   rD   r0   )r   r   r*   r   r+   r   r1   sinallr<   sum)r   r   r,   Zx_Rr3   Zres_invr   r   r   test_against_R_monotoneV   s     z.TestIsotonicRegression.test_against_R_monotonec                 C   s~   t jdtd}t jdtd}d|j_d|j_t||d}t t |j	sNJ t t |j
sdJ t t |jszJ d S )Nr7   r   Fr)   )r   r2   floatr(   flagsZ	writeabler   rF   isfiniter*   r   r+   r   r*   r   r,   r   r   r   test_readonly   s    z$TestIsotonicRegression.test_readonlyc                 C   s   t jdtdd d d }t jdtdd d d }|jjr<J |jjrHJ |jjrTJ |jjr`J t||d}t t 	|j
sJ t t 	|jsJ t t 	|jsJ d S )Nr/   r   r7   r)   )r   r2   rI   r(   rJ   c_contiguousf_contiguousr   rF   rK   r*   r   r+   rL   r   r   r   test_non_contiguous_arrays   s    z1TestIsotonicRegression.test_non_contiguous_arrays)__name__
__module____qualname__r   markZparametrizer   r%   r   r!   Zfloat32Zint64Zint32r-   r4   r>   rH   rM   rP   r   r   r   r   r   	   s:   



8r   )numpyr   Znumpy.testingr   r   r   Zscipy.optimize._pava_pybindr   Zscipy.optimizer   r   r   r   r   r   <module>   s
   