From ebeb81931db65e4c186d453c8722c62eacb5042d Mon Sep 17 00:00:00 2001
From: "(no author)" <(no author)@8a9318a1-56ba-4d59-b755-99d26321be01>
Date: Wed, 29 Jul 2009 16:07:48 +0000
Subject: [PATCH] correcting some minor details in the statistics generation
 and some formatting

git-svn-id: https://svn.ssec.wisc.edu/repos/glance/trunk@45 8a9318a1-56ba-4d59-b755-99d26321be01
---
 pyglance/glance/compare.py |  5 ++++-
 pyglance/glance/delta.py   | 16 +++++++++-------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/pyglance/glance/compare.py b/pyglance/glance/compare.py
index 9b3d356..4dd931a 100644
--- a/pyglance/glance/compare.py
+++ b/pyglance/glance/compare.py
@@ -475,13 +475,16 @@ def _check_pass_or_fail(varRunInfo, variableStats, defaultValues) :
     if not (epsilonTolerance is None) :
         failed_fraction = variableStats['Numerical Comparison Statistics']['diff_outside_epsilon_fraction']
         didPass = failed_fraction <= epsilonTolerance
+    
     # check to see if it failed on nonfinite data
     if not (nonfiniteTolerance is None) :
         non_finite_pts = variableStats['Finite Data Statistics']['finite_in_only_one_count']
         non_finite_pts = non_finite_pts + variableStats['Missing Value Statistics']['common_missing_count']
         non_finite_pts = non_finite_pts + variableStats['NaN Statistics']['common_nan_count']
         non_finite_fraction = float(non_finite_pts) / float(variableStats['General Statistics']['num_data_points'])
-        passedNonFinite = non_finite_fraction <= nonfiniteTolerance 
+        passedNonFinite = non_finite_fraction <= nonfiniteTolerance
+        
+        # combine the two test results
         if (didPass is None) :
             didPass = passedNonFinite
         else :
diff --git a/pyglance/glance/delta.py b/pyglance/glance/delta.py
index 1732dfa..29f8de6 100644
--- a/pyglance/glance/delta.py
+++ b/pyglance/glance/delta.py
@@ -135,9 +135,9 @@ def _get_nan_stats(a, b) :
     the return value will be a dictionary of statistics
     """
     # find the nan values in the data
-    a_nans = isnan(a)
+    a_nans = ~isfinite(a)
     num_a_nans = sum(a_nans)
-    b_nans = isnan(b)
+    b_nans = ~isfinite(b)
     num_b_nans = sum(b_nans)
     num_common_nans = sum(a_nans & b_nans)
     
@@ -179,7 +179,7 @@ def _get_missing_value_stats(a_missing_mask, b_missing_mask) :
     
     return missing_value_stats
     
-def _get_finite_data_stats(a_is_finite_mask, b_is_finite_mask) :
+def _get_finite_data_stats(a_is_finite_mask, b_is_finite_mask, common_ignore_mask) :
     """
     Get a list of statistics about finite data values in data sets a and b,
     given masks describing the positions of the finite data in each file (such masks
@@ -190,7 +190,7 @@ def _get_finite_data_stats(a_is_finite_mask, b_is_finite_mask) :
     num_a_finite = sum(a_is_finite_mask)
     num_b_finite = sum(b_is_finite_mask)
     num_common_finite = sum(a_is_finite_mask & b_is_finite_mask)
-    num_finite_in_only_one = sum(a_is_finite_mask ^ b_is_finite_mask) # use an exclusive OR
+    num_finite_in_only_one = sum((a_is_finite_mask ^ b_is_finite_mask) & (~ common_ignore_mask)) # use an exclusive OR
     
     # make the assumption that a and b are the same size and only use the size of a's mask
     total_num_values = a_is_finite_mask.size
@@ -290,7 +290,7 @@ def summarize(a, b, epsilon=0., (a_missing_value, b_missing_value)=(None,None),
     comparison_stats = _get_numerical_data_stats(a, b, d, finite_mask, outside_epsilon, additional_statistics) 
     nan_stats = _get_nan_stats(a, b)
     missing_stats = _get_missing_value_stats(amis, bmis)
-    finite_stats = _get_finite_data_stats(finite_a_mask, finite_b_mask) 
+    finite_stats = _get_finite_data_stats(finite_a_mask, finite_b_mask, ignoreMask) 
     
     out = {}
     out['NaN Statistics'] = nan_stats
@@ -326,8 +326,10 @@ STATISTICS_DOC = {  'general': "Finite values are non-missing and finite (not Na
                     'b_finite_fraction': "fraction of finite values in B (out of all data points in B)",
                     'common_finite_count': "number of finite values in common between A and B",
                     'common_finite_fraction': "fraction of finite values in common between A and B",
-                    'finite_in_only_one_count': "number of values that changed finite-ness between A and B",
-                    'finite_in_only_one_fraction': "fraction of values that changed finite-ness between A and B",
+                    'finite_in_only_one_count': "number of values that changed finite-ness between A and B; " +
+                                                "only the common spatially valid area is considerd for this statistic",
+                    'finite_in_only_one_fraction': "fraction of values that changed finite-ness between A and B; " +
+                                                "only the common spatially valid area is considerd for this statistic",
                     
                     # missing data value statistics
                     'a_missing_count': "number of values flagged missing in A",
-- 
GitLab