#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)
Beispiel #2
0
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")
Beispiel #3
0
# 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")