LSSTApplications  10.0-2-g4f67435,11.0.rc2+1,11.0.rc2+12,11.0.rc2+3,11.0.rc2+4,11.0.rc2+5,11.0.rc2+6,11.0.rc2+7,11.0.rc2+8
LSSTDataManagementBasePackage
Functions | Variables
lsst.pex.config.comparison Namespace Reference

Functions

def getComparisonName
 
def compareScalars
 
def compareConfigs
 

Variables

tuple __all__ = ("getComparisonName", "compareScalars", "compareConfigs")
 

Function Documentation

def lsst.pex.config.comparison.compareConfigs (   name,
  c1,
  c2,
  shortcut = True,
  rtol = 1E-8,
  atol = 1E-8,
  output = None 
)
Helper function for Config.compare; used to compare two Configs for equality.

If the Configs contain RegistryFields or ConfigChoiceFields, unselected Configs
will not be compared.

@param[in] name       Name to use when reporting differences
@param[in] c1         LHS config to compare
@param[in] c2         RHS config to compare
@param[in] shortcut   If True, return as soon as an inequality is found.
@param[in] rtol       Relative tolerance for floating point comparisons.
@param[in] atol       Absolute tolerance for floating point comparisons.
@param[in] output     If not None, a callable that takes a string, used (possibly repeatedly)
                      to report inequalities.

Floating point comparisons are performed by numpy.allclose; refer to that for details.

Definition at line 64 of file comparison.py.

64 
65 def compareConfigs(name, c1, c2, shortcut=True, rtol=1E-8, atol=1E-8, output=None):
66  """Helper function for Config.compare; used to compare two Configs for equality.
67 
68  If the Configs contain RegistryFields or ConfigChoiceFields, unselected Configs
69  will not be compared.
70 
71  @param[in] name Name to use when reporting differences
72  @param[in] c1 LHS config to compare
73  @param[in] c2 RHS config to compare
74  @param[in] shortcut If True, return as soon as an inequality is found.
75  @param[in] rtol Relative tolerance for floating point comparisons.
76  @param[in] atol Absolute tolerance for floating point comparisons.
77  @param[in] output If not None, a callable that takes a string, used (possibly repeatedly)
78  to report inequalities.
79 
80  Floating point comparisons are performed by numpy.allclose; refer to that for details.
81  """
82  assert name is not None
83  if c1 is None:
84  if c2 is None:
85  return True
86  else:
87  if output is not None:
88  output("LHS is None for %s" % name)
89  return False
90  else:
91  if c2 is None:
92  if output is not None:
93  output("RHS is None for %s" % name)
94  return False
95  if type(c1) != type(c1):
96  if output is not None:
97  output("Config types do not match for %s: %s != %s" % (name, type(c1), type(c2)))
98  return False
99  equal = True
100  for field in c1._fields.itervalues():
101  result = field._compare(c1, c2, shortcut=shortcut, rtol=rtol, atol=atol, output=output)
102  if not result and shortcut:
103  return False
104  equal = equal and result
105  return equal
def lsst.pex.config.comparison.compareScalars (   name,
  v1,
  v2,
  output,
  rtol = 1E-8,
  atol = 1E-8,
  dtype = None 
)
Helper function for Config.compare; used to compare two scalar values for equality.

@param[in] name       Name to use when reporting differences
@param[in] dtype      Data type for comparison; may be None if it's definitely not floating-point.
@param[in] v1         LHS value to compare
@param[in] v2         RHS value to compare
@param[in] output     If not None, a callable that takes a string, used (possibly repeatedly)
                      to report inequalities.
@param[in] rtol       Relative tolerance for floating point comparisons.
@param[in] atol       Absolute tolerance for floating point comparisons.
@param[in] dtype      Data type for comparison; may be None if it's definitely not floating-point.

Floating point comparisons are performed by numpy.allclose; refer to that for details.

Definition at line 39 of file comparison.py.

39 
40 def compareScalars(name, v1, v2, output, rtol=1E-8, atol=1E-8, dtype=None):
41  """Helper function for Config.compare; used to compare two scalar values for equality.
42 
43  @param[in] name Name to use when reporting differences
44  @param[in] dtype Data type for comparison; may be None if it's definitely not floating-point.
45  @param[in] v1 LHS value to compare
46  @param[in] v2 RHS value to compare
47  @param[in] output If not None, a callable that takes a string, used (possibly repeatedly)
48  to report inequalities.
49  @param[in] rtol Relative tolerance for floating point comparisons.
50  @param[in] atol Absolute tolerance for floating point comparisons.
51  @param[in] dtype Data type for comparison; may be None if it's definitely not floating-point.
52 
53  Floating point comparisons are performed by numpy.allclose; refer to that for details.
54  """
55  if v1 is None or v2 is None:
56  result = (v1 == v2)
57  elif dtype in (float, complex):
58  result = numpy.allclose(v1, v2, rtol=rtol, atol=atol) or (numpy.isnan(v1) and numpy.isnan(v2))
59  else:
60  result = (v1 == v2)
61  if not result and output is not None:
62  output("Inequality in %s: %r != %r" % (name, v1, v2))
63  return result
def lsst.pex.config.comparison.getComparisonName (   name1,
  name2 
)

Definition at line 34 of file comparison.py.

34 
35 def getComparisonName(name1, name2):
36  if name1 != name2:
37  return "%s / %s" % (name1, name2)
38  return name1

Variable Documentation

tuple lsst.pex.config.comparison.__all__ = ("getComparisonName", "compareScalars", "compareConfigs")

Definition at line 32 of file comparison.py.