LSSTApplications  17.0+10,17.0+51,17.0+88,18.0.0+10,18.0.0+15,18.0.0+34,18.0.0+4,18.0.0+6,18.0.0-2-ge43143a+6,18.1.0-1-g0001055+2,18.1.0-1-g0896a44+10,18.1.0-1-g1349e88+9,18.1.0-1-g2505f39+7,18.1.0-1-g380d4d4+9,18.1.0-1-g5e4b7ea+2,18.1.0-1-g7e8fceb,18.1.0-1-g85f8cd4+7,18.1.0-1-g9a6769a+3,18.1.0-1-ga1a4c1a+6,18.1.0-1-gc037db8+2,18.1.0-1-gd55f500+3,18.1.0-1-ge10677a+7,18.1.0-10-g73b8679e+12,18.1.0-12-gf30922b,18.1.0-13-g451e75588,18.1.0-13-gbfe7f7f,18.1.0-2-g31c43f9+7,18.1.0-2-g9c63283+9,18.1.0-2-gdf0b915+9,18.1.0-2-gf03bb23+2,18.1.0-3-g52aa583+3,18.1.0-3-g8f4a2b1+1,18.1.0-3-g9cb968e+8,18.1.0-4-g7bbbad0,18.1.0-5-g510c42a+8,18.1.0-5-ga46117f,18.1.0-5-gaeab27e+9,18.1.0-6-gdda7f3e+11,18.1.0-8-g4084bf03+1,w.2019.34
LSSTDataManagementBasePackage
Functions
lsst.synpipe.matchFakeStars Namespace Reference

Functions

def getFakeSources (rootdir, dataId, tol=0.1)
 
def main ()
 

Detailed Description

matchFakes.py
matches fakes based on position stored in the calibrated exposure image header

Function Documentation

◆ getFakeSources()

def lsst.synpipe.matchFakeStars.getFakeSources (   rootdir,
  dataId,
  tol = 0.1 
)
Get list of sources which agree in position with fake ones with tol

Definition at line 15 of file matchFakeStars.py.

15 def getFakeSources(rootdir, dataId, tol=0.1):
16  """Get list of sources which agree in position with fake ones with tol
17  """
18  butler = dafPersist.Butler(rootdir)
19 
20  sources = butler.get('src', dataId)
21  cal_md = butler.get('calexp_md', dataId)
22 
23  # Get the X, Y locations of objects on the CCD
24  srcX, srcY = sources.getX(), sources.getY()
25  # Get the zeropoint
26  zeropoint = 2.5*np.log10(cal_md.getScalar("FLUXMAG0"))
27  # Get the PSF flux and its error
28  flux, ferr = sources.getPsfFlux(), sources.getPsfFluxErr()
29  # Convert them into magnitude and its error
30  mag, merr = 2.5*np.log10(flux), 2.5/np.log(10)*(ferr/flux)
31  mag = zeropoint - mag
32 
33  # X, Y locations of the fake stars
34  fakeXY = collections.defaultdict(tuple)
35  # Regular Expression
36  fakename = re.compile('FAKE([0-9]+)')
37  for card in cal_md.names():
38  m = fakename.match(card)
39  if m is not None:
40  x, y = list(map(float, (cal_md.getScalar(card)).split(',')))
41  fakeXY[int(m.group(1))] = (x, y)
42 
43  srcIndex = collections.defaultdict(list)
44  for fid, fcoord in fakeXY.items():
45  matched = ((np.abs(srcX-fcoord[0]) < tol) &
46  (np.abs(srcY-fcoord[1]) < tol))
47  srcIndex[fid] = np.where(matched)[0]
48 
49  srcPsfMag = []
50  srcPsfMerr = []
51  matchX = []
52  matchY = []
53  for s in srcIndex.values():
54  if len(s) > 0:
55  ss = s[0]
56  srcPsfMag.append(mag[ss])
57  srcPsfMerr.append(merr[ss])
58  matchX.append(srcX[ss])
59  matchY.append(srcY[ss])
60  else:
61  srcPsfMag.append(0)
62  srcPsfMerr.append(0)
63  matchX.append(0)
64  matchY.append(0)
65 
66  return srcIndex, fakeXY, matchX, matchY, srcPsfMag, srcPsfMerr
67 
68 
def getFakeSources(rootdir, dataId, tol=0.1)
daf::base::PropertyList * list
Definition: fits.cc:885

◆ main()

def lsst.synpipe.matchFakeStars.main ( )

Definition at line 69 of file matchFakeStars.py.

69 def main():
70 
71  # TODO: this should use the LSST/HSC conventions
72  parser = argparse.ArgumentParser()
73  parser.add_argument('rootDir', help='root dir of data repo')
74  parser.add_argument('visit', help='id of visit', type=int)
75  parser.add_argument('ccd', help='id of ccd', type=int)
76  args = parser.parse_args()
77 
78  starIndex, fakeXY, matchX, matchY, starPsfMag, starPsfMerr = getFakeSources(args.rootDir,
79  {'visit': args.visit,
80  'ccd': args.ccd})
81 
82  nInject = len(fakeXY)
83  nMatch = len(np.argwhere(starPsfMag))
84  print("# Number of Injected Stars : %d" % nInject)
85  print("# Number of Matched Stars : %d" % nMatch)
86  print("# Visit = %d CCD = %d" % (args.visit, args.ccd))
87  print("# FakeX FakeY PSFMag PSFMagErr Deblend ")
88 
89  for i in range(nInject):
90  if len(starIndex[i]) > 1:
91  deblend = "blended"
92  elif starPsfMag[i] > 0:
93  deblend = "isolate"
94  else:
95  deblend = "nomatch"
96 
97  injectXY = fakeXY[i]
98 
99  print("%6.1d %6.1d %7.3f %6.3f %s" % (injectXY[0], injectXY[1],
100  starPsfMag[i], starPsfMerr[i], deblend))
101 
102 
def getFakeSources(rootdir, dataId, tol=0.1)