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 | Properties | List of all members
lsst.afw.image.image._multiband.MultibandImageBase Class Reference
Inheritance diagram for lsst.afw.image.image._multiband.MultibandImageBase:
lsst.afw.multiband.MultibandBase lsst.afw.image.image._multiband.MultibandImage lsst.afw.image.image._multiband.MultibandMask

Public Member Functions

def __init__ (self, filters, array, singleType, bbox=None)
 
def clone (self, deep=True)
 
def __setitem__ (self, args, value)
 
def getBBox (self, origin=PARENT)
 
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)
 

Properties

 array = property(_getArray, _setArray)
 

Detailed Description

Multiband Image class

This class acts as a container for multiple `afw.Image` objects.
All images must be contained in the same bounding box,
and have the same data type.
The data is stored in a 3D array (filters, y, x), and the single
band `Image` instances have an internal array that points to the
3D multiband array, so that the single band objects and multiband
array are always in agreement.

Parameters
----------
filters : `list`
   List of filter names.
array : 3D numpy array
   Array (filters, y, x) of multiband data.
   If this is used to initialize a `MultibandImage`,
   either `bbox` or `singles` is also required.
singleType : `type`
   Type of the single band object (eg. `Image`, `Mask`) to
   convert the array into a tuple of single band objects
   that point to the image array.
bbox : `Box2I`
   Location of the array in a larger single band image.
   If `bbox` is `None` then the bounding box is initialized
   at the origin.

Definition at line 128 of file _multiband.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.afw.image.image._multiband.MultibandImageBase.__init__ (   self,
  filters,
  array,
  singleType,
  bbox = None 
)

Definition at line 156 of file _multiband.py.

156  def __init__(self, filters, array, singleType, bbox=None):
157  # Create the single band objects from the array
158  if len(array) != len(filters):
159  raise ValueError("`array` and `filters` must have the same length")
160  self._array = array
161  self._filters = tuple(filters)
162  if bbox is None:
163  bbox = Box2I(Point2I(0, 0), Extent2I(array.shape[2], array.shape[1]))
164  self._bbox = bbox
165 
166  xy0 = self.getXY0()
167  dtype = array.dtype
168  self._singles = tuple([singleType(array=array[n], xy0=xy0, dtype=dtype) for n in range(len(array))])
169 
170  # Make sure that all of the parameters have been setup appropriately
171  assert isinstance(self._bbox, Box2I)
172  assert len(self.singles) == len(self.filters)
173 
Extent< int, 2 > Extent2I
Definition: Extent.h:397
Point< int, 2 > Point2I
Definition: Point.h:321

Member Function Documentation

◆ __getitem__()

def lsst.afw.multiband.MultibandBase.__getitem__ (   self,
  args 
)
inherited
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)
inherited

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)
inherited

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)
inherited

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)
inherited

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

◆ __setitem__()

def lsst.afw.image.image._multiband.MultibandImageBase.__setitem__ (   self,
  args,
  value 
)
Set a subset of the MultibandImage

Definition at line 249 of file _multiband.py.

249  def __setitem__(self, args, value):
250  """Set a subset of the MultibandImage
251  """
252  if not isinstance(args, tuple):
253  indices = (args,)
254  else:
255  indices = args
256 
257  # Return the single band object if the first
258  # index is not a list or slice.
259  filters, filterIndex = self._filterNamesToIndex(indices[0])
260  if len(indices) > 1:
261  sy, sx, bbox = imageIndicesToNumpy(indices[1:], self.getBBox)
262  else:
263  sy = sx = slice(None)
264  if hasattr(value, "array"):
265  self._array[filterIndex, sy, sx] = value.array
266  else:
267  self._array[filterIndex, sy, sx] = value
268 
def imageIndicesToNumpy(sliceArgs, bboxGetter)
Definition: _slicing.py:202

◆ __str__()

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

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.image.image._multiband.MultibandImageBase.clone (   self,
  deep = True 
)
Copy the current object

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

Reimplemented from lsst.afw.multiband.MultibandBase.

Definition at line 190 of file _multiband.py.

190  def clone(self, deep=True):
191  """Copy the current object
192 
193  Parameters
194  ----------
195  deep : `bool`
196  Whether or not to make a deep copy
197  """
198  if deep:
199  array = np.copy(self.array)
200  bbox = Box2I(self.getBBox())
201  else:
202  array = self.array
203  bbox = self.getBBox()
204  result = type(self)(self.filters, array, bbox)
205  return result
206 
table::Key< int > type
Definition: Detector.cc:163

◆ filters()

def lsst.afw.multiband.MultibandBase.filters (   self)
inherited
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() [1/2]

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

Definition at line 97 of file multiband.py.

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

◆ getBBox() [2/2]

def lsst.afw.image.image._multiband.MultibandImageBase.getBBox (   self,
  origin = PARENT 
)
Bounding box

Definition at line 269 of file _multiband.py.

269  def getBBox(self, origin=PARENT):
270  """Bounding box
271  """
272  if origin == PARENT:
273  return self._bbox
274  elif origin == LOCAL:
275  return Box2I(Point2I(0, 0), self._bbox.getDimensions())
276  raise ValueError("Unrecognized origin, expected either PARENT or LOCAL")
277 
278 

◆ getXY0()

def lsst.afw.multiband.MultibandBase.getXY0 (   self)
inherited
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)
inherited
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)
inherited
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 
)
inherited
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 
)
inherited
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 
)
inherited
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)
inherited
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)
inherited
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)
inherited
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)
inherited
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 

Property Documentation

◆ array

lsst.afw.image.image._multiband.MultibandImageBase.array = property(_getArray, _setArray)
static

Definition at line 188 of file _multiband.py.


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