def __init__(self, psf_file_path): """Constructor. """ logger.info("Reading PSF data from %s..." % psf_file_path) self.hdu_list = fits.open(psf_file_path) self.hdu_list.info() _data = self.hdu_list["PSF"].data W = _data["W"] sigma = _data["SIGMA"] N = _data["N"] r_c = _data["R_C"] eta = _data["ETA"] self.__params = (W, sigma, N, r_c, eta) # Tabulate the actual PSF values. _r = numpy.linspace(0, self.MAX_RADIUS, 250) _y = gauss_king(_r, *self.__params) fmt = dict(xname="r", xunits="arcsec", yname="PSF", yunits="sr$^{-1}$") xInterpolatedUnivariateSpline.__init__(self, _r, _y, k=2, **fmt) # Include the solid angle for the actual underlying random generator. _y *= 2 * numpy.pi * _r fmt = dict(rvname="r", rvunits="arcsec", pdfname="$2 \\pi r \\times$ PSF", pdfunits="") self.generator = xUnivariateGenerator(_r, _y, k=1, **fmt) # Finally, calculate the self.eef, self.hew = self.build_eef() logger.info(self)
def __init__(self, rv, pdf, w=None, bbox=[None, None], k=1, rvname=None, rvunits=None, pdfname='pdf', pdfunits=None): """ Constructor. """ if pdfunits is None and rvunits is not None: pdfunits = '1/%s' % rvunits xInterpolatedUnivariateSpline.__init__(self, rv, pdf, w, bbox, k, rvname, rvunits, pdfname, pdfunits) self.ppf = self.build_ppf()
def __init__(self, rv, pdf, w=None, bbox=[None, None], k=1, rvname=None, rvunits=None, pdfname='pdf', pdfunits=None): """ Constructor. """ if pdfunits is None and rvunits is not None: pdfunits = '1/%s' % rvunits xInterpolatedUnivariateSpline.__init__(self, rv, pdf, w, bbox, k, rvname, rvunits, pdfname, pdfunits) self.ppf = self.build_ppf()