LSSTApplications  19.0.0-14-gb0260a2+599893a4c6,20.0.0+126303c00d,20.0.0+2f3d0e5c40,20.0.0+36ef800059,20.0.0+5ac7adcc0c,20.0.0+693a64958a,20.0.0+bebc1f60e8,20.0.0+cad136aba6,20.0.0+e2e26847c2,20.0.0+e69b5d60e7,20.0.0-1-g10df615+11b215b765,20.0.0-1-g253301a+36ef800059,20.0.0-1-g2b7511a+bebc1f60e8,20.0.0-1-g4d801e7+aeeb640673,20.0.0-1-g5b95a8c+f111d5f02f,20.0.0-1-g660595b+f45b7d88f4,20.0.0-1-gc96f8cb+e3b38461e6,20.0.0-1-gd1c87d7+85c46248f3,20.0.0-1-gedffbd8+d0b27f8bcb,20.0.0-16-g111fe95+e3b38461e6,20.0.0-16-g18096c8+d1a4df0137,20.0.0-16-g233ea98+a4df35922d,20.0.0-17-ga9337b4+41f27cfd54,20.0.0-2-g4dae9ad+e3b38461e6,20.0.0-2-g7818986+85c46248f3,20.0.0-2-gec03fae+ff10c6d78d,20.0.0-28-g282f9e7e+feda6aebd8,20.0.0-3-g4cc78c6+63636aeed8,20.0.0-3-g6a8623c+d1a4df0137,20.0.0-3-g750bffe+f5427621ce,20.0.0-4-gfea843c+f45b7d88f4,20.0.0-5-g357b56b+f45b7d88f4,20.0.0-5-gfcebe35+e2b15ed341,20.0.0-52-g73d9071+9bf1eb8e0a,20.0.0-7-gcda7bf1+773ba852cb,20.0.0-8-g4540fe2a+952f6d3c43,20.0.0-9-g61a2a9a3d+14f89e4eca,w.2020.40
LSSTDataManagementBasePackage
showFootprints.py
Go to the documentation of this file.
1 """
2 function to show a list of src footprints in a mosaic
3 """
4 
5 import argparse
6 
7 import lsst.afw.image
9 import lsst.afw.display as afwDisplay
11 
12 from . import matchFakes
13 
14 import numpy.random
15 
16 
17 def getMosaic(sources, exposure, idname):
18  """
19  make a mosaic for the given source list from the given exposure
20 
21  stolen from psfMosaic.py on the sphinx documentation
22  """
23  img = exposure.getMaskedImage().getImage()
24  subImages = []
25  labels = []
26  for src in sources:
27  footBBox = src.getFootprint().getBBox()
28  subimg = lsst.afw.image.ImageF(img, footBBox,
29  lsst.afw.image.PARENT, True)
30  footMask = lsst.afw.image.ImageU(footBBox)
31  src.getFootprint().insertIntoImage(footMask, 1, footBBox)
32  subimg *= footMask.convertF()
33  subImages.append(subimg)
34  labels.append('ID=%s' % str(src.get(idname)))
35 
36  m = afwDisplay.utils.Mosaic()
37  m.setGutter(2)
38  m.setBackground(0)
39  m.setMode("square")
40 
41  # create the mosaic
42  for img in subImages:
43  m.append(img)
44  mosaic = m.makeMosaic()
45 
46  # display it with labels
47  disp = afwDisplay.Display()
48  disp.mtv(mosaic, title="mosaic")
49  m.drawLabels(labels)
50 
51 
52 def main(root, visit, ccd, fakes=None, blends=False, listobj=16, filt=None):
53 
54  butler = lsst.daf.persistence.Butler(root)
55  dataId = {'visit': visit,
56  'ccd': int(ccd)} if filt is None else {'tract': visit,
57  'patch': ccd,
58  'filter': filt}
59 
60  if fakes is not None:
61  src = matchFakes.getFakeSources(butler, dataId,
62  extraCols=('zeropoint'),
63  radecMatch=fakes)
64  else:
65  src = butler.get('src' if filt is None else 'deepCoadd-src', dataId)
66  if not blends:
67  src = [s for s in src if ((s.get('deblend.nchild') == 0) &
68  (s.get('parent') == 0))]
69  else:
70  src = [s for s in src if (s.get('deblend.nchild') == 0)]
71 
72  exposure = butler.get('calexp' if filt is None else 'deepCoadd', dataId)
73 
74  if type(listobj) is int:
75  listobj = numpy.random.choice(list(range(len(src))), listobj, False)
76 
77  srcList = [src[i] for i in listobj]
78 
79  getMosaic(srcList, exposure, 'fakeId' if fakes else 'id')
80 
81 
82 if __name__ == '__main__':
83  parser = argparse.ArgumentParser()
84  parser.add_argument('root', help="Root directory of data repository")
85  parser.add_argument("visit", type=int, help="Visit or tract")
86  parser.add_argument("ccd", type=str, help="CCD or patch")
87  parser.add_argument('-d', '--band', default=None,
88  help='HSC filter, used with tract/patch')
89  parser.add_argument('-f', '--fake', default=None,
90  help='show fake sources, using -f as catalog')
91  parser.add_argument('-n', '--number', dest='num',
92  help='number of objects to show',
93  default=16, type=int)
94  parser.add_argument('-b', '--blends', action='store_true',
95  default=False, help='show blended systems')
96 
97  args = parser.parse_args()
98 
99  main(args.root, args.visit, args.ccd,
100  fakes=args.fake, listobj=args.num,
101  blends=args.blends, filt=args.band)
lsst::afw.display.utils
Definition: utils.py:1
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition: imageAlgorithm.dox:1
lsst::afw.display
Definition: __init__.py:1
lsst.synpipe.showFootprints.getMosaic
def getMosaic(sources, exposure, idname)
Definition: showFootprints.py:17
lsst.synpipe.showFootprints.main
def main(root, visit, ccd, fakes=None, blends=False, listobj=16, filt=None)
Definition: showFootprints.py:52
lsst::daf::persistence.butler.Butler
Definition: butler.py:321
list
daf::base::PropertyList * list
Definition: fits.cc:913
type
table::Key< int > type
Definition: Detector.cc:163
lsst::daf::persistence
Definition: Utils.h:50