LSST Applications g02d81e74bb+86cf3d8bc9,g180d380827+7a4e862ed4,g2079a07aa2+86d27d4dc4,g2305ad1205+e1ca1c66fa,g29320951ab+012e1474a1,g295015adf3+341ea1ce94,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+c429d67c83,g48712c4677+f88676dd22,g487adcacf7+27e1e21933,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+b41db86c35,g5a732f18d5+53520f316c,g64a986408d+86cf3d8bc9,g858d7b2824+86cf3d8bc9,g8a8a8dda67+585e252eca,g99cad8db69+84912a7fdc,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+a2b54eae19,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+6681f309db,gc120e1dc64+f0fcc2f6d8,gc28159a63d+0e5473021a,gcf0d15dbbd+c429d67c83,gdaeeff99f8+f9a426f77a,ge6526c86ff+0433e6603d,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+86cf3d8bc9,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | 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

 __init__ (self, filters, array, singleType, bbox=None)
 
 clone (self, deep=True)
 
 __setitem__ (self, args, value)
 
 getBBox (self, origin=PARENT)
 

Public Attributes

 singles
 

Protected Member Functions

 _getArray (self)
 
 _setArray (self, value)
 
 _slice (self, filters, filterIndex, indices)
 

Protected Attributes

 _array
 
 _filters
 
 _bbox
 
 _singles
 

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__()

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

Reimplemented from lsst.afw.multiband.MultibandBase.

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

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

Member Function Documentation

◆ __setitem__()

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

◆ _getArray()

lsst.afw.image._image._multiband.MultibandImageBase._getArray ( self)
protected
Data cube array in multiple bands

Returns
-------
self._array : array
   The resulting 3D data cube with shape (filters, y, x).

Definition at line 174 of file _multiband.py.

174 def _getArray(self):
175 """Data cube array in multiple bands
176
177 Returns
178 -------
179 self._array : array
180 The resulting 3D data cube with shape (filters, y, x).
181 """
182 return self._array
183

◆ _setArray()

lsst.afw.image._image._multiband.MultibandImageBase._setArray ( self,
value )
protected
Set the values of the array

Definition at line 184 of file _multiband.py.

184 def _setArray(self, value):
185 """Set the values of the array"""
186 self.array[:] = value
187

◆ _slice()

lsst.afw.image._image._multiband.MultibandImageBase._slice ( self,
filters,
filterIndex,
indices )
protected
Slice the current object and return the result

See `MultibandBase._slice` for a list of the parameters.

Reimplemented from lsst.afw.multiband.MultibandBase.

Definition at line 207 of file _multiband.py.

207 def _slice(self, filters, filterIndex, indices):
208 """Slice the current object and return the result
209
210 See `MultibandBase._slice` for a list of the parameters.
211 """
212 if len(indices) > 0:
213 if len(indices) == 1:
214 indices = indices[0]
215 allSlices = [filterIndex, slice(None), slice(None)]
216 sy, sx, bbox = imageIndicesToNumpy(indices, self.getBBox)
217 if sy is not None:
218 allSlices[-2] = sy
219 if sx is not None:
220 allSlices[-1] = sx
221 array = self._array[tuple(allSlices)]
222
223 # Return a scalar or MultibandPixel
224 # if the image indices are integers
225 if bbox is None:
226 if not isinstance(filterIndex, slice) and len(filterIndex) == 1:
227 return array[0]
228 result = MultibandPixel(
229 singles=array,
230 filters=filters,
231 position=Point2I(sx + self.x0, sy + self.y0)
232 )
233 return result
234 else:
235 array = self._array[filterIndex]
236 bbox = self.getBBox()
237 result = type(self)(filters, array, bbox)
238
239 # Check that the image and array shapes agree
240 imageShape = (
241 len(result.filters),
242 result.getBBox().getHeight(),
243 result.getBBox().getWidth()
244 )
245 assert result.array.shape == imageShape
246
247 return result
248

◆ clone()

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

◆ getBBox()

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

Reimplemented from lsst.afw.multiband.MultibandBase.

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

Member Data Documentation

◆ _array

lsst.afw.image._image._multiband.MultibandImageBase._array
protected

Definition at line 160 of file _multiband.py.

◆ _bbox

lsst.afw.image._image._multiband.MultibandImageBase._bbox
protected

Definition at line 164 of file _multiband.py.

◆ _filters

lsst.afw.image._image._multiband.MultibandImageBase._filters
protected

Definition at line 161 of file _multiband.py.

◆ _singles

lsst.afw.image._image._multiband.MultibandImageBase._singles
protected

Definition at line 168 of file _multiband.py.

◆ singles

lsst.afw.image._image._multiband.MultibandImageBase.singles

Definition at line 172 of file _multiband.py.

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: