davidwhogg / SloanAtlas

code to assemble the plates of the Sloan Atlas of Galaxies
4 stars 0 forks source link

what is the PSF model #30

Open davidwhogg opened 11 years ago

davidwhogg commented 11 years ago

DSTN: We have this request in the paper:

"For the PSF model, we use the SDSS double-Gaussian model stored in the ``psField'' file. DSTN: What do we get as parameters for that double-Gaussian model? I think it is less than 1 + 4 + 6 parameters that a K=2 D=2 MoG would have, right?"

Can you answer this either in this issue or in the paper?

dstndstn commented 11 years ago

They are concentric, circular Gaussians, so the parameters are just the relative heights and the two sigmas; three parameters total.

davidwhogg commented 11 years ago

can you point to the code that translates from the psField meta-data?

dstndstn commented 11 years ago

In tractor/sdss.py: get_tractor_image():

if psf == 'dg':
    dgpsf = psfield.getDoubleGaussian(bandnum, normalize=True)
    print 'Creating double-Gaussian PSF approximation'
    (a,s1, b,s2) = dgpsf
    mypsf = NCircularGaussianPSF([s1, s2], [a, b])

where

psfield = sdss.readPsField(run, camcol, field)

which is in astrometry/sdss/dr7.py and common.py :

def getDoubleGaussian(self, bandnum, normalize=False):
    # http://www.sdss.org/dr7/dm/flatFiles/psField.html
    # good = PSP_FIELD_OK
    status = self.psp_status[bandnum]
    if status != 0:
        print 'Warning: PsField status[band=%s] =' % (bandnum), status

    # b is the "ratio of G2 to G1 at the origin", ie, not the
    # straight Gaussian amplitudes
    a  = 1.0
    s1 = self.dgpsf_s1[bandnum]
    s2 = self.dgpsf_s2[bandnum]
    b  = self.dgpsf_b[bandnum]

    # value at center is 1./(2.*pi*sigma**2)

    if normalize:
        b *= (s2/s1)**2
        absum = (a + b)
        a /= absum
        b /= absum

    return (float(a), float(s1), float(b), float(s2))
davidwhogg commented 11 years ago

reassigning this to Hogg to write it up.