4 matches fakes based on position stored in the calibrated exposure image header 6 from __future__
import print_function
8 from builtins
import map
9 from builtins
import range
11 from lsst.afw.table.tableLib
import SourceCatalog
19 """Get list of sources which agree in position with fake ones with tol 21 butler = dafPersist.Butler(rootdir)
23 sources = butler.get(
'src', dataId)
24 cal_md = butler.get(
'calexp_md', dataId)
27 srcX, srcY = sources.getX(), sources.getY()
29 zeropoint = 2.5*np.log10(cal_md.get(
"FLUXMAG0"))
31 flux, ferr = sources.getPsfFlux(), sources.getPsfFluxErr()
33 mag, merr = 2.5*np.log10(flux), 2.5/np.log(10)*(ferr/flux)
37 fakeXY = collections.defaultdict(tuple)
39 fakename = re.compile(
'FAKE([0-9]+)')
40 for card
in cal_md.names():
41 m = fakename.match(card)
43 x, y = list(map(float, (cal_md.get(card)).split(
',')))
44 fakeXY[
int(m.group(1))] = (x, y)
46 srcIndex = collections.defaultdict(list)
47 for fid, fcoord
in fakeXY.items():
48 matched = ((np.abs(srcX-fcoord[0]) < tol) &
49 (np.abs(srcY-fcoord[1]) < tol))
50 s1 = sources.subset(matched)
51 srcIndex[fid] = np.where(matched)[0]
58 for s
in srcIndex.values():
66 srcPsfMag.append(mag[ss])
67 srcPsfMerr.append(merr[ss])
68 matchX.append(srcX[ss])
69 matchY.append(srcY[ss])
76 return srcIndex, fakeXY, matchX, matchY, srcPsfMag, srcPsfMerr
82 parser = argparse.ArgumentParser()
83 parser.add_argument(
'rootDir', help=
'root dir of data repo')
84 parser.add_argument(
'visit', help=
'id of visit', type=int)
85 parser.add_argument(
'ccd', help=
'id of ccd', type=int)
86 args = parser.parse_args()
89 (starIndex, fakeXY, matchX, matchY, starPsfMag, starPsfMerr) =
getFakeSources(args.rootDir,
90 {
'visit': args.visit,
'ccd': args.ccd})
93 nMatch = len(np.argwhere(starPsfMag))
94 print(
"# Number of Injected Stars : %d" % nInject)
95 print(
"# Number of Matched Stars : %d" % nMatch)
96 print(
"# Visit = %d CCD = %d" % (args.visit, args.ccd))
97 print(
"# FakeX FakeY PSFMag PSFMagErr Deblend ")
99 for i
in range(nInject):
100 if len(starIndex[i]) > 1:
102 elif starPsfMag[i] > 0:
109 print(
"%6.1d %6.1d %7.3f %6.3f %s" % (injectXY[0], injectXY[1],
110 starPsfMag[i], starPsfMerr[i], deblend))
113 if __name__ ==
'__main__':
def getFakeSources(rootdir, dataId, tol=0.1)