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
Public Member Functions | List of all members
lsst.afw.multiband.MultibandBase Class Reference
Inheritance diagram for lsst.afw.multiband.MultibandBase:
lsst.afw.detection.multiband.MultibandFootprint lsst.afw.image.image._multiband.MultibandImageBase lsst.afw.image.image._multiband.MultibandPixel lsst.afw.image.image._multiband.MultibandTripleBase lsst.afw.image.image._multiband.MultibandImage lsst.afw.image.image._multiband.MultibandMask lsst.afw.image.exposure._multiband.MultibandExposure lsst.afw.image.image._multiband.MultibandMaskedImage

Public Member Functions

def __init__ (self, filters, singles, bbox=None)
 
def clone (self, deep=True)
 
def filters (self)
 
def singles (self)
 
def getBBox (self)
 
def getXY0 (self)
 
def x0 (self)
 
def y0 (self)
 
def origin (self)
 
def width (self)
 
def height (self)
 
def __len__ (self)
 
def __getitem__ (self, args)
 
def __iter__ (self)
 
def __next__ (self)
 
def setXY0 (self, xy0)
 
def shiftedTo (self, xy0)
 
def shiftedBy (self, offset)
 
def __repr__ (self)
 
def __str__ (self)
 

Detailed Description

Base class for multiband objects

The LSST stack has a number of image-like classes that have
data in multiple bands that are stored as separate objects.
Analyzing the data can be easier using a Multiband object that
wraps the underlying data as a single data cube that can be sliced and
updated as a single object.

`MultibandBase` is designed to contain the most important universal
methods for initializing, slicing, and extracting common parameters
(such as the bounding box or XY0 position) to all of the single band classes,
as long as derived classes either call the base class `__init__`
or set the `_filters`, `_singles`, and `_bbox`.

Parameters
----------
filters: `list`
    List of filter names.
singles: `list`
    List of single band objects
bbox: `Box2I`
    By default `MultibandBase` uses `singles[0].getBBox()` to set
    the bounding box of the multiband

Definition at line 29 of file multiband.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.afw.multiband.MultibandBase.__init__ (   self,
  filters,
  singles,
  bbox = None 
)

Reimplemented in lsst.afw.image.image._multiband.MultibandPixel, lsst.afw.image.image._multiband.MultibandMask, and lsst.afw.image.image._multiband.MultibandImage.

Definition at line 54 of file multiband.py.

54  def __init__(self, filters, singles, bbox=None):
55  self._filters = tuple([f for f in filters])
56  self._singles = tuple(singles)
57 
58  if bbox is None:
59  self._bbox = self._singles[0].getBBox()
60  if not all([s.getBBox() == self.getBBox() for s in self.singles]):
61  bboxes = [s.getBBox() == self.getBBox() for s in self.singles]
62  err = "`singles` are required to have the same bounding box, received {0}"
63  raise ValueError(err.format(bboxes))
64  else:
65  self._bbox = bbox
66 
bool all(CoordinateExpr< N > const &expr) noexcept
Return true if all elements are true.

Member Function Documentation

◆ __getitem__()

def lsst.afw.multiband.MultibandBase.__getitem__ (   self,
  args 
)
Get a slice of the underlying array

If only a single filter is specified,
return the single band object sliced
appropriately.

Reimplemented in lsst.afw.image.image._multiband.MultibandPixel.

Definition at line 147 of file multiband.py.

147  def __getitem__(self, args):
148  """Get a slice of the underlying array
149 
150  If only a single filter is specified,
151  return the single band object sliced
152  appropriately.
153  """
154  if not isinstance(args, tuple):
155  indices = (args,)
156  else:
157  indices = args
158 
159  # Return the single band object if the first
160  # index is not a list or slice.
161  filters, filterIndex = self._filterNamesToIndex(indices[0])
162  if not isinstance(filterIndex, slice) and len(filterIndex) == 1:
163  if len(indices) > 2:
164  return self.singles[filterIndex[0]][indices[1:]]
165  elif len(indices) == 2:
166  return self.singles[filterIndex[0]][indices[1]]
167  else:
168  return self.singles[filterIndex[0]]
169 
170  return self._slice(filters=filters, filterIndex=filterIndex, indices=indices[1:])
171 

◆ __iter__()

def lsst.afw.multiband.MultibandBase.__iter__ (   self)

Definition at line 172 of file multiband.py.

172  def __iter__(self):
173  self._filterIndex = 0
174  return self
175 

◆ __len__()

def lsst.afw.multiband.MultibandBase.__len__ (   self)

Definition at line 144 of file multiband.py.

144  def __len__(self):
145  return len(self.filters)
146 

◆ __next__()

def lsst.afw.multiband.MultibandBase.__next__ (   self)

Definition at line 176 of file multiband.py.

176  def __next__(self):
177  if self._filterIndex < len(self.filters):
178  result = self.singles[self._filterIndex]
179  self._filterIndex += 1
180  else:
181  raise StopIteration
182  return result
183 

◆ __repr__()

def lsst.afw.multiband.MultibandBase.__repr__ (   self)

Definition at line 310 of file multiband.py.

310  def __repr__(self):
311  result = "<{0}, filters={1}, bbox={2}>".format(
312  self.__class__.__name__, self.filters, self.getBBox().__repr__())
313  return result
314 
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174

◆ __str__()

def lsst.afw.multiband.MultibandBase.__str__ (   self)

Definition at line 315 of file multiband.py.

315  def __str__(self):
316  if hasattr(self, "array"):
317  return str(self.array)
318  return self.__repr__()

◆ clone()

def lsst.afw.multiband.MultibandBase.clone (   self,
  deep = True 
)
Copy the current object

This must be overloaded in a subclass of `MultibandBase`

Parameters
----------
deep: `bool`
    Whether or not to make a deep copy

Returns
-------
result: `MultibandBase`
    copy of the instance that inherits from `MultibandBase`

Reimplemented in lsst.afw.image.image._multiband.MultibandTripleBase, lsst.afw.image.image._multiband.MultibandImageBase, lsst.afw.image.image._multiband.MultibandPixel, and lsst.afw.detection.multiband.MultibandFootprint.

Definition at line 68 of file multiband.py.

68  def clone(self, deep=True):
69  """Copy the current object
70 
71  This must be overloaded in a subclass of `MultibandBase`
72 
73  Parameters
74  ----------
75  deep: `bool`
76  Whether or not to make a deep copy
77 
78  Returns
79  -------
80  result: `MultibandBase`
81  copy of the instance that inherits from `MultibandBase`
82  """
83  pass
84 

◆ filters()

def lsst.afw.multiband.MultibandBase.filters (   self)
List of filter names for the single band objects

Definition at line 86 of file multiband.py.

86  def filters(self):
87  """List of filter names for the single band objects
88  """
89  return self._filters
90 

◆ getBBox()

def lsst.afw.multiband.MultibandBase.getBBox (   self)
Bounding box

Definition at line 97 of file multiband.py.

97  def getBBox(self):
98  """Bounding box
99  """
100  return self._bbox
101 

◆ getXY0()

def lsst.afw.multiband.MultibandBase.getXY0 (   self)
Minimum coordinate in the bounding box

Definition at line 102 of file multiband.py.

102  def getXY0(self):
103  """Minimum coordinate in the bounding box
104  """
105  return self.getBBox().getMin()
106 

◆ height()

def lsst.afw.multiband.MultibandBase.height (   self)
Height of the images

Definition at line 139 of file multiband.py.

139  def height(self):
140  """Height of the images
141  """
142  return self.getBBox().getHeight()
143 

◆ origin()

def lsst.afw.multiband.MultibandBase.origin (   self)
Minimum (y,x) position

This is the position of `self.getBBox().getMin()`,
but available as a tuple for numpy array indexing.

Definition at line 124 of file multiband.py.

124  def origin(self):
125  """Minimum (y,x) position
126 
127  This is the position of `self.getBBox().getMin()`,
128  but available as a tuple for numpy array indexing.
129  """
130  return (self.y0, self.x0)
131 

◆ setXY0()

def lsst.afw.multiband.MultibandBase.setXY0 (   self,
  xy0 
)
Shift the bounding box but keep the same Extent

Parameters
----------
xy0: `Point2I`
    New minimum bounds of the bounding box

Reimplemented in lsst.afw.image.image._multiband.MultibandTripleBase.

Definition at line 228 of file multiband.py.

228  def setXY0(self, xy0):
229  """Shift the bounding box but keep the same Extent
230 
231  Parameters
232  ----------
233  xy0: `Point2I`
234  New minimum bounds of the bounding box
235  """
236  self._bbox = Box2I(xy0, self._bbox.getDimensions())
237  for singleObj in self.singles:
238  singleObj.setXY0(xy0)
239 

◆ shiftedBy()

def lsst.afw.multiband.MultibandBase.shiftedBy (   self,
  offset 
)
Shift a bounding box by an offset, but keep the same Extent

This method is broken until DM-10781 is completed.

Parameters
----------
offset: `Extent2I`
    Amount to shift the bounding box in x and y.

Returns
-------
result: `MultibandBase`
    A copy of the object, shifted by `offset`

Definition at line 262 of file multiband.py.

262  def shiftedBy(self, offset):
263  """Shift a bounding box by an offset, but keep the same Extent
264 
265  This method is broken until DM-10781 is completed.
266 
267  Parameters
268  ----------
269  offset: `Extent2I`
270  Amount to shift the bounding box in x and y.
271 
272  Returns
273  -------
274  result: `MultibandBase`
275  A copy of the object, shifted by `offset`
276  """
277  raise NotImplementedError("shiftedBy not implemented until DM-10781")
278  xy0 = self._bbox.getMin() + offset
279  return self.shiftedTo(xy0)
280 

◆ shiftedTo()

def lsst.afw.multiband.MultibandBase.shiftedTo (   self,
  xy0 
)
Shift the bounding box but keep the same Extent

This method is broken until DM-10781 is completed.

Parameters
----------
xy0: `Point2I`
    New minimum bounds of the bounding box

Returns
-------
result: `MultibandBase`
    A copy of the object, shifted to `xy0`.

Reimplemented in lsst.afw.image.image._multiband.MultibandTripleBase.

Definition at line 240 of file multiband.py.

240  def shiftedTo(self, xy0):
241  """Shift the bounding box but keep the same Extent
242 
243  This method is broken until DM-10781 is completed.
244 
245  Parameters
246  ----------
247  xy0: `Point2I`
248  New minimum bounds of the bounding box
249 
250  Returns
251  -------
252  result: `MultibandBase`
253  A copy of the object, shifted to `xy0`.
254  """
255  raise NotImplementedError("shiftedBy not implemented until DM-10781")
256  result = self.clone(False)
257  result._bbox = Box2I(xy0, result._bbox.getDimensions())
258  for singleObj in result.singles:
259  singleObj.setXY0(xy0)
260  return result
261 

◆ singles()

def lsst.afw.multiband.MultibandBase.singles (   self)
List of single band objects

Definition at line 92 of file multiband.py.

92  def singles(self):
93  """List of single band objects
94  """
95  return self._singles
96 

◆ width()

def lsst.afw.multiband.MultibandBase.width (   self)
Width of the images

Definition at line 133 of file multiband.py.

133  def width(self):
134  """Width of the images
135  """
136  return self.getBBox().getWidth()
137 

◆ x0()

def lsst.afw.multiband.MultibandBase.x0 (   self)
X0

X component of XY0 `Point2I.getX()`

Definition at line 108 of file multiband.py.

108  def x0(self):
109  """X0
110 
111  X component of XY0 `Point2I.getX()`
112  """
113  return self.getBBox().getMinX()
114 

◆ y0()

def lsst.afw.multiband.MultibandBase.y0 (   self)
Y0

Y component of XY0 `Point2I.getY()`

Definition at line 116 of file multiband.py.

116  def y0(self):
117  """Y0
118 
119  Y component of XY0 `Point2I.getY()`
120  """
121  return self.getBBox().getMinY()
122 

The documentation for this class was generated from the following file: