#Image with complex visibilities out = mx.maxen(obs, gaussprior, maxit=250, alpha=100) mx.blur_circ(out, 0.5e-10).display() #Image with only closure quantities out_cl = mx.maxen_onlyclosure(obs, out, flux = 1.0, maxit=1000, alpha_clphase=100, alpha_clamp=100, gamma=500, delta=500, entropy="simple", stop=1e-10) out_cl = mx.maxen_onlyclosure(obs, mx.blur_circ(out, 2e-10), flux = 1.0, maxit=1000, alpha_clphase=100, alpha_clamp=100, gamma=500, delta=500, entropy="simple", stop=1e-10) out_cl = mx.maxen_onlyclosure(obs, gaussprior, flux = 1.0, maxit=100, alpha_clphase=10, alpha_clamp=10, gamma=500, delta=500, entropy="simple", stop=1e-10) out_cl = mx.maxen_onlyclosure(obs, mx.blur_circ(out_cl, 1e-10), flux = 1.0, maxit=100, alpha_clphase=10, alpha_clamp=10, gamma=500, delta=500, entropy="simple", stop=1e-10) out_cl = mx.maxen_onlyclosure(obs, mx.blur_circ(out, 0.5e-10), flux = 1.0, maxit=1000, alpha_clphase=100, alpha_clamp=100, gamma=500, delta=500, entropy="simple", stop=1e-10) #Image with only closure quantities out = mx.maxen_onlyclosure(obs, gaussprior, flux = 1.0, maxit=1000, alpha_clphase=100, alpha_clamp=100, gamma=500, delta=500, entropy="simple", stop=1e-10) #Image with bispectrum out = mx.maxen_bs(obs, gaussprior, 2.0, maxit=50, alpha=100, stop=1e-10) #Image with only closure quantities out = mx.maxen_onlyclosure(obs, gaussprior, flux = 1.0, maxit=1000, alpha_clphase=100, alpha_clamp=100, gamma=500, delta=500, entropy="simple", stop=1e-10)
obs.save_uvfits('obs.uvp') # exports a UVFITS file modeled on template.UVP # Generate an image prior npix = 100 fov = 1*im.xdim * im.psize zbl = np.sum(im.imvec) # total flux prior_fwhm = 200*vb.RADPERUAS # Gaussian size in microarcssec emptyprior = vb.make_square(obs, npix, fov) flatprior = vb.add_flat(emptyprior, zbl) gaussprior = vb.add_gauss(emptyprior, zbl, (prior_fwhm, prior_fwhm, 0, 0, 0)) # Image total flux with the bispectrum flux = np.sum(im.imvec) #out = mx.maxen_amp_cphase(obs, gaussprior, gaussprior, flux, maxit=50, alpha_clphase=1000, alpha_visamp=1000) out = mx.maxen_bs(obs, gaussprior, gaussprior, flux, maxit=25, alpha=5000) # Blur the image with a circular beam and image again to help convergance out = mx.blur_circ(out, res) out = mx.maxen_bs(obs, out, out, flux, maxit=100, alpha=500, entropy="tv") out = mx.blur_circ(out, res/2) out = mx.maxen_bs(obs, out, out, flux, maxit=100, alpha=100, entropy="tv") out = mx.blur_circ(out, res/2) out = mx.maxen_bs(obs, out, out, flux, maxit=100, alpha=50, entropy="tv") # Blur the final image with 1/2 the clean beam outblur = vb.blur_gauss(out, beamparams, 0.5) out.display() # Image Polarization # out = mx.maxen_m(obs, out, beta=100, maxit=250, polentropy="hw")
# determine the multiplier you use to increase the scale if(nScales == 1): scaleFactor = 1 else: scaleFactor = np.exp((np.log(sizeFinal) - np.log(sizeStart))/(nScales-1)); # create the prior emptyprior = vb.make_square(obs, sizeStart, fov) emptyprior.pulse = pulses.trianglePulse2D gaussprior = vb.add_gauss(emptyprior, flux, (prior_fwhm, prior_fwhm, 0, 0, 0)) gaussprior.pulse = pulses.trianglePulse2D # initial image cleanI = mx.maxen_bs(obs, gaussprior, gaussprior, flux, maxit=50, alpha=1e5, stop=1e-15) # iterate through scales for s in range(1,nScales+1): # resize the image sizeCurr = np.round(scaleFactor**(s-1)*sizeStart); cleanI = vb.resample_square(cleanI, sizeCurr) # solve for the image under different patch noise levels (beta) for beta in (1.0, 4.0, 8.0, 16.0, 32.0, 64.0, 128.0, 256.0, 512.0): print "scale: " + str(s) + " beta: " + str(beta) patchprior, count = pp.patchPrior(cleanI, beta) #*1000.0 #cleanI = mx.maxen_bs(obs, cleanI, patchprior, flux, maxit=50, alpha=10.0, gamma=500, delta=500, beta=beta*count, entropy="patch", datamin="lin")