LSST Applications g0265f82a02+0e5473021a,g02d81e74bb+f5613e8b4f,g1470d8bcf6+190ad2ba91,g14a832a312+311607e4ab,g2079a07aa2+86d27d4dc4,g2305ad1205+a8e3196225,g295015adf3+b67ee847e5,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g3ddfee87b4+a761f810f3,g487adcacf7+17c8fdbcbd,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+65b5bd823e,g5a732f18d5+53520f316c,g64a986408d+f5613e8b4f,g6c1bc301e9+51106c2951,g858d7b2824+f5613e8b4f,g8a8a8dda67+585e252eca,g99cad8db69+6729933424,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+ef4e3a5875,gb0e22166c9+60f28cb32d,gb6a65358fc+0e5473021a,gba4ed39666+c2a2e4ac27,gbb8dafda3b+e9bba80f27,gc120e1dc64+eee469a5e5,gc28159a63d+0e5473021a,gcf0d15dbbd+a761f810f3,gdaeeff99f8+f9a426f77a,ge6526c86ff+d4c1d4bfef,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gf1cff7945b+f5613e8b4f,w.2024.16
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Properties | List of all members
lsst.afw.image._image._multiband.MultibandPixel Class Reference
Inheritance diagram for lsst.afw.image._image._multiband.MultibandPixel:
lsst.afw.multiband.MultibandBase

Public Member Functions

 __init__ (self, filters, singles, position)
 
 clone (self, deep=True)
 
 __getitem__ (self, indices)
 

Protected Member Functions

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

Protected Attributes

 _singles
 

Properties

 array = property(_getArray, _setArray)
 

Detailed Description

Multiband Pixel class

This represent acts as a container for a single pixel
(scalar) in multiple bands.

Parameters
----------
singles : `sequence`
   Either a list of single band objects or an array of values.
filters : `list`
   List of filter names. If `singles` is an `OrderedDict` or
   a `MultibandPixel` then this argument is ignored,
   otherwise it is required.
position : `Point2I`
   Location of the pixel in the parent image.
   Unlike other objects that inherit from `MultibandBase`,
   `MultibandPixel` objects don't have a full `Box2I`
   bounding box, since they only contain a single pixel,
   so the bounding box cannot be inherited from the
   list of `singles`.

Definition at line 33 of file _multiband.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.afw.image._image._multiband.MultibandPixel.__init__ ( self,
filters,
singles,
position )

Reimplemented from lsst.afw.multiband.MultibandBase.

Definition at line 55 of file _multiband.py.

55 def __init__(self, filters, singles, position):
56 if any([arg is None for arg in [singles, filters, position]]):
57 err = "Expected an array of `singles`, a list of `filters, and a `bbox`"
58 raise NotImplementedError(err)
59
60 # Make sure that singles is an array
61 singles = np.array(singles, copy=False)
62
63 super().__init__(filters, singles, bbox=Box2I(position, Extent2I(1, 1)))
64 # In this case we want self.singles to be an array
65 self._singles = singles
66
67 # Make sure that the bounding box has been setup properly
68 assert self.getBBox().getDimensions() == Extent2I(1, 1)
69

Member Function Documentation

◆ __getitem__()

lsst.afw.image._image._multiband.MultibandPixel.__getitem__ ( self,
indices )
Get a slice of the underlying array

Since a `MultibandPixel` is a scalar in the
spatial dimensions, it can only be indexed with
a filter name, number, or slice.

Reimplemented from lsst.afw.multiband.MultibandBase.

Definition at line 100 of file _multiband.py.

100 def __getitem__(self, indices):
101 """Get a slice of the underlying array
102
103 Since a `MultibandPixel` is a scalar in the
104 spatial dimensions, it can only be indexed with
105 a filter name, number, or slice.
106 """
107 if isinstance(indices, tuple):
108 err = ("Too many indices: "
109 "`MultibandPixel has no spatial dimensions and "
110 "only accepts a filterIndex")
111 raise IndexError(err)
112 # Make the index into a valid numpy index or slice
113 filters, filterIndex = self._filterNamesToIndex(indices)
114 if len(filters) == 1 and not isinstance(filterIndex, slice):
115 # The user only requested a pixel in a single band, so return it
116 return self.array[filterIndex[0]]
117
118 result = self.clone(False)
119 result._filters = filters
120 result._singles = self._singles[filterIndex]
121 # No need to update the bounding box, since pixels can only be sliced in the filter dimension
122 return result
123

◆ _getArray()

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

Since `self._singles` is just a 1D array,
`array` just returns `self._singles`.

Definition at line 70 of file _multiband.py.

70 def _getArray(self):
71 """Data cube array in multiple bands
72
73 Since `self._singles` is just a 1D array,
74 `array` just returns `self._singles`.
75 """
76 return self.singles
77

◆ _setArray()

lsst.afw.image._image._multiband.MultibandPixel._setArray ( self,
value )
protected

Definition at line 78 of file _multiband.py.

78 def _setArray(self, value):
79 assert value.shape == self.array.shape
80 self._singles[:] = value
81

◆ _slice()

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

Different inherited classes will handling slicing differently,
so this method must be overloaded in inherited classes.

Parameters
----------
filters: `list` of `str`
    List of filter names for the slice. This is a subset of the
    filters in the parent multiband object
filterIndex: `list` of `int` or `slice`
    Index along the filter dimension
indices: `tuple` of remaining indices
    `MultibandBase.__getitem__` separates the first (filter)
    index from the remaining indices, so `indices` is a tuple
    of all of the indices that come after `filter` in the
    `args` passed to `MultibandBase.__getitem__`.

Returns
-------
result: `object`
    Sliced version of the current object, which could be the
    same class or a different class depending on the
    slice being made.

Reimplemented from lsst.afw.multiband.MultibandBase.

Definition at line 124 of file _multiband.py.

124 def _slice(self, filters, filterIndex, indices):
125 pass
126
127

◆ clone()

lsst.afw.image._image._multiband.MultibandPixel.clone ( self,
deep = True )
Make a copy of the current instance

`MultibandPixel.singles` is an array,
so this just makes a copy of the array
(as opposed to a view of the parent array).

Reimplemented from lsst.afw.multiband.MultibandBase.

Definition at line 84 of file _multiband.py.

84 def clone(self, deep=True):
85 """Make a copy of the current instance
86
87 `MultibandPixel.singles` is an array,
88 so this just makes a copy of the array
89 (as opposed to a view of the parent array).
90 """
91 if deep:
92 singles = np.copy(self.singles)
93 position = self.getBBox().getMin()
94 return MultibandPixel(filters=self.filters, singles=singles, position=position)
95
96 result = MultibandPixel(filters=self.filters, singles=self.singles, position=self.getBBox().getMin())
97 result._bbox = self.getBBox()
98 return result
99

Member Data Documentation

◆ _singles

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

Definition at line 65 of file _multiband.py.

Property Documentation

◆ array

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

Definition at line 82 of file _multiband.py.


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