L i?VddlZddlZddlZddlZddlZddlmZddlmZm Z m Z m Z ddl Z ddl m ZddlmZmZmZmZmZmZmZmZmZmZmZGddZy)N)pi)assert_array_almost_equal assert_equal assert_warnsassert_allclose)raises) DataModelODRRealDataOdrStop OdrWarning multilinear exponential unilinear quadratic polynomialc>eZdZdZdZej jdZdZ dZ dZ dZ dZ d Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZej j=dddZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&y$)%TestODRc\tttddtttddy)N) assert_raises ValueErrorr r )selfs ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/odr/tests/test_odr.py test_bad_datazTestODR.test_bad_datasj$1-j(Aq1c|d|z|dzSNrrrBxs rempty_data_funczTestODR.empty_data_funcstAv!}rcddg}t|j}tgg}ttt |||t gg}ttt |||y)N{Gz?beta0)r r%r rrr r )rr*linear empty_dats rtest_empty_datazTestODR.test_empty_datasZs t++,RL Ze 5R$ Ze 5rc|d|dtjtj|d|zdz dzz}|S)Nrrr?)nppowerexp)rr#r$rets r explicit_fcnzTestODR.explicit_fcn.s>dQqTBHHRVVAaDF^c%91=== rcjtj|d|z}|ddz|dz z|dz|z}|S)Nrr@r/)r0r2)rr#r$eBxr3s r explicit_fjdzTestODR.explicit_fjd2s@ffQqT!VndSjCG$qt+c1 rctj|d|z}tjtj|jdtj |dz d|ddz|dz z|z|zg}|S)Nrr/rr6)r0r2vstackonesshaper1)rr#r$r7ress r explicit_fjbzTestODR.explicit_fjb7stffQqT!Vnii-#c'1-1c3s7+C/134 rc 6t|j|j|jt dd}t gdgd}t ||gdgd }|jd |jd d d |j}t|jtjgdt|jtjgdt|jtjgdgdgdgy)NzSample Explicit ModelzODRPACK UG, pg. 39nameref)fjacbfjacdmeta) r(r(@@g@$@g0@g:@>@gA@g@A@Y@) gē@gfffff@g@g@g@g33333@gT@g@gfffff@g33333@g@g@)p@gI皙) rrrrrrrrrrrrr*ifixxrderivr)inititerfinal)g 8“@gLA[KgxQ})gֳ?g1X?gy?)ggC?NM=y7׿ J)rUgq?]Ff_)rVrWgO >)r r4r?r8dictr r set_job set_iprintrunrbetar0arraysd_betacov_beta)r explicit_mod explicit_dat explicit_odrouts r test_explicitzTestODR.test_explicit>s   ####2.0  K./ <=R68 1%QQa8 ! HH HH) * " KK HHP Q  " LL HH*** + , rc|dtj|d|dz dzd|dz|d|dz z|d|dz zz|dtj|d|dz dzzdz S)Nrrr6rr/)r0r1r"s r implicit_fcnzTestODR.implicit_fcnds!RXXad1Q4i++AaD!A$qt)$ad1Q4i01!RXXad1Q4i++,.12 3rc t|jdtdd}tgdgdgd}t ||gd }|j }t |jtjgd t |jtjgd t|jtjgd gd gdgdgdgddy)NrzSample Implicit ModelzODRPACK UG, pg. 49rA)implicitrF)?g333333?g?g(\?g(\@zG@gQ@rlg{Gz@gףp= ?gq= ףp??gQѿg(\g(\gffffffgg ףp= gq= ףp gQ )gQg333333gffffffgRQgzG gggg(\gzGgHzG(\rogp= ףggQgg(\gq= ףp)rngg ףp= ?r'g{Gz?r))g{3gzJrgJ/k?g&Z薞?gkj?)g?g29?g3"͇p?g[=f?gx#+l?)g:\@8%??'M['%GRR?)rpgdbb@gR g>)rtolatol) r rhrXr r r[rr\r0r]r^rr_)r implicit_mod implicit_dat implicit_odrrcs r test_implicitzTestODR.test_implicitis   2.0  6 =>   <02  ! HH HH8 9 " KK HH8 9  LL HH*****+ ,D# rc |dkjrtt|dzdz }tj|}tj |}tj dtz|ztj|d z|d}tj||zd||zz}|d|dz tj tjtj d||zzdtj ||zdz|d z}tj|d|tj|d|zzz|tj |d|zzg} | S) Nr(rfr6rr/rrrg) anyr rr0cossinr1r2arctan2sqrtr;) rr#r$thetacthetasthetaomegaphirr3s r multi_fcnzTestODR.multi_fcns? G==?M1Q4 Bq1.!5jj%,#f *<> qTAaD[BHHRWWRXXcE&L6H!-L XXeFlA &.'&(*+A$0 0ii1"&&1c"2 22266!A$s(++-. rc rt|jtdd}tjgd}tjgdgdg}t |}tj dd|ft }tj|t }tj |t }d |d d ddf<d x|d d ddf<|d d ddf<d|d d ddf<t|D]e}||dkrd ||<n8||dkrn/||dkrd||<n!||dkrd||<n||dkrd||<nd||<||dk(s ||dk(sZd|dddd|f<gt||dtj|dz |} t| |gd||} | jd d | j} t!| j"tjgdt!| j$tjgdt!| j&tjgd gd!gd"gd#gd$gy)%NzSample Multi-Response ModelzODRPACK UG, pg. 56rArF)rJgI@gQ@rKb@gi@gr@g@@g@@@rLg@@gp@g@gX@@gL@g@gL@gj@g@j@gOA)gzG@g^I @gI +@gx&@g~jt@gS@gOn@gʡE@gNbX9 @gMb @gRQ @gX9v @gw/ @gMb @g%C @g/$ @gFx@gZd;@gFx@g5^I @gNbX9@gMb@gOn@)g rh?gK7A`?gMb?gA`"?gh|?5?g r?gDl?g5^I ?g-?灕Cl?gjt?rgQ?g"~?g|?5^?gRQ?gQ?gCl?gB`"?gK?g/$?g/$?gn?rdtypeg|@rgrgf@rKrrg9@rg@rg@gAr(g-C6?wdwe)@r6rH皙?rk)r*delta0rO)rQdel_init)g@gNUiw@gz @gR?gFu?)gfkl,?g1w?gAS?g@L*?g?)g?#0z?_n=m?-Mu?G: xgTÚ?)rgaLJ z?4?hh@AxxABxx>?cdt4#st5d&&T7G-HIE5B0VU2b'2iik! HH HH(*=> ?  " KK HH(*<= >  " LL HH)+>?#%679 : zz|! II HH)+>? @  " LL HH(*<= >  " MM HH)+>?#%78: ; rc |d|dz|dztjtj||z|d|dzz dtj|d|zdzz S)Nrrrr6)r0rr1)rr\r$s rlorentzzTestODR.lorentz*srQQQ'"''"((1Q3 GDGO< 3"$&HHT!WQY$<3=+>> ?rc tjdgdz}tjgd}tgdgd||}t|jt d }t ||d }|j}t|jtjgd t|jtjgd t|jtjgdgdgdgy)Ng(\?)gdOO?gO?g& 0G?gpt͘ (G?g^"G?geG?genBF?g8=?g-=?g`EE?g,!WsE?g01cE?g&-}Ԭ>g;vQ?gPmQ?gGus#T?gWUW?g>c?)gׁsF@g`TR'@gxN@gs@g3@gN#-@g ϛ@gW[N@gp:@@g  @gs,&6 @g @g2c @gHIOG @g? @g; @gx&q @g ҌEY @)igt@iig|@ig"@g@iibg@igL@g,@ig@g(z@g8q@rz Lorentz Peakrr)rrgffffff@r))gA5[Z@gO#?gF=@)g(1 ?gȕ6?gQ.q;0?)g\j?EGp`)rg3<n>G !fc>)rrgq[cсE]>) r0r]r r rrXr r[rr\r^r_)rl_syl_sxl_datl_modl_odrrcs r test_lorentzzTestODR.test_lorentz.sxxb!xxNO  0 A dll>)BCE5(89iik! HH HH) * " KK HH) * " LL HH*** + , rcd}ddg}tjdd}|||}t|}t||dd}t ||ddg}|j }t |jd y) Nc|d|z|dzSr r!)cr$s rr+z(TestODR.test_ticket_1253..linearWsQ46!A$; rr6@r r/rr)r)r0linspacer r r r[rinfo) rr+rr$ymodeldatajobresults rtest_ticket_1253zTestODR.test_ticket_1253Vsq #J KK2  1aLf AqSS)$c3Z0V[[!$rcgd}gd}tjtj|ttj|tf}t tj||fd|}t dd}t||tjd g }|j}t||tjd g| }|j} t|j| jy) N)gGzgGzgMbPgRQ?gGz?)gףp= @g)\(?gMbP?gV-?g ףp= @rr)rfixc:|dddf|d|dddfdzzz S)Nrrr6r!)r\r$s rz$TestODR.test_ifixx..ks(a1gQ!AqD'2+0E&ErT)rjr/r)rN) r0r; zeros_liker ones_liker r r r]r[rr\) rx1x2rrrodr1sol1odr2sol2s r test_ifixxzTestODR.test_ifixxfs / -iir5r||Bc7RSTBIIr2h'1#6EPTU4bhhtn5xxz4bhhtnC@xxzTYY *rctjgd}d}d}tjgdgdg}d}tjgdgdg}tjgd }d }d } d } tjd d|} tjd d|} tj| | g} ||| }| |z}||z}t|| | }t ||||}t ||d|zd}|j d|j}t|jd t|j|y)N)r/gffffff@g?rng?rkr{Gz?) g 'D?g"u?gsfZ?gt?g Yqog?s?gJf?g>xF}gvIxg!͒&|) ggÚ рgz7X0ت`gN77?ga5|gLl TZj?g^1;e?g<%gwg%.hgܾ#ń?g?) g!Kr?gR#?g)BgH ]N?gK?gNr}?gt% ?g')vU~g^'2g?)) gÊ?giP?gލho?g ʐ:l?gM*gD3g\`gg֓А?g3p~?ghϬ)g>@g k_gʖ 6`@g.funcsa47Qq!tW,,tAw1a4/@@Ba47Qq!tW,,tAw1a4/@@B99b"X& &rc Xtj|d}tj|}tj|}tj||dddf|dddf|||g}tj|||||dddf|dddfg}tj ||fS)Nrr)r0r=rr<r]stack)r\r$nr_measrr<dy0dy1s r df_dbeta_odrz/TestODR.test_ticket_11800..df_dbeta_odrshhqk!nGHHW%E777#D((D!AqD'1QT7E5%HIC((E5%qAw!Q$HIC88S#J' 'rctj|d}tj|}tj|d|z|d|zg}tj|d|z|d|zg}tj||fS)Nrrrgr)r0r=r<r]r)r\r$rr<rrs r df_dx_odrz,TestODR.test_ticket_11800..df_dx_odrszhhqk!nG777#D((DGdNDGdN;rctjdd}dd|zz}t||}t|t}|j }t |jddgy)Nr(rGrI)r0rr r rr[rr\rr$rrroutputs rtest_multilinear_modelzTestODR.test_multilinear_modelsS KKS ! 37NAqzdK(!&++c{;rctjdd}dtjd|zz}t||}t |t }|j }t|jddgy)Nr(rGg$rk) r0rr2r r rr[rr\rs rtest_exponential_modelzTestODR.test_exponential_models\ KKS ! BFF3q5M !AqzdK(!&++s|.funcsFBQ; rrgrrrrr)r)fit_typesd)r0arangewherefullr r r rYr[work_indrr^workr) rrn_datar$rx_erry_err linear_model real_datarrcsd_inds r test_work_indzTestODR.test_work_inds   IIf  HHQUAGQW -$$T{ Qe6 ic3Z@#kkmd#!#++"%((6&3s{{;K2K"L NrTzJFortran I/O prone to crashing so better not to run this test, see gh-13127)reasoncd}t|}ttjddtjdz}t j }t jj|d}t jj|d} t||ddg||jt||ddg||d jtj|y #tj|wxYw) z( Verify fix for gh-1892 c|d|d|zzSr r!br$s rrz0TestODR.test_output_file_overwrite..funcQ4!A$(? "rr z error.datz report.datr )r*errfilerptfileT)r*rDrE overwriteN) r r r0r0tempfilemkdtempospathjoinr r[shutilrmtree)rrprtmp_direrror_file_pathreport_file_paths rtest_output_file_overwritez"TestODR.test_output_file_overwrites  # $KBIIbM2 " #56""$'',,w <77<<> # aRy/( **-#% aRy/(D ::=#% MM' "FMM' "s AC00Dcxd}t|}|jddt|jdddy)Nc|d|d|zzSr r!r?s rrz1TestODR.test_odr_model_default_meta..funcrArzSample Model MetaODRPACKrA)r set_metarrF)rrrNs rtest_odr_model_default_metaz#TestODR.test_odr_model_default_metas7 # $K + ;QVV&9)LMrc d}d}tj|}tj|dz|dz|dz }tj|d}tj|d}t |}t ||||}t |||d} t |||dg} t |||tjd|fd} t |||dgg} t |||tjdd|fd} || | | | | fD]J}t ||d d gtj|d  }|jd d |jLy)zA Verify fix for gh-18739 where del_init=1 fails. c|d|d|zzSr r!r?s rrz.TestODR.test_work_array_del_init..func rArrgrrrrr)rcovyrrM)r*rr)r.rN) r0r0r1r2r r r rYr[)rrr5r$rr6r7r8rd0rd1rd2rd3rd4rd5rdrs rtest_work_array_del_initz TestODR.test_work_array_del_inits@ # IIf  HHQUAGQW -$$T{ q!%0q!#.q!3%0q!"''1f+s*CDq!dVH5q!BGGQ6ND,IJS#sC0 B"l3*!#!68G OOQO 3 KKM  rctjdd}d|zdz}t||}tj|}~tj |yr$)r0rr pickledumpsloadsrr$rr obj_pickles rtest_pickling_datazTestODR.test_pickling_data9sG KKS ! !GcMAqz\\$'  Z rctjdd}d|zdz}t||}tj|}~tj |yr$)r0rr rdrerfrgs rtest_pickling_real_datazTestODR.test_pickling_real_dataBsG KKS ! !GcM1~\\$'  Z rc`tjt}tj|yr*)rdrerrf)rrhs rtest_pickling_modelzTestODR.test_pickling_modelKs\\),  Z rctjdd}d|zdz}tt||t}t j |}~t j|yr$)r0rr r rrdrerf)rr$rrrhs rtest_pickling_odrzTestODR.test_pickling_odrOsN KKS ! !GcMd1aj),\\'*  Z rctjdd}d|zdz}tt||tj }t j|}~t j|yr$) r0rr r rr[rdrerf)rr$rrrhs rtest_pickling_outputzTestODR.test_pickling_outputXsT KKS ! !GcMT!QZ+//\\&)  Z rN)'__name__ __module__ __qualname__rr%pytestmark thread_unsafer-r4r8r?rdrhrrrrrrrrrrrrr"r%r'r;skipifrRrWrbrirkrmrorqr!rrrrs2  [[ 5 5 " L3 . d H Z, b?& P % +F?P<=E;@N0 [[&JK#K#*N:!!!!!rr)rdrGrLrInumpyr0r numpy.testingrrrrrurr scipy.odrr r r r r rrrrrrrr!rrr|sI  ,,*#### L !L !r