ó \ÐKc@s–dZdZdZdZdZddlZddlZddlmZm Z ddl j j Z ddl TddljjZdd l mZmZmZmZmZmZmZmZed d d „Zd ed„Zdd„Zd„Zdd„Zdd„ZeZ dded„Z!e!Z"deded„Z#ded„Z$ded„Z%d ded„Z&d ded„Z'ded„Z(dd„Z)dS(sËMiscellaneous functions for testing masked arrays and subclasses :author: Pierre Gerard-Marchant :contact: pierregm_at_uga_dot_edu :version: $Id: testutils.py 3529 2007-11-13 08:01:14Z jarrod.millman $ s5Pierre GF Gerard-Marchant ($Author: jarrod.millman $)s1.0s$Revision: 3529 $s5$Date: 2007-11-13 10:01:14 +0200 (Tue, 13 Nov 2007) $iÿÿÿÿN(tndarraytfloat_(t*(tmask_ortgetmaskt masked_arraytnomasktmaskedtfilledtequaltlessgñh㈵øä>g:Œ0âŽyE>c Csûtt|ƒt|ƒƒ}t|ƒ}t|ƒ}|jjdksW|jjdkrmtj||ƒjƒStt|dt d|ƒ|ƒj t ƒ}tt|dt d|ƒdƒj t ƒ} tj t j|| ƒ||t j| ƒƒ} | jƒS(ssReturns true if all components of a and b are equal subject to given tolerances. If fill_value is True, masked values considered equal. Otherwise, masked values are considered unequal. The relative error rtol should be positive and << 1.0 The absolute error atol comes into play for those elements of b that are very small or zero; it says how small a must be also. tOtcopytmaski(RRRtdtypetchartnpR travelRtFalsetastypeRt less_equaltumathtabsolute( tatbt fill_valuetrtoltatoltmtd1td2txtytd((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytapproxs   $**0ic Csõtt|ƒt|ƒƒ}t|ƒ}t|ƒ}|jjdksW|jjdkrmtj||ƒjƒStt|dt d|ƒ|ƒj t ƒ}tt|dt d|ƒdƒj t ƒ}tj tj ||ƒ|ƒd| k} | jƒS(s¤Returns True if a and b are equal up to decimal places. If fill_value is True, masked values considered equal. Otherwise, masked values are considered unequal. R R R ig$@(RRRRRRR RRRRRtaroundtabs( RRtdecimalRRRRRR R!((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytalmost-s  $***tcCs_tt|ƒt|ƒ|ƒx<tt|ƒƒD](}t||||d||fƒq/WdS(s0Asserts the equality of two non-array sequences.s item=%r %sN(t assert_equaltlentrange(tactualtdesiredterr_msgtk((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyt_assert_equal_on_sequences>s&cCs“t|j|jƒxy|jjD]k}tj||ƒtj||ƒ}}|tk r |tk r ttj||ƒtj||ƒƒq q WdS(s9Asserts that two records are equal. Pretty crude for now.N(R(RtnamestoperatortgetitemR(RRtftaftbf((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytassert_equal_recordsEs %,cCsBt|tƒr½t|tƒs9ttt|ƒƒƒ‚ntt|ƒt|ƒ|ƒxa|jƒD]S\}}||kr“td||fƒ‚nt||||d||fƒqbWdSt|tt fƒrút|tt fƒrút ||ddƒSt|t ƒpt|t ƒsLt ||g|ƒ}||ksHt|ƒ‚ndS|t krd|t k s||t kr¬|t k r¬t ||g|dddd ƒ}t|ƒ‚ntj|d td tƒ}tj|d td tƒ}|j|j}}|jd kr2|jd kr2t |jƒ|jƒddƒSt|||ƒS(s&Asserts that two items are equal. s %s not in %ss key=%r %sNR-R'theaderR0RR R tsuboktS(RR (t isinstancetdicttAssertionErrortreprttypeR(R)titemstlistttupleR/Rt build_err_msgRt ValueErrorRtarrayRtTrueRRttolisttassert_array_equal(R+R,R-R.titmsgt actual_dtypet desired_dtype((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyR(Os: &*     cCsªt|tƒr¹t|tƒs9ttt|ƒƒƒ‚ntt|ƒt|ƒ|ƒx]|jƒD]O\}}||krtt|ƒƒ‚nt||||d||fƒqbWdSt|tt fƒrBt|tt fƒrBtt|ƒt|ƒ|ƒx<t t|ƒƒD](}t||||d||fƒqWdSt|t j ƒsft|t j ƒrvt |||ƒSt||g|ƒ}||ks¦t|ƒ‚ndS(s6Raises an assertion error if two items are equal. s key=%r %sNs item=%r %s(R:R;R<R=R>t fail_if_equalR)R?R@RAR*RRtfail_if_array_equalRB(R+R,R-R.RHRI((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyRL|s& &*&$ ic Cs“t|tjƒs$t|tjƒrCt||d|d|d|ƒSt||gd|d|ƒ}tt||ƒ|ƒdkst|ƒ‚ndS(svAsserts that two items are almost equal. The test is equivalent to abs(desired-actual) < 0.5 * 10**(-decimal) R%R-tverboseiN(R:RRtassert_array_almost_equalRBtroundR$R<(R+R,R%R-RNRI((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytassert_almost_equal•s$ c Cstt|ƒt|ƒƒ}t|dtd|dtdtƒ}t|dtd|dtdtƒ}|tkr{|tk s“|tkrÌ|tk rÌt||gd|d|d|dd ƒ}t|ƒ‚ntj||j |ƒ|j |ƒd|d|d|ƒS( sZAsserts that a comparison relation between two masked arrays is satisfied elementwise.R R t keep_maskR8R-RNR7R0RR (RR ( RRRRRRBRCtutilstassert_array_compareR( t comparisonRR R-RNR7RRRI((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyRT¥s$$  c Cs)ttj||d|d|ddƒdS(s5Checks the elementwise equality of two masked arrays.R-RNR7sArrays are not equalN(RTR1t__eq__(RR R-RN((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyRG½s c Cs/d„}t|||d|d|ddƒdS(sKRaises an assertion error if two masked arrays are not equal (elementwise).cSstjt||ƒƒ S(N(RtalltrueR"(RR ((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytcompareÆsR-RNR7sArrays are not equalN(RT(RR R-RNRX((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyRMÄs c s5‡fd†}t|||d|d|ddƒdS(s[Checks the elementwise equality of two masked arrays, up to a given number of decimals.cst||ddˆ ƒS(s<Returns the result of the loose comparison between x and y).Rg$@(R"(RR (R%(s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyRXÏsR-RNR7sArrays are not almost equalN(RT(RR R%R-RNRX((R%s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytassert_array_approx_equalÌsc s5‡fd†}t|||d|d|ddƒdS(s[Checks the elementwise equality of two masked arrays, up to a given number of decimals.cst||ˆƒS(s<Returns the result of the loose comparison between x and y).(R&(RR (R%(s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyRXÙsR-RNR7sArrays are not almost equalN(RT(RR R%R-RNRX((R%s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyROÖsc Cs)ttj||d|d|ddƒdS(s,Checks that x is smaller than y elementwise.R-RNR7sArrays are not less-orderedN(RTR1t__lt__(RR R-RN((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytassert_array_lessàs cCsY|tkr!|tks!t‚n|tkrB|tksBt‚nt||d|ƒdS(s"Asserts the equality of two masks.R-N(RR<RG(tm1tm2R-((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pytassert_mask_equalçs   (*t__doc__t __author__t __version__t __revision__t__date__R1tnumpyRRRtnumpy.core.umathtcoreRt numpy.testingtnumpy.testing.utilsttestingRSRRRRRRR R RER"R&R/R6R(RLtassert_not_equalRQt assert_closeRTRGRMRYROR[R^(((s6/usr/lib/python2.7/site-packages/numpy/ma/testutils.pyts8   :  -