LSST Applications  21.0.0+04719a4bac,21.0.0-1-ga51b5d4+f5e6047307,21.0.0-11-g2b59f77+a9c1acf22d,21.0.0-11-ga42c5b2+86977b0b17,21.0.0-12-gf4ce030+76814010d2,21.0.0-13-g1721dae+760e7a6536,21.0.0-13-g3a573fe+768d78a30a,21.0.0-15-g5a7caf0+f21cbc5713,21.0.0-16-g0fb55c1+b60e2d390c,21.0.0-19-g4cded4ca+71a93a33c0,21.0.0-2-g103fe59+bb20972958,21.0.0-2-g45278ab+04719a4bac,21.0.0-2-g5242d73+3ad5d60fb1,21.0.0-2-g7f82c8f+8babb168e8,21.0.0-2-g8f08a60+06509c8b61,21.0.0-2-g8faa9b5+616205b9df,21.0.0-2-ga326454+8babb168e8,21.0.0-2-gde069b7+5e4aea9c2f,21.0.0-2-gecfae73+1d3a86e577,21.0.0-2-gfc62afb+3ad5d60fb1,21.0.0-25-g1d57be3cd+e73869a214,21.0.0-3-g357aad2+ed88757d29,21.0.0-3-g4a4ce7f+3ad5d60fb1,21.0.0-3-g4be5c26+3ad5d60fb1,21.0.0-3-g65f322c+e0b24896a3,21.0.0-3-g7d9da8d+616205b9df,21.0.0-3-ge02ed75+a9c1acf22d,21.0.0-4-g591bb35+a9c1acf22d,21.0.0-4-g65b4814+b60e2d390c,21.0.0-4-gccdca77+0de219a2bc,21.0.0-4-ge8a399c+6c55c39e83,21.0.0-5-gd00fb1e+05fce91b99,21.0.0-6-gc675373+3ad5d60fb1,21.0.0-64-g1122c245+4fb2b8f86e,21.0.0-7-g04766d7+cd19d05db2,21.0.0-7-gdf92d54+04719a4bac,21.0.0-8-g5674e7b+d1bd76f71f,master-gac4afde19b+a9c1acf22d,w.2021.13
LSST Data Management Base Package
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