Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions crowdsource/psf.py
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ def fill_param_matrix(param, order):


def extract_params(param, order, pixsz):
nperpar = (order+1)*(order+2)/2
nperpar = (order+1)*(order+2)//2
if (pixsz**2.+3)*nperpar != len(param):
raise ValueError('Bad parameter vector size?')
return [fill_param_matrix(x, order) for x in
Expand All @@ -665,7 +665,7 @@ def extract_params(param, order, pixsz):


def extract_params_moffat(param, order):
nperpar = (order+1)*(order+2)/2
nperpar = (order+1)*(order+2)//2
if 3*nperpar != len(param):
raise ValueError('Bad parameter vector size?')
return [fill_param_matrix(x, order) for x in
Expand All @@ -691,8 +691,10 @@ def plot_psf_fits(stamp, x, y, model, isig, name=None, save=False):
ind = m[numpy.argmax(numpy.median(isig[m, :, :], axis=(1, 2)))]
datim0 = stamp[ind, :, :]
modim0 = model[ind, :, :]
datim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = datim0-medmodel
modim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = modim0-medmodel
# datim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = datim0-medmodel
# modim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = modim0-medmodel
datim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = datim0
modim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = modim0
p.figure(figsize=(24, 8), dpi=150)
p.subplot(1, 3, 1)
p.imshow(datim, aspect='equal', vmin=-0.005, vmax=0.005, cmap='binary')
Expand All @@ -714,11 +716,11 @@ def plot_psf_fits(stamp, x, y, model, isig, name=None, save=False):

def plot_psf_fits_brightness(stamp, x, y, model, isig):
from matplotlib import pyplot as p
import util_efs
# import util_efs
nx, ny = 10, 10
datim = numpy.zeros((stamp.shape[1]*nx, stamp.shape[1]*ny), dtype='f4')
modim = numpy.zeros((stamp.shape[1]*nx, stamp.shape[1]*ny), dtype='f4')
medmodel = numpy.median(model, axis=0)
medmodel = numpy.median(model, axis=0) *0
s = numpy.argsort(-numpy.median(isig, axis=(1, 2)))
sz = stamp.shape[-1]
for i in range(nx):
Expand All @@ -732,13 +734,13 @@ def plot_psf_fits_brightness(stamp, x, y, model, isig):
modim[i*sz:(i+1)*sz, j*sz:(j+1)*sz] = modim0-medmodel
p.figure('psfs')
p.subplot(1, 3, 1)
util_efs.imshow(datim, aspect='equal', vmin=-0.005, vmax=0.005)
p.imshow(datim, vmin=-0.005, vmax=0.005)
p.title('Stamps')
p.subplot(1, 3, 2)
util_efs.imshow(modim, aspect='equal', vmin=-0.005, vmax=0.005)
p.imshow(modim, vmin=-0.005, vmax=0.005)
p.title('Model')
p.subplot(1, 3, 3)
util_efs.imshow(datim-modim, aspect='equal', vmin=-0.001, vmax=0.001)
p.imshow(datim-modim, vmin=-0.001, vmax=0.001)
p.title('Residuals')
p.draw()

Expand Down Expand Up @@ -792,7 +794,7 @@ def chipix(param, resid, isig):
tchi = (resid - polyval2d(x/1000., y/1000., mat))*isig
return damper(tchi, 3.).reshape(-1)

nperpar = (order+1)*(order+2)/2
nperpar = (order+1)*(order+2)//2
guess = numpy.zeros(3*nperpar+1, dtype='f4')
constanttermindex = nperpar - order - 1
guess[0+constanttermindex] = 4. # 1" PSF
Expand Down Expand Up @@ -1076,7 +1078,7 @@ def chiconv(param):
resid_cen = central_stamp(resid, censize=pixsz)
isig_cen = central_stamp(isig, censize=pixsz)
residfitdict = {}
nperpar = (order+1)*(order+2)/2
nperpar = (order+1)*(order+2)//2
residguess = numpy.zeros(int(nperpar), dtype='f4')

for i in range(pixsz):
Expand Down Expand Up @@ -1148,6 +1150,7 @@ def linear_static_wing_from_record(record, filter='g'):
def wise_psf_fit(x, y, xcen, ycen, stamp, imstamp, modstamp,
isig, pixsz=9, nkeep=200, plot=False,
psfstamp=None, grid=False, name=None):

if psfstamp is None:
raise ValueError('psfstamp must be set')
# clean and shift the PSFs first.
Expand Down Expand Up @@ -1196,10 +1199,13 @@ def wise_psf_fit(x, y, xcen, ycen, stamp, imstamp, modstamp,
npsfstamp = numpy.mean(npsfstamp, axis=(0, 1))
npsfstamp /= numpy.sum(central_stamp(npsfstamp, censize=stampsz))


resid = (stamp - central_stamp(npsfstamp, censize=stampsz))
resid = resid.astype('f4')
resid_cen = central_stamp(resid, censize=pixsz)
residmed = numpy.median(resid_cen, axis=0)
# import pdb
# pdb.set_trace()
if not grid:
newstamp = psfstamp.copy()
central_stamp(newstamp, censize=pixsz)[:, :] += residmed
Expand All @@ -1208,6 +1214,10 @@ def wise_psf_fit(x, y, xcen, ycen, stamp, imstamp, modstamp,
central_stamp(newstamp, censize=pixsz)[:, :, :, :] += (
residmed[None, None, :, :])

# import pdb
# pdb.set_trace()
print(plot)

if plot:
if not grid:
modstamp = central_stamp(newstamp, censize=stampsz)
Expand Down