lsst.meas.algorithms
g4a7591d645+fa9daf83c6
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
meas
algorithms
coaddBoundedField.py
Go to the documentation of this file.
1
# This file is part of meas_algorithms.
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (https://www.lsst.org).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program. If not, see <https://www.gnu.org/licenses/>.
21
22
import
numpy
as
np
23
24
from
lsst.geom
import
Point2D
25
from
lsst.utils
import
continueClass
26
27
from
._algorithmsLib
import
CoaddBoundedField
28
29
__all__ = [
"CoaddBoundedField"
]
30
31
32
@continueClass
33
class
CoaddBoundedField
:
# noqa: F811
34
def
evaluate
(self, x, y=None):
35
"""Evaluate the CoaddBoundedField.
36
37
This accepts either a Point2D or an array of x and y
38
positions.
39
40
When arrays are passed, this uses a vectorized version
41
of CoaddBoundedField::evaluate(). If the coadd bounded
42
field has throwOnMissing then this will return NaN
43
for missing values; otherwise it will return 0.0.
44
45
Parameters
46
----------
47
x : `lsst.geom.Point2D` or `np.ndarray`
48
Array of x values.
49
y : `np.ndarray`, optional
50
Array of y values.
51
52
Returns
53
-------
54
values : `float` or `np.ndarray`
55
Evaluated value or array of values.
56
"""
57
if
isinstance(x, Point2D):
58
return
self._evaluate(x)
59
60
_x = np.atleast_1d(x).ravel()
61
_y = np.atleast_1d(y).ravel()
62
63
if
len(_x) != len(_y):
64
raise
ValueError(
"x and y arrays must be the same length."
)
65
66
ra, dec = self.getCoaddWcs().pixelToSkyArray(_x, _y)
67
68
sums = np.zeros(len(_x))
69
wts = np.zeros_like(sums)
70
71
for
elt
in
self.getElements():
72
ix, iy = elt.wcs.skyToPixelArray(ra, dec)
73
in_box = elt.field.getBBox().contains(ix, iy)
74
if
elt.validPolygon:
75
in_box &= elt.validPolygon.contains(ix, iy)
76
sums[in_box] += elt.weight*elt.field.evaluate(ix[in_box], iy[in_box])
77
wts[in_box] += elt.weight
78
79
good = (wts > 0)
80
values = np.zeros(len(_x))
81
values[good] = sums[good]/wts[good]
82
83
if
self.getThrowOnMissing():
84
values[~good] = np.nan
85
86
return
values
lsst::meas::algorithms.coaddBoundedField.CoaddBoundedField
Definition
coaddBoundedField.py:33
lsst::meas::algorithms.coaddBoundedField.CoaddBoundedField.evaluate
evaluate(self, x, y=None)
Definition
coaddBoundedField.py:34
lsst::geom
Generated on
for lsst.meas.algorithms by
1.17.0