assertFloatsAlmostEqual¶
-
lsst.utils.tests.
assertFloatsAlmostEqual
(testCase, lhs, rhs, rtol=2.220446049250313e-16, atol=2.220446049250313e-16, relTo=None, printFailures=True, plotOnFailure=False, plotFileName=None, invert=False, msg=None, ignoreNaNs=False)¶ Highly-configurable floating point comparisons for scalars and arrays.
The test assertion will fail if all elements
lhs
andrhs
are not equal to within the tolerances specified byrtol
andatol
. More precisely, the comparison is:abs(lhs - rhs) <= relTo*rtol OR abs(lhs - rhs) <= atol
If
rtol
oratol
isNone
, that term in the comparison is not performed at all.When not specified,
relTo
is the elementwise maximum of the absolute values oflhs
andrhs
. If set manually, it should usually be set to eitherlhs
orrhs
, or a scalar value typical of what is expected.Parameters: - testCase :
unittest.TestCase
Instance the test is part of.
- lhs : scalar or array-like
LHS value(s) to compare; may be a scalar or array-like of any dimension.
- rhs : scalar or array-like
RHS value(s) to compare; may be a scalar or array-like of any dimension.
- rtol :
float
, optional Relative tolerance for comparison; defaults to double-precision epsilon.
- atol :
float
, optional Absolute tolerance for comparison; defaults to double-precision epsilon.
- relTo :
float
, optional Value to which comparison with rtol is relative.
- printFailures :
bool
, optional Upon failure, print all inequal elements as part of the message.
- plotOnFailure :
bool
, optional Upon failure, plot the originals and their residual with matplotlib. Only 2-d arrays are supported.
- plotFileName :
str
, optional Filename to save the plot to. If
None
, the plot will be displayed in a window.- invert :
bool
, optional If
True
, invert the comparison and fail only if any elements are equal. Used to implementassertFloatsNotEqual
, which should generally be used instead for clarity. will returnTrue
).- msg :
str
, optional String to append to the error message when assert fails.
- ignoreNaNs :
bool
, optional If
True
(False
is default) mask out any NaNs from operand arrays before performing comparisons if they are in the same locations; NaNs in different locations are trigger test assertion failures, even wheninvert=True
. Scalar NaNs are treated like arrays containing only NaNs of the same shape as the other operand, and no comparisons are performed if both sides are scalar NaNs.
Raises: - AssertionError
The values are not almost equal.
- testCase :