o
    4Bi^                     @   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    d S 1 sw   Y  d S )N)match)r   weights)pytestraises
ValueErrorr   )selfr   r   r	    r   m/var/www/html/Trade-python/venv/lib/python3.10/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
   )shape
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   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s#J |jjt jks,J 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
   r1   )r!   linspacer   r   r-   r.   arange)r   r1   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            ?r9   r9   r
      )r:   r   r
   r2   	   r      r2   r,   )      ?r=   r=   r;   r;   r;         )@r>   )r   r=   r   )r   r:   r   r   )r
   r   r
   r
   r
   r
   r
   r9   r9   r9   r
   r:   )r:   r   r
   r
   r
   r
   r
   r2   r;   r   r<   r2   r   r    r   r
   )r!   r"   r   r   r-   r   r.   diff)r   r   r   r/   w2y2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sKJ tt
|jt
| t | dd}t|j |j t|j|j d S )N)
r   r   r   r:   r8   r   r
   r    r;   r   )
r   8T笪@rD   rD   rD   rD   rD   8T笪@rE   rE   )r   r
   r    r2   d   r   r
   F)numendpointr8   r2   )dg        g_ӽ-?gO*e?g%2g?g;ك?g6Y:tW?g>l&?g?g:ǰ?g{?g!:Fv?gEr/?gk;?$'
"?rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   rI   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@rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   rJ   r3   )r   r   r-   r   r.   r!   r4   sinallr?   sum)r   r   r/   x_Rr6   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	s'J t t |j
s2J t t |js=J d S )Nr:   r   Fr,   )r!   r5   floatr+   flags	writeabler   rL   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r$J |jjr*J |jjr0J t||d}t t 	|j
sAJ t t 	|jsLJ t t 	|jsWJ d S )Nr2   r   r:   r,   )r!   r5   rQ   r+   rR   c_contiguousf_contiguousr   rL   rT   r-   r   r.   rU   r   r   r   test_non_contiguous_arrays   s   z1TestIsotonicRegression.test_non_contiguous_arrays)__name__
__module____qualname__r   markparametrizer   r(   r!   r#   float32int64int32r0   r7   rC   rP   rV   rY   r   r   r   r   r   	   s<    



8r   )numpyr!   numpy.testingr   r   r   scipy.optimize._pava_pybindr   scipy.optimizer   r   r   r   r   r   <module>   s    