
    tKg                     P    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      Z
y)    N)assert_allcloseassert_equal)pava)isotonic_regressionc                      e Zd Zej                  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fddgddfddgddgdfg      d	        Zd
 Zej                  j                  dej                  ej                  ej                  ej                  g      ej                  j                  dej                  ej                  ej                  ej                  g      ej                  j                  dddg      d                      Zej                  j                  dddg      d        Zd Zd Zd Zd Zy)TestIsotonicRegression)ywmsgr      Nz7array has incorrect number of dimensions: 2; expected 1   z<Input arrays y and w must have one dimension of equal lengthz#Weights w must be strictly positivec                 ~    t        j                  t        |      5  t        ||       d d d        y # 1 sw Y   y xY w)N)match)r	   weights)pytestraises
ValueErrorr   )selfr	   r
   r   s       q/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/optimize/tests/test_isotonic_regression.pytest_raise_errorz'TestIsotonicRegression.test_raise_error
   s(    $ ]]:S1!Q/ 211s   3<c                 V   t        j                  g dt         j                        }t        j                  |      }t        j                  |j
                  d   dz   dt         j                        }t        |||       t        |g d       t        |g d       t        |g d	       y )
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
   rs       r   test_simple_pavaz'TestIsotonicRegression.test_simple_pava   st     HH*"**=LLOGG!''!*q.RrwwGQ1010189    y_dtypew_dtyper
   onesc                    t        j                  g d|      }|t        j                  ||      }t        ||      }|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                               y )Nr   r   r   r    r!   r   )r   r!   r"   )r#   r$   r&   r   xr   r%   r   r   blocksr   )r   r
   r-   r,   r	   ress         r   test_simple_isotonic_regressionz6TestIsotonicRegression.test_simple_isotonic_regression,   s     HH*':=Qg.A!!Q/uu{{bjj((({{  BJJ...45aV,

I.Q!6bjjIJr+   
increasingTFc                    d}|rt        j                  dd|      nt        j                  dd|      }t        ||      }t        |j                  |       t        |j
                  t        j                  |dz                y )N
   r   r   r5   )r#   linspacer   r   r1   r2   arange)r   r5   nr	   r3   s        r   test_linspacez$TestIsotonicRegression.test_linspace>   s_    $.BKK1a BKK1a4H!!
;q!

BIIa!e$45r+   c                    t        j                  g d      }t        j                  g d      }t        ||      }t        |j                  g d       t        |j
                  g d       t        |j                  g d       t        j                  g d      }t        j                  g d      }t        ||      }t        t        j                  |j                  d	d
       d	       t        |j                  dd  |j                         t        |j
                  |j
                         t        |j                  dd  dz
  |j                  dd         y )N)r   r            ?r?   r?   r      )r@   r   r   r7   	   r      r7   r0   )      ?rC   rC   rA   rA   rA         )@rD   )r   rC   r   )r   r@   r!   r   )r   r   r   r   r   r   r   r?   r?   r?   r   r@   )r@   r   r   r   r   r   r   r7   rA   r   rB   r7   r   r"   r   r   )r#   r$   r   r   r1   r   r2   diff)r   r
   r	   r3   w2y2res2s          r   test_weightsz#TestIsotonicRegression.test_weightsF   s    HH34HH01!!Q/FG[1

L1 XX@AXX=>"2r2q,a0qr
CEE*ckk2AB!+SZZ^<r+   c                    g d}t        |      }g d}t        |j                  |       t        |j                  g d       d}t        j                  dd|d      }d	|z  t        j                  d
|z        z   }t        |      }g d}t        |j                  |       t        j                  t        j                  |j                        dk\        sJ t        t        j                  |j                        t        j                  |             t        | d      }t        |j                   |j                         t        |j                  |j                         y )N)
r   r!   r   r@   r>   r   r   r"   rA   r   )
r   8T笪@rK   rK   rK   rK   rK   8T笪@rL   rL   )r   r   r"   r7   d   r   r   F)numendpointr>   r7   )dg        g_ӽ-?gO*e?g%2g?g;ك?g6Y:tW?g>l&?g?g:ǰ?g{?g!:Fv?gEr/?gk;?$'
"?rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   rP   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@rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   rQ   r8   )r   r   r1   r   r2   r#   r9   sinallrE   sum)r   r	   r3   x_Rr;   res_invs         r   test_against_R_monotonez.TestIsotonicRegression.test_against_R_monotoneX   s   *!!$

 	s#SZZ/KK1!e4EBFF26N"!!$
& 	s# vvbggceen)*** 	suurvvay1 &qbU;
CEE*W^^SZZ0r+   c                    t        j                  dt              }t        j                  dt              }d|j                  _        d|j                  _        t        ||      }t        j                  t        j                  |j                              sJ t        j                  t        j                  |j                              sJ t        j                  t        j                  |j                              sJ y )Nr@   r   Fr0   )r#   r:   floatr.   flags	writeabler   rS   isfiniter1   r   r2   r   r1   r
   r3   s       r   test_readonlyz$TestIsotonicRegression.test_readonly   s    IIau%GGAU#!!!!Q/vvbkk#%%()))vvbkk#++.///vvbkk#**-...r+   c                    t        j                  dt              d d d   }t        j                  dt              d d d   }|j                  j
                  rJ |j                  j                  rJ |j                  j
                  rJ |j                  j                  rJ t        ||      }t        j                  t        j                  |j                              sJ t        j                  t        j                  |j                              sJ t        j                  t        j                  |j                              sJ y )Nr7   r   r@   r0   )r#   r:   rY   r.   rZ   c_contiguousf_contiguousr   rS   r\   r1   r   r2   r]   s       r   test_non_contiguous_arraysz1TestIsotonicRegression.test_non_contiguous_arrays   s    IIb&ss+GGBe$SqS)77''''77''''77''''77''''!!Q/vvbkk#%%()))vvbkk#++.///vvbkk#**-...r+   )__name__
__module____qualname__r   markparametrizer   r*   r#   r%   float32int64int32r4   r<   rI   rW   r^   rb    r+   r   r   r   	   sx   [[!fXtFHVq!fXKMVaSKMAKMVQKMVaV24	
"0#"0: [[YRZZ288(TU[[YRZZ288(TU[[S4.1K 2 V VK [[\D%=96 :6=$61p
//r+   r   )numpyr#   numpy.testingr   r   r   scipy.optimize._pava_pybindr   scipy.optimizer   r   rk   r+   r   <module>rp      s      7  , .^/ ^/r+   