Skip to content
Snippets Groups Projects
Commit c7a66e8c authored by Alexander Kutkin's avatar Alexander Kutkin
Browse files

fixed wrong mask file usage

parent 4abda057
No related branches found
No related tags found
No related merge requests found
......@@ -378,12 +378,6 @@ def auto_clustering(fig, ax, df, wcs, resid_data, pix_arcmin_scale, nbright,
small_resid = resid_data[py-boxsize:py+boxsize, px-boxsize:px+boxsize]
ellipse_mean, ecc, amaj, numpix = ellipses_coh(small_resid, amin=20, amax=boxsize-1, dr=1.0)
# print ellipse_mean, ecc, amaj, numpix
# if abs(ring_mean/resid_mean) > 1.7e5:
# if abs(ring_mean/small_resid_mean) > 1e4:
if nclusters=='auto':
if abs(ellipse_mean/rms) > 1.4:
......@@ -451,12 +445,20 @@ def auto_clustering(fig, ax, df, wcs, resid_data, pix_arcmin_scale, nbright,
return final_clusters
# TODO
def voronoy_clustering():
"""
Use Voronoy clustering instead of fixed radius around sources
"""
pass
def main(img, resid, model, auto=True, add_manual=False, nclusters=5, boxsize=250,
nbright=80, cluster_radius=5, cluster_overlap=1.6):
path = os.path.split(os.path.abspath(img))[0]
output = os.path.splitext(img)[0]+'-clustered.txt'
imgbase = os.path.splitext(img)[0]
output = imgbase + '-clustered.txt'
df = pd.read_csv(model, skipinitialspace=True)
df['ra'] = df.Ra.apply(ra2deg)
......@@ -491,7 +493,7 @@ def main(img, resid, model, auto=True, add_manual=False, nclusters=5, boxsize=25
if clusters:
write_df(df, clusters, output=output)
fig.tight_layout()
fig.savefig(path+'/clustering.png')
fig.savefig(imgbase+'-clustering.png')
return output
......
......@@ -326,13 +326,13 @@ def main(msin, outbase=None, cfgfile='imcal.yml'):
img1 = outbase + '_1'
img2 = outbase + '_2'
img3 = outbase + '_3'
img_final = outbase
img_final = outbase + '-dical'
img_ddsub = outbase + '-ddsub'
img_ddcal = outbase + '-ddcal'
mask0 = 'mask0.fits'
mask1 = 'mask1.fits'
mask2 = 'mask2.fits'
mask0 = outbase + '-mask0.fits'
mask1 = outbase + '-mask1.fits'
mask2 = outbase + '-mask2.fits'
model1 = outbase + '_model1.sourcedb'
model2 = outbase + '_model2.sourcedb'
......@@ -364,45 +364,46 @@ def main(msin, outbase=None, cfgfile='imcal.yml'):
threshold = img_max/cfg['clean0']['max_over_thresh']
wsclean(ms_split, outname=img0, automask=None, save_source_list=False, multifreq=False, mgain=None,
kwstring=f'-threshold {threshold}')
if not os.path.exists('mask0.fits') :
create_mask(img0 +'-image.fits', img0 +'-residual.fits', clipval=20, outname='mask0.fits')
create_mask(img0 +'-image.fits', img0 +'-residual.fits', clipval=20, outname=mask0)
# clean1
if not os.path.exists(img1 +'-image.fits') and (not os.path.exists(img1 +'-MFS-image.fits')):
wsclean(ms_split, outname=img1, **cfg['clean1']) # fast shallow clean
wsclean(ms_split, fitsmask=mask0, outname=img1, **cfg['clean1']) # fast shallow clean
if not os.path.exists(model1):
makesourcedb(img1+'-sources.txt', out=model1)
# dical1
if not os.path.exists(dical1):
dical1 = dical(ms_split, model1, msout=dical1, h5out=h5_1, **cfg['dical1'])
view_sols(h5_1, outname='dical1')
# clean2
if (not os.path.exists(img2 +'-image.fits')) and (not os.path.exists(img2 +'-MFS-image.fits')):
wsclean(dical1, outname=img2, **cfg['clean2'])
create_mask(img2 +'-image.fits', img2 +'-residual.fits', clipval=7, outname='mask1.fits')
wsclean(dical1, fitsmask=mask0, outname=img2, **cfg['clean2'])
create_mask(img2 +'-image.fits', img2 +'-residual.fits', clipval=7, outname=mask1)
if not os.path.exists(model2):
makesourcedb(img2+'-sources.txt', out=model2)
# dical2
if not os.path.exists(dical2):
dical2 = dical(dical1, model2, msout=dical2, h5out=h5_2, **cfg['dical2'])
view_sols(h5_2, outname='dical2')
# clean3
if (not os.path.exists(img3 +'-image.fits')) and (not os.path.exists(img3 +'-MFS-image.fits')):
wsclean(dical2, outname=img3, **cfg['clean3'])
create_mask(img3 +'-image.fits', img3 +'-residual.fits', clipval=5, outname='mask2.fits')
wsclean(dical2, fitsmask=mask1, outname=img3, **cfg['clean3'])
create_mask(img3 +'-image.fits', img3 +'-residual.fits', clipval=5, outname=mask2)
if not os.path.exists(model3):
makesourcedb(img3+'-sources.txt', out=model3)
# dical3
if not os.path.exists(dical3):
dical3 = dical(dical2, model3, msout=dical3, h5out=h5_3, **cfg['dical3'])
view_sols(h5_3, outname='dical3')
# clean4
if (not os.path.exists(img_final +'-image.fits')) and (not os.path.exists(img_final +'-MFS-image.fits')):
wsclean(dical3, outname=img_final, **cfg['clean4'])
wsclean(dical3, fitsmask=mask2, outname=img_final, **cfg['clean4'])
# Cluster
......
......@@ -24,7 +24,6 @@ clean1: # wsclean setup
mgain: 0
automask: 20
autothresh: 5
fitsmask: 'mask0.fits'
multiscale: False
kwstring: '-use-wgridder -parallel-deconvolution 1400' # use this for additional wsclean options, e.g. '-weight uniform -use-idg'
......@@ -32,7 +31,7 @@ dical1: # DPPP setup for direction independent calibration
solint: 20
mode: 'phaseonly'
uvlambdamin: 500 # Ignore baselines / channels with UV < uvlambdamin wavelengths.
# cal_nchan: 31 # number of chans with the same solutions
cal_nchan: 30 # number of chans with the same solutions
clean2:
imagesize: 3072
......@@ -40,7 +39,6 @@ clean2:
multifreq: 8
automask: 10
autothresh: 5
fitsmask: 'mask0.fits'
multiscale: True
kwstring: '-use-wgridder -parallel-deconvolution 1400 -parallel-gridding 8 -deconvolution-channels 3'
......@@ -48,7 +46,7 @@ dical2:
solint: 1
mode: 'phaseonly'
uvlambdamin: 500 # Ignore baselines / channels with UV < uvlambdamin wavelengths.
cal_nchan: 31 # number of chans with the same solutions
cal_nchan: 30 # number of chans with the same solutions
clean3:
imagesize: 3072
......@@ -56,7 +54,6 @@ clean3:
multifreq: 8
automask: 7
autothresh: 3.5
fitsmask: 'mask1.fits'
multiscale: True
kwstring: '-use-wgridder -parallel-deconvolution 1400 -parallel-gridding 8 -deconvolution-channels 3'
......@@ -64,7 +61,7 @@ dical3:
solint: 800
mode: 'diagonal'
uvlambdamin: 500 # Ignore baselines / channels with UV < uvlambdamin wavelengths.
cal_nchan: 31 # number of chans with the same solutions
cal_nchan: 30 # number of chans with the same solutions.
clean4:
imagesize: 3072
......@@ -73,7 +70,6 @@ clean4:
automask: 4.5
autothresh: 0.5
multiscale: True
fitsmask: 'mask2.fits'
kwstring: '-use-wgridder -parallel-deconvolution 1400 -parallel-gridding 8 -deconvolution-channels 3 -weight briggs 0.0'
####################### CLUSTERING #######################
......@@ -88,9 +84,9 @@ cluster:
######################## DD CALIBRATION #######################
ddcal: # see DPPP/DDECal documentation
solint: 120 # Solution interval in timesteps (1 ~ 30sec for Apertif).
solint: 120 # Solution interval in timesteps (1 corresponds to 30 seconds for Apertif).
mode: 'diagonal' # Type of constraint to apply.
nfreq: 15 # Number of channels in each channel block, for which the solution is assumed to be constant.
nfreq: 30 # Number of channels in each channel block, for which the solution is assumed to be constant.
startchan: 0
nchan: 0
uvlambdamin: 500 # Ignore baselines / channels with UV < uvlambdamin wavelengths.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment