Coverage for python/lsst/meas/algorithms/flaggedSourceSelector.py: 88%

15 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2022-10-14 09:13 +0000

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"""Select sources that have an existing flag field set.""" 

24import lsst.pex.config 

25import lsst.afw.table 

26import lsst.pipe.base as pipeBase 

27 

28from .sourceSelector import BaseSourceSelectorTask, sourceSelectorRegistry 

29 

30__all__ = ["FlaggedSourceSelectorConfig", "FlaggedSourceSelectorTask"] 

31 

32 

33class FlaggedSourceSelectorConfig(BaseSourceSelectorTask.ConfigClass): 

34 field = lsst.pex.config.Field( 

35 dtype=str, default="calib_psf_used", 

36 doc="Name of a flag field that is True for Sources that should be used.", 

37 ) 

38 

39 

40@lsst.pex.config.registerConfigurable("flagged", sourceSelectorRegistry) 

41class FlaggedSourceSelectorTask(BaseSourceSelectorTask): 

42 """ 

43 A trivial SourceSelector that simply uses an existing flag field to filter 

44 a SourceCatalog. 

45 

46 This is most frequently used in steps that occur after the a PSF model has 

47 been built, to allow other procedures that need Sources to use the set of 

48 Sources used to determine the PSF. 

49 

50 Attributes 

51 ---------- 

52 usesMatches : `bool` 

53 A boolean variable specify if the inherited source selector uses 

54 matches. 

55 """ 

56 

57 ConfigClass = FlaggedSourceSelectorConfig 

58 _DefaultName = "flagged" 

59 

60 def selectSources(self, sourceCat, matches=None, exposure=None): 

61 """Return a bool array representing which sources to select from 

62 sourceCat. 

63 

64 The input catalog must be contiguous in memory. 

65 

66 Parameters 

67 ---------- 

68 sourceCat : `lsst.afw.table.SourceCatalog` 

69 Catalog of sources to select from. 

70 matches : `list` of `lsst.afw.table.ReferenceMatch` or None 

71 Ignored in this SourceSelector. 

72 exposure : `lsst.afw.image.Exposure` or None 

73 The exposure the catalog was built from; used for debug display. 

74 

75 Returns 

76 ------- 

77 struct : `lsst.pipe.base.Struct` 

78 The struct contains the following data: 

79 

80 ``selected`` 

81 Boolean array of sources that were selected, same length as 

82 ``sourceCat``. (`numpy.ndarray` of `bool`) 

83 """ 

84 key = sourceCat.schema.find(self.config.field).key 

85 return pipeBase.Struct(selected=sourceCat.get(key))