B <ÓFdè<ã@sddlmZmZmZddlZddlmZddlZddlm Z ddl m m Z ddl mZejddejZGdd „d eƒZed krd Zd eZd \ZZxteddƒD]fZdeZe ee¡ eed¡Ze e¡Zededƒee deƒƒedededfƒq¦WdS)é)ÚdivisionÚabsolute_importÚprint_functionN)Úreduce)Úfloat_)Ú build_err_msgÚignore)Úallc@sxeZdZdd„Zddd„Zddd„Zd d „Zd d „Zd d„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS) Ú ModuleTestercCs ||_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j |_ t |_ |j |_ |j |_ |j |_ |j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_y |j|_Wntk rþ|jj|_YnXg|_dS)N)ÚmoduleÚallequalÚarangeÚarrayÚ concatenateÚcountÚequalÚfilledÚgetmaskZ getmaskarrayÚidÚinnerÚ make_maskÚmaskedÚ masked_arrayÚ masked_valuesÚmask_orÚnomaskÚonesÚouterÚrepeatÚresizeÚsortÚtakeÚ transposeÚzerosZMaskTypeÚumathÚAttributeErrorÚcoreZ testnames)Úselfr ©r(úL/opt/alt/python37/lib64/python3.7/site-packages/numpy/ma/timer_comparison.pyÚ__init__s@ zModuleTester.__init__ÚTc Cs,| |¡}| |¡}| | |¡| |¡¡} | |j|| d|¡}| |j|| d|¡}|jjdkr¢| t¡}t|t j ƒr”|j dkr”d|t   |¡<nt   |¡r¢d}|jjdkrì| t¡}t|t j ƒrÞ|j dkrÞd|t   |¡<nt   |¡rìd}y|j dkp|j dkp|j |j k} | sLt||g|d|j |j f|dd} | sLt| ƒ‚|||ƒ} | |jk rv|rv|j| | d} t| tƒrŽ| } dg} n|  ¡} |  ¡} |  ¡} | sòd d |  d¡t| ƒ}t||g|d |f|dd} | sòt| ƒ‚Wn2tk r&t||g||dd} t| ƒ‚YnXd S) zZ Assert that a comparison of two masked arrays is satisfied elementwise. )ÚmaskÚOérr(z (shapes %s, %s mismatch))ÚxÚy)ÚheaderÚnamesédgY@z (mismatch %s%%)N)rrrrÚdtypeÚcharÚastyperÚ isinstanceÚnpZndarrayÚsizeZisnanÚshaperÚAssertionErrorrÚboolZravelr ÚtolistrÚlenÚ ValueError)r'Z comparisonr/r0Úerr_msgr1Z fill_valueÚxfZyfÚmZcondÚmsgÚvalZreducedÚmatchr(r(r)Úassert_array_compare5s^        $    z!ModuleTester.assert_array_comparecCs|j|j|||dddS)zH Checks the elementwise equality of two masked arrays. zArrays are not equal)r@r1N)rFr)r'r/r0r@r(r(r)Úassert_array_equalmszModuleTester.assert_array_equalcCs\t ddddtddddddddg ¡}d d d d d d d d d d d d g }|j||d }|d d S) z! Tests creation gð?gÀg@g@g@g$Àg$@g@r.r)r,N)r8rÚpir)r'r/rBÚxmr(r(r)Útest_0us&zModuleTester.test_0c Csft ddddtddddddddg ¡}t dd ddd d d dddd dg ¡}d d d d d d d d d d d d g }d d d d d d d d d d d d g }|j||d}|j||d}t |d|¡}| d¡|| d ¡ ¡sÊt‚|j }|j t dd„|ƒksèt‚|  |¡t |ƒt dd„|ƒkst‚xRdD]J}||_ ||_ ||_ ||_ ||_ |  |¡t |ƒt dd„|ƒkst‚qWdS)z! Tests creation gð?gÀg@g@g@g$Àg$@g@ggð¿gÀr.r)r,g@Œµx¯DcSs||S)Nr()r/r0r(r(r)Úóz%ModuleTester.test_1..cSs||S)Nr()r/r0r(r(r)rKrL))éé)éécSs||S)Nr()r/r0r(r(r)rK˜rLN)r8rrHrÚwhereZset_fill_valuerÚanyr;r:r9rrr>) r'r/r0Úm1Úm2rIZymrAÚsr(r(r)Útest_1s&&" & zModuleTester.test_1c Csìt ddddg¡}|j|ddddgd}|j|ddddgd}| |¡}t|ƒt|ƒt|dƒt|dƒkstt‚|d|dksˆt‚d|d<d|d<| ||¡d|dd…<d|dd…<|j|d<|j|dd…<||d d …<|j|d<| ddddgddddg¡|d d …<| ddddgddddg¡|d d …<t  d ¡d }|  |d ¡}| dd ddgt ¡}t dd ddgt ¡}|d|d|dd…j dksœt‚dddddg}|  |¡}|  |¡}||ksÌt‚|j |dd}||k sèt‚d S)z2 Tests conversions and indexing. r.rPrMrNr)r,é écNégð?g@Zhello)r)Úcopy)r8rÚstrÚreprÚtyper;rGrrr rÚobjectr:r) r'Zx1Zx2Zx3Úx4ÚnrBrTÚm3r(r(r)Útest_2šs@       $$   zModuleTester.test_2c Csê| d¡}|j|d<| |d¡}| | ||g¡|¡s:t‚| | |¡ddddddddg¡s`t‚|j|ddd}| |ddddddddg¡|j|ddd}| ||¡s¬t‚|jddd}| ||¡sÊt‚| dd¡}| ||¡sæt‚d S) z& Tests resize/repeat rMrP)érr.)rPrPrPrP)ÚaxisrNN) r rrr rr;rrrG)r'r_Zy4Zy5Zy6Zy7Zy8r(r(r)Útest_3Äs   & zModuleTester.test_3c CsN| d¡}t d¡}|j|dd…<| ddd¡}| ddd¡}| t |d¡| |d¡¡s^t‚| t |dd¡| |dd¡¡s‚t‚| t |  |d ¡|  |d ¡¡| ||¡¡s²t‚| t  |  |d ¡|  |d ¡¡|  ||¡¡sât‚|  d dd ddgt ¡}|j|d<| |d ddg¡}|d d ks&t‚|ddks8t‚|ddksJt‚d S) zB Test of take, transpose, inner, outer products. érYrOrPrNrM)rPrr.r.rÚabcÚdefN) r r8rÚreshaper r"r;r!rrrrr^)r'r/r0Útr(r(r)Útest_4×s"   $ zModuleTester.test_4cCs| d¡}| d¡}| d¡}|j|d<|d7}| ||d¡sDt‚|d7}| ||d¡s`t‚| d¡}| d¡}|j|d<|d8}| ||d¡sšt‚|d8}| ||d¡s¶t‚| d¡d}| d¡d}|j|d<|d9}| ||d¡søt‚|d9}| ||d¡st‚| d¡d}| d¡d}|j|d<|d}| ||¡sVt‚|d}| ||¡spt‚| d¡d}| d¡d}|j|d<|d}| ||d¡s´t‚|| d¡}| || d¡¡| d¡ t¡}| d¡}|j|d<|d7}| ||d¡st‚dS)z* Tests inplace w/ scalar é rPr.gð?g@)rlN)r rr r;rGrr6r)r'r/r0rIr(r(r)Útest_5îsR            zModuleTester.test_5cCs6|jdtd}| d¡}|jdtd}|j|d<|j}|jdtd}|j|d<||7}||7}| |||¡srt‚| |||¡s†t‚| |j| ||j¡¡s¢t‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||8}||8}| |||¡s t‚| |||¡s"t‚| |j| ||j¡¡s@t‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||9}||9}| |||¡sªt‚| |||¡sÀt‚| |j| ||j¡¡sÞt‚|jdtd}|jdtd}|j|d<|j}|jdtd}|j|d<||}||}dS)z) Tests inplace w/ array rl)r4rPéÿÿÿÿN)r rrr,r r;r)r'r/r0rIrBÚar(r(r)Útest_6"sT         zModuleTester.test_6c Csî|jdddtdgdddgdgdd|jdddtdgdddgdgddf}xdD]ˆ}yt|j|ƒ}Wntk rtt|ƒ}YnXt|j|ƒ}|d |j…}||Ž}||Ž}| |  d¡|  d¡|¡| |j |j ¡q^Wd S) z Tests ufuncgð?rrnrPr.rO)r,)ZsqrtÚlogZlog10ZexpÚ conjugateN) rrHÚgetattrr$r%Ú fromnumericr ZninrGrZ_mask)r'ÚdÚfZufZmfÚargsZurZmrr(r(r)Útest_7Us*.  zModuleTester.test_7c Cs(|jddddgddddgd}| d|j|dd¡| d|j|ddddgd ¡|j|ddddgdd \}}| d|¡|d ks†t‚|j|dd…<|j|dd|jks¬t‚|jddddgddddgd}| d d ¡}|j|dd…df<| |j|ddddg¡|j|ddd|jks t‚| ddg|j|dd¡|j|ddd \}}| |ddg¡ddddddg}ddddddgddddddgg}| d¡}| |j|ddd¡| |j|d|dd¡| | d¡d| d¡g¡}| | |d¡tj  t d¡¡dd¡| |j|ddt d¡dd¡| |j|dd|j|dd|j|dddg¡| |j|d|d d¡| |j|d|dddddd dg¡| |j|dd|j|dd|j|dddg¡|  d¡}ddddddg} ddddddgddddddgg} |  d¡} ddddddg} | |j|  ||¡ddd¡| |j|  || ¡ddd¡| |j|  || ¡ddd¡| |  |j|  || ¡dd¡d¡|  || ¡} | | | d¡d¡| |j| ddddddd dg¡| |j| ddddg¡| |j| d|dddddd dg¡dS)Nggð?g@g@r.r)r,)rd)Úweights)ryÚreturnedg@rP)rdrzrOg@)rdryg(@g«ªªªªª @g$@gÀX@g@g@)rrGZaverager;rrir r8Úaddrr#rrr)r'ZottÚresultZwtsZw1Zw2r/r0rSrTraZm4Zm5Úzr(r(r)Útest_99wsT     *$2$2   $ "zModuleTester.test_99cCs*| d¡}|j|dd…<| ddd¡}dS)NrfrYrOrPrNrM)r rri)r'r/r(r(r)Útest_A¤s zModuleTester.test_AN)r+r+T)r+)Ú__name__Ú __module__Ú __qualname__r*rFrGrJrVrbrerkrmrprxr~rr(r(r(r)r s" 7  *43"-r Ú__main__zNfrom __main__ import ModuleTester import numpy tester = ModuleTester(module) zimport numpy.ma.core as module )rlrlr.rcztester.test_%i()rlz#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : %.3f - %.3f)!Z __future__rrrZtimeitÚ functoolsrZnumpyr8rZnumpy.core.fromnumericr&rtZnumpy.testing.utilsrZseterrrHr^r r€Z setup_baseZ setup_curZnrepeatZnloopÚrangeÚiÚfuncZTimerrZcurr ÚprintÚevalr(r(r(r)Ús.