lsst.meas.algorithms
g4a7591d645+ff8a1bd350
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
meas
algorithms
starSelector.py
Go to the documentation of this file.
1
#
2
# LSST Data Management System
3
#
4
# Copyright 2008-2017 AURA/LSST.
5
#
6
# This product includes software developed by the
7
# LSST Project (http://www.lsst.org/).
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 LSST License Statement and
20
# the GNU General Public License along with this program. If not,
21
# see <https://www.lsstcorp.org/LegalNotices/>.
22
#
23
__all__ = [
"BaseStarSelectorConfig"
,
"BaseStarSelectorTask"
,
"starSelectorRegistry"
]
24
25
import
abc
26
27
from
lsst.afw.table
import
Schema
28
import
lsst.pex.config
as
pexConfig
29
import
lsst.pipe.base
as
pipeBase
30
31
32
class
BaseStarSelectorConfig
(pexConfig.Config):
33
badFlags = pexConfig.ListField(
34
doc=
"List of flags which cause a source to be rejected as bad"
,
35
dtype=str,
36
default=[
37
"base_PixelFlags_flag_edge"
,
38
"base_PixelFlags_flag_nodata"
,
39
"base_PixelFlags_flag_interpolatedCenter"
,
40
"base_PixelFlags_flag_saturatedCenter"
,
41
"base_PixelFlags_flag_crCenter"
,
42
"base_PixelFlags_flag_bad"
,
43
"base_PixelFlags_flag_interpolated"
,
44
],
45
)
46
47
48
class
BaseStarSelectorTask
(pipeBase.Task, metaclass=abc.ABCMeta):
49
"""Base class for star selectors
50
51
Register all star selectors with the starSelectorRegistry using:
52
starSelectorRegistry.register(name, class)
53
"""
54
55
usesMatches =
False
# Does the star selector use the "matches" argument in the "run method? Few do.
56
ConfigClass = BaseStarSelectorConfig
57
_DefaultName =
"starSelector"
58
59
def
__init__
(self, schema, **kwds):
60
# catch code that passed config positionally before schema argument was added
61
assert
isinstance(schema, Schema)
62
pipeBase.Task.__init__(self, **kwds)
63
64
def
run
(self, exposure, sourceCat, matches=None, isStarField=None):
65
"""Select stars and set a flag field True for stars in the input catalog.
66
67
Parameters
68
----------
69
exposure : `lsst.afw.image.Exposure`
70
the exposure containing the sources
71
sourceCat : `lsst.afw.table.SourceCatalog`
72
catalog of sources that may be stars
73
matches : `lsst.afw.table.ReferenceMatchVector` or None
74
astrometric matches; ignored by this star selector. Some star selectors
75
will ignore this argument, others may require it. See the
76
usesMatches class variable.
77
isStarField : `str`
78
name of flag field to set True for stars, or None to not set a field;
79
the field is left unchanged for non-stars
80
81
Returns
82
-------
83
struct : `lsst.pipe.base.Struct`
84
Result struct containing:
85
86
- starCat catalog of stars that were selected as stars and successfuly made into PSF candidates
87
(a subset of sourceCat whose records are shallow copies)
88
"""
89
result = self.
selectStars
(exposure=exposure, sourceCat=sourceCat, matches=matches)
90
91
if
isStarField
is
not
None
:
92
isStarKey = sourceCat.schema[isStarField].asKey()
93
for
star
in
result.starCat:
94
star.set(isStarKey,
True
)
95
96
return
pipeBase.Struct(starCat=result.starCat)
97
98
@abc.abstractmethod
99
def
selectStars
(self, exposure, sourceCat, matches=None):
100
"""Return a catalog of stars: a subset of sourceCat whose records are shallow copies
101
102
Parameters
103
----------
104
exposure : `lsst.afw.image.Exposure`
105
The exposure containing the sources.
106
sourceCat : `lsst.afw.table.SourceCatalog`
107
Catalog of sources that may be stars.
108
matches : `lsst.afw.table.ReferenceMatchVector` or None
109
astrometric matches; ignored by this star selector. Some star selectors
110
will ignore this argument, others may require it. See the usesMatches class variable.
111
112
Returns
113
-------
114
struct : `lsst.pipe.base.Struct`
115
Result `~lsst.pipe.base.Struct` containing:
116
117
``starCat``
118
Catalog of stars that were selected as stars and successfuly made into PSF candidates
119
(a subset of sourceCat whose records are shallow copies).
120
(`lsst.afw.table.SourceCatalog`)
121
122
Notes
123
-----
124
Warning: The returned catalog must have records that are shallow copies
125
(fortunately this is the default behavior when you add a record from one catalog to another);
126
otherwise the run method cannot set the isStarField flag in the original source catalog.
127
"""
128
raise
NotImplementedError(
"BaseStarSelectorTask is abstract, subclasses must override this method"
)
129
130
131
starSelectorRegistry = pexConfig.makeRegistry(
132
doc=
"A registry of star selectors (subclasses of BaseStarSelectorTask)"
,
133
)
lsst::meas::algorithms.starSelector.BaseStarSelectorConfig
Definition
starSelector.py:32
lsst::meas::algorithms.starSelector.BaseStarSelectorTask
Definition
starSelector.py:48
lsst::meas::algorithms.starSelector.BaseStarSelectorTask.run
run(self, exposure, sourceCat, matches=None, isStarField=None)
Definition
starSelector.py:64
lsst::meas::algorithms.starSelector.BaseStarSelectorTask.__init__
__init__(self, schema, **kwds)
Definition
starSelector.py:59
lsst::meas::algorithms.starSelector.BaseStarSelectorTask.selectStars
selectStars(self, exposure, sourceCat, matches=None)
Definition
starSelector.py:99
lsst::afw::table
lsst::pex::config
lsst.pipe.base
Generated on
for lsst.meas.algorithms by
1.17.0