def _compute_stats(self, var1, var2): self._dims_differ = self._compute_dims_differ(var1, var2) self._diffs = None self._sums = None if (self.dims_differ()): self._var1info = VarInfo(var1) self._var2info = VarInfo(var2) self._vars_differ = False self._masks_differ = False self._rmse = float('nan') self._normalized_rmse = float('nan') self._rdiff_max = float('nan') self._rdiff_maxloc = float('nan') self._rdiff_logavg = float('nan') else: self._masks_differ = self._compute_masks_differ(var1, var2) # For performance reasons, create compressed versions of var1 and var2 (var1c, var2c) = compress_two_arrays(var1, var2) # FIXME(wjs, 2016-01-04) Change the following to use pre-computed # abs diff?: check if any abs diff is > 0: self._vars_differ = not np.array_equal(var1c, var2c) self._var1info = VarInfo(var1) if self._vars_differ: self._var2info = VarInfo(var2) else: self._var2info = self._var1info self._rmse = self._compute_rmse(var1c, var2c) self._normalized_rmse = self._compute_normalized_rmse(var1c, var2c) self._rdiff_max, self._rdiff_maxloc, self._rdiff_logavg = self._compute_rdiff_stats(var1c, var2c)
def _compute_stats(self, var1, var2): self._dims_differ = self._compute_dims_differ(var1, var2) self._diffs = None self._sums = None if (self.dims_differ()): self._var1info = VarInfo(var1) self._var2info = VarInfo(var2) self._vars_differ = False self._masks_differ = False self._rmse = float('nan') self._normalized_rmse = float('nan') self._rdiff_max = float('nan') self._rdiff_maxloc = float('nan') self._rdiff_logavg = float('nan') else: self._masks_differ = self._compute_masks_differ(var1, var2) # For performance reasons, create compressed versions of var1 and var2 (var1c, var2c) = compress_two_arrays(var1, var2) # FIXME(wjs, 2016-01-04) Change the following to use pre-computed # abs diff?: check if any abs diff is > 0: self._vars_differ = not np.array_equal(var1c, var2c) self._var1info = VarInfo(var1) if self._vars_differ: self._var2info = VarInfo(var2) else: self._var2info = self._var1info self._rmse = self._compute_rmse(var1c, var2c) self._normalized_rmse = self._compute_normalized_rmse(var1c, var2c) self._rdiff_max, self._rdiff_maxloc, self._rdiff_logavg = self._compute_rdiff_stats( var1c, var2c)
def test_compressTwoArrays_withOneUnmaskedMAArray(self): var1 = np.ma.array([[1, 2], [3, 4]], mask=[[True, False], [False, True]]) var2 = np.ma.array([[5, 6], [7, 8]]) (var1c, var2c) = compress_two_arrays(var1, var2) self.assertArraysEqual(var1c, np.array([2, 3])) self.assertArraysEqual(var2c, np.array([6, 7]))
def test_compressTwoArrays_withUnmaskedMAArrays(self): var1 = np.ma.array([[1, 2], [3, 4]]) var2 = np.ma.array([[5, 6], [7, 8]]) (var1c, var2c) = compress_two_arrays(var1, var2) self.assertArraysEqual(var1c, np.array([1, 2, 3, 4])) self.assertArraysEqual(var2c, np.array([5, 6, 7, 8]))
def test_compressTwoArrays_withDifferentMasks(self): var1 = np.ma.array([[1,2],[3,4]], mask=[[False,False],[False,True]]) var2 = np.ma.array([[5,6],[7,8]], mask=[[True,False],[False,False]]) (var1c, var2c) = compress_two_arrays(var1, var2) self.assertArraysEqual(var1c, np.array([2,3])) self.assertArraysEqual(var2c, np.array([6,7]))
def test_compressTwoArrays_withUnmaskedMAArrays(self): var1 = np.ma.array([[1,2],[3,4]]) var2 = np.ma.array([[5,6],[7,8]]) (var1c, var2c) = compress_two_arrays(var1, var2) self.assertArraysEqual(var1c, np.array([1,2,3,4])) self.assertArraysEqual(var2c, np.array([5,6,7,8]))