763 def read_samplesLsst(prefs, set, filename, frmin, frmax, ext, next, catindex, context, pcval, nobj,
764 plot=dict(showFlags=
False, showRejection=
False)):
767 set = psfexLib.Set(context)
769 cmin, cmax =
None,
None
770 if set.getNcontext():
771 cmin = np.empty(set.getNcontext())
772 cmax = np.empty(set.getNcontext())
773 for i
in range(set.getNcontext()):
775 cmin[i] = set.getContextOffset(i) - set.getContextScale(i)/2.0
776 cmax[i] = cmin[i] + set.getContextScale(i)
778 cmin[i] = psfexLib.BIG
779 cmax[i] = -psfexLib.BIG
783 tab = afwTable.SourceCatalog.readFits(filename)
785 centroid = tab.getCentroidDefinition()
786 xm = tab.get(
"%s.x" % centroid)
787 ym = tab.get(
"%s.y" % centroid)
789 shape = tab.getShapeDefinition()
790 ixx = tab.get(
"%s.xx" % shape)
791 iyy = tab.get(
"%s.yy" % shape)
793 rmsSize = np.sqrt(0.5*(ixx + iyy))
794 elong = 0.5*(ixx - iyy)/(ixx + iyy)
796 flux = tab.get(prefs.getPhotfluxRkey())
797 fluxErr = tab.get(prefs.getPhotfluxerrRkey())
805 set.setVigSize(vigw, vigh)
807 vignet = np.empty(nobj*vigw*vigh,
"float32").reshape(nobj, vigw, vigh)
811 mi = afwImage.MaskedImageF(calexpFile)
812 backnoise2 = np.median(mi.getVariance().getArray())
815 edgeBit = [k
for k, v
in getFlags().
items()
if v ==
"edge"][0]
817 for i, xc, yc
in zip(range(nobj), xm, ym):
819 x, y = int(xc), int(yc)
824 pstamp = mi[x - vigw//2:x + vigw//2 + 1, y - vigh//2:y + vigh//2 + 1]
825 vignet[i] = pstamp.getImage().getArray().transpose()
832 for i, key
in enumerate(context.getName()):
833 if context.getPcflag(i):
834 contextvalp.append(pcval[pc])
838 contextvalp.append(tab.header[key[1:]])
840 raise RuntimeError(
"*Error*: %s parameter not found in the header of %s" %
844 contextvalp.append(tab.get(key))
846 raise RuntimeError(
"*Error*: %s parameter not found in the header of %s" %
848 set.setContextname(i, key)
852 flags, flux, fluxErr, rmsSize, elong, vignet,
853 plot=plot, title=
"%s[%d]" % (filename, ext + 1)
if next > 1
else filename)
857 if not vignet.dtype.isnative:
860 vignet = vignet.byteswap()
862 for i
in np.where(good)[0]:
863 sample = set.newSample()
864 sample.setCatindex(catindex)
865 sample.setExtindex(ext)
867 sample.setVig(vignet[i])
869 pstamp = afwImage.ImageF(*vignet[i].shape)
870 pstamp.getArray()[:] = sample.getVig()
871 afwDisplay.Display().
mtv(pstamp)
873 sample.setNorm(float(flux[i]))
874 sample.setBacknoise2(backnoise2)
876 sample.setX(float(xm[i]))
877 sample.setY(float(ym[i]))
878 sample.setFluxrad(float(rmsSize[i]))
880 for j
in range(set.getNcontext()):
881 sample.setContext(j, float(contextvalp[j][i]))
883 set.finiSample(sample, prefs.getProfAccuracy())
886 for j
in range(set.getNcontext()):
887 cmin[j] = contextvalp[j][good].
min()
888 cmax[j] = contextvalp[j][good].
max()
892 for i
in range(set.getNcontext()):
893 set.setContextScale(i, cmax[i] - cmin[i])
894 set.setContextOffset(i, (cmin[i] + cmax[i])/2.0)