Loading [MathJax]/extensions/tex2jax.js
LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Functions
lsst.pex.config.comparison Namespace Reference

Functions

def getComparisonName (name1, name2)
 
def compareScalars (name, v1, v2, output, rtol=1E-8, atol=1E-8, dtype=None)
 
def compareConfigs (name, c1, c2, shortcut=True, rtol=1E-8, atol=1E-8, output=None)
 

Function Documentation

◆ compareConfigs()

def lsst.pex.config.comparison.compareConfigs (   name,
  c1,
  c2,
  shortcut = True,
  rtol = 1E-8,
  atol = 1E-8,
  output = None 
)
Compare two `lsst.pex.config.Config` instances for equality.

This function is a helper for `lsst.pex.config.Config.compare`.

Parameters
----------
name : `str`
    Name to use when reporting differences, typically created by
    `getComparisonName`.
v1 : `lsst.pex.config.Config`
    Left-hand side config to compare.
v2 : `lsst.pex.config.Config`
    Right-hand side config to compare.
shortcut : `bool`, optional
    If `True`, return as soon as an inequality is found. Default is `True`.
rtol : `float`, optional
    Relative tolerance for floating point comparisons.
atol : `float`, optional
    Absolute tolerance for floating point comparisons.
output : callable, optional
    A callable that takes a string, used (possibly repeatedly) to report
    inequalities. For example: `print`.

Returns
-------
areEqual : `bool`
    `True` when the two `lsst.pex.config.Config` instances are equal.
    `False` if there is an inequality.

See also
--------
lsst.pex.config.compareScalars

Notes
-----
Floating point comparisons are performed by `numpy.allclose`.

If ``c1`` or ``c2`` contain `~lsst.pex.config.RegistryField` or
`~lsst.pex.config.ConfigChoiceField` instances, *unselected*
`~lsst.pex.config.Config` instances will not be compared.

Definition at line 111 of file comparison.py.

111 def compareConfigs(name, c1, c2, shortcut=True, rtol=1E-8, atol=1E-8, output=None):
112  """Compare two `lsst.pex.config.Config` instances for equality.
113 
114  This function is a helper for `lsst.pex.config.Config.compare`.
115 
116  Parameters
117  ----------
118  name : `str`
119  Name to use when reporting differences, typically created by
120  `getComparisonName`.
121  v1 : `lsst.pex.config.Config`
122  Left-hand side config to compare.
123  v2 : `lsst.pex.config.Config`
124  Right-hand side config to compare.
125  shortcut : `bool`, optional
126  If `True`, return as soon as an inequality is found. Default is `True`.
127  rtol : `float`, optional
128  Relative tolerance for floating point comparisons.
129  atol : `float`, optional
130  Absolute tolerance for floating point comparisons.
131  output : callable, optional
132  A callable that takes a string, used (possibly repeatedly) to report
133  inequalities. For example: `print`.
134 
135  Returns
136  -------
137  areEqual : `bool`
138  `True` when the two `lsst.pex.config.Config` instances are equal.
139  `False` if there is an inequality.
140 
141  See also
142  --------
143  lsst.pex.config.compareScalars
144 
145  Notes
146  -----
147  Floating point comparisons are performed by `numpy.allclose`.
148 
149  If ``c1`` or ``c2`` contain `~lsst.pex.config.RegistryField` or
150  `~lsst.pex.config.ConfigChoiceField` instances, *unselected*
151  `~lsst.pex.config.Config` instances will not be compared.
152  """
153  assert name is not None
154  if c1 is None:
155  if c2 is None:
156  return True
157  else:
158  if output is not None:
159  output("LHS is None for %s" % name)
160  return False
161  else:
162  if c2 is None:
163  if output is not None:
164  output("RHS is None for %s" % name)
165  return False
166  if type(c1) != type(c2):
167  if output is not None:
168  output("Config types do not match for %s: %s != %s" % (name, type(c1), type(c2)))
169  return False
170  equal = True
171  for field in c1._fields.values():
172  result = field._compare(c1, c2, shortcut=shortcut, rtol=rtol, atol=atol, output=output)
173  if not result and shortcut:
174  return False
175  equal = equal and result
176  return equal
table::Key< int > type
Definition: Detector.cc:163
def compareConfigs(name, c1, c2, shortcut=True, rtol=1E-8, atol=1E-8, output=None)
Definition: comparison.py:111

◆ compareScalars()

def lsst.pex.config.comparison.compareScalars (   name,
  v1,
  v2,
  output,
  rtol = 1E-8,
  atol = 1E-8,
  dtype = None 
)
Compare two scalar values for equality.

This function is a helper for `lsst.pex.config.Config.compare`.

Parameters
----------
name : `str`
    Name to use when reporting differences, typically created by
    `getComparisonName`.
v1 : object
    Left-hand side value to compare.
v2 : object
    Right-hand side value to compare.
output : callable or `None`
    A callable that takes a string, used (possibly repeatedly) to report
    inequalities (for example, `print`). Set to `None` to disable output.
rtol : `float`, optional
    Relative tolerance for floating point comparisons.
atol : `float`, optional
    Absolute tolerance for floating point comparisons.
dtype : class, optional
    Data type of values for comparison. May be `None` if values are not
    floating-point.

Returns
-------
areEqual : `bool`
    `True` if the values are equal, `False` if they are not.

See also
--------
lsst.pex.config.compareConfigs

Notes
-----
Floating point comparisons are performed by `numpy.allclose`.

Definition at line 62 of file comparison.py.

62 def compareScalars(name, v1, v2, output, rtol=1E-8, atol=1E-8, dtype=None):
63  """Compare two scalar values for equality.
64 
65  This function is a helper for `lsst.pex.config.Config.compare`.
66 
67  Parameters
68  ----------
69  name : `str`
70  Name to use when reporting differences, typically created by
71  `getComparisonName`.
72  v1 : object
73  Left-hand side value to compare.
74  v2 : object
75  Right-hand side value to compare.
76  output : callable or `None`
77  A callable that takes a string, used (possibly repeatedly) to report
78  inequalities (for example, `print`). Set to `None` to disable output.
79  rtol : `float`, optional
80  Relative tolerance for floating point comparisons.
81  atol : `float`, optional
82  Absolute tolerance for floating point comparisons.
83  dtype : class, optional
84  Data type of values for comparison. May be `None` if values are not
85  floating-point.
86 
87  Returns
88  -------
89  areEqual : `bool`
90  `True` if the values are equal, `False` if they are not.
91 
92  See also
93  --------
94  lsst.pex.config.compareConfigs
95 
96  Notes
97  -----
98  Floating point comparisons are performed by `numpy.allclose`.
99  """
100  if v1 is None or v2 is None:
101  result = (v1 == v2)
102  elif dtype in (float, complex):
103  result = numpy.allclose(v1, v2, rtol=rtol, atol=atol) or (numpy.isnan(v1) and numpy.isnan(v2))
104  else:
105  result = (v1 == v2)
106  if not result and output is not None:
107  output("Inequality in %s: %r != %r" % (name, v1, v2))
108  return result
109 
110 
def compareScalars(name, v1, v2, output, rtol=1E-8, atol=1E-8, dtype=None)
Definition: comparison.py:62

◆ getComparisonName()

def lsst.pex.config.comparison.getComparisonName (   name1,
  name2 
)
Create a comparison name that is used for printed output of comparisons.

Parameters
----------
name1 : `str`
    Name of the first configuration.
name2 : `str`
    Name of the second configuration.

Returns
-------
name : `str`
    When ``name1`` and ``name2`` are equal, the returned name is
    simply one of the names. When they are different the returned name is
    formatted as ``"{name1} / {name2}"``.

Definition at line 40 of file comparison.py.

40 def getComparisonName(name1, name2):
41  """Create a comparison name that is used for printed output of comparisons.
42 
43  Parameters
44  ----------
45  name1 : `str`
46  Name of the first configuration.
47  name2 : `str`
48  Name of the second configuration.
49 
50  Returns
51  -------
52  name : `str`
53  When ``name1`` and ``name2`` are equal, the returned name is
54  simply one of the names. When they are different the returned name is
55  formatted as ``"{name1} / {name2}"``.
56  """
57  if name1 != name2:
58  return "%s / %s" % (name1, name2)
59  return name1
60 
61 
def getComparisonName(name1, name2)
Definition: comparison.py:40