LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | List of all members
lsst.meas.base.forcedPhotCcd.PerTractCcdDataIdContainer Class Reference
Inheritance diagram for lsst.meas.base.forcedPhotCcd.PerTractCcdDataIdContainer:

Public Member Functions

def makeDataRefList (self, namespace)
 

Detailed Description

A data ID container which combines raw data IDs with a tract.

Notes
-----
Required because we need to add "tract" to the raw data ID keys (defined as
whatever we use for ``src``) when no tract is provided (so that the user is
not required to know which tracts are spanned by the raw data ID).

This subclass of `~lsst.pipe.base.DataIdContainer` assumes that a calexp is
being measured using the detection information, a set of reference
catalogs, from the set of coadds which intersect with the calexp.  It needs
the calexp id (e.g.  visit, raft, sensor), but is also uses the tract to
decide what set of coadds to use.  The references from the tract whose
patches intersect with the calexp are used.

Definition at line 58 of file forcedPhotCcd.py.

Member Function Documentation

◆ makeDataRefList()

def lsst.meas.base.forcedPhotCcd.PerTractCcdDataIdContainer.makeDataRefList (   self,
  namespace 
)
A data ID container which combines raw data IDs with a tract.

Notes
-----
Required because we need to add "tract" to the raw data ID keys (defined as
whatever we use for ``src``) when no tract is provided (so that the user is
not required to know which tracts are spanned by the raw data ID).

This subclass of `~lsst.pipe.base.DataIdContainer` assumes that a calexp is
being measured using the detection information, a set of reference
catalogs, from the set of coadds which intersect with the calexp.  It needs
the calexp id (e.g.  visit, raft, sensor), but is also uses the tract to
decide what set of coadds to use.  The references from the tract whose
patches intersect with the calexp are used.
Make self.refList from self.idList

Definition at line 75 of file forcedPhotCcd.py.

75  def makeDataRefList(self, namespace):
76  """Make self.refList from self.idList
77  """
78  if self.datasetType is None:
79  raise RuntimeError("Must call setDatasetType first")
80  log = logging.getLogger(__name__).getChild("PerTractCcdDataIdContainer")
81  skymap = None
82  visitTract = collections.defaultdict(set) # Set of tracts for each visit
83  visitRefs = collections.defaultdict(list) # List of data references for each visit
84  for dataId in self.idList:
85  if "tract" not in dataId:
86  # Discover which tracts the data overlaps
87  log.info("Reading WCS for components of dataId=%s to determine tracts", dict(dataId))
88  if skymap is None:
89  skymap = namespace.butler.get(namespace.config.coaddName + "Coadd_skyMap")
90 
91  for ref in namespace.butler.subset("calexp", dataId=dataId):
92  if not ref.datasetExists("calexp"):
93  continue
94 
95  visit = ref.dataId["visit"]
96  visitRefs[visit].append(ref)
97 
98  md = ref.get("calexp_md", immediate=True)
99  wcs = lsst.afw.geom.makeSkyWcs(md)
101  # Going with just the nearest tract. Since we're throwing all tracts for the visit
102  # together, this shouldn't be a problem unless the tracts are much smaller than a CCD.
103  tract = skymap.findTract(wcs.pixelToSky(box.getCenter()))
104  if imageOverlapsTract(tract, wcs, box):
105  visitTract[visit].add(tract.getId())
106  else:
107  self.refList.extend(ref for ref in namespace.butler.subset(self.datasetType, dataId=dataId))
108 
109  # Ensure all components of a visit are kept together by putting them all in the same set of tracts
110  for visit, tractSet in visitTract.items():
111  for ref in visitRefs[visit]:
112  for tract in tractSet:
113  self.refList.append(namespace.butler.dataRef(datasetType=self.datasetType,
114  dataId=ref.dataId, tract=tract))
115  if visitTract:
116  tractCounter = collections.Counter()
117  for tractSet in visitTract.values():
118  tractCounter.update(tractSet)
119  log.info("Number of visits for each tract: %s", dict(tractCounter))
120 
121 
A floating-point coordinate rectangle geometry.
Definition: Box.h:413
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33
std::shared_ptr< SkyWcs > makeSkyWcs(daf::base::PropertySet &metadata, bool strip=false)
Construct a SkyWcs from FITS keywords.
Definition: SkyWcs.cc:521
lsst::geom::Box2I bboxFromMetadata(daf::base::PropertySet &metadata)
Determine the image bounding box from its metadata (FITS header)
Definition: Image.cc:680
def imageOverlapsTract(tract, imageWcs, imageBox)

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