From d5dfc43a1dbb68ca49190a29c0d83d571bc7f777 Mon Sep 17 00:00:00 2001 From: landmanbester Date: Tue, 30 Jan 2024 11:27:13 +0200 Subject: [PATCH] allow empty string for transfer_model_from parameter, allow l2reweight_dof=0 --- pfb/operators/gridder.py | 18 +++--------------- pfb/workers/grid.py | 4 ++-- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/pfb/operators/gridder.py b/pfb/operators/gridder.py index 7843e18a7..eba2c4d44 100644 --- a/pfb/operators/gridder.py +++ b/pfb/operators/gridder.py @@ -608,12 +608,10 @@ def image_data_products(uvw, ressq = (residual_vis*residual_vis.conj()).real wcount = mask.sum() if wcount: - ovar = ressq.sum()/wcount - l2wgt = (l2reweight_dof + 1)/(l2reweight_dof + ressq/ovar)/ovar + ovar = ressq.sum()/wcount # use 67% quantile? + wgt = (l2reweight_dof + 1)/(l2reweight_dof + ressq/ovar)/ovar else: - l2wgt = None - else: - l2wgt = None + wgt = None # we usually want to re-evaluate this since the robustness may change @@ -628,16 +626,7 @@ def image_data_products(uvw, nx, ny, cellx, celly, robustness) - - # this is necessitated by the way the weighting is done i.e. - # wgt applied to vis@init so only imwgt*l2wgt needs to be applied - if l2wgt is not None: - imwgt *= l2wgt - - # wgt*imwgt*l2wgt required for PSF wgt *= imwgt - else: - imwgt = None if do_weight: out_dict['WEIGHT'] = wgt @@ -650,7 +639,6 @@ def image_data_products(uvw, freq=freq, vis=vis, wgt=wgt, - # wgt=imwgt, # data already naturally weighted mask=mask, npix_x=nx, npix_y=ny, pixsize_x=cellx, pixsize_y=celly, diff --git a/pfb/workers/grid.py b/pfb/workers/grid.py index b1c9fd8fb..f39138b83 100644 --- a/pfb/workers/grid.py +++ b/pfb/workers/grid.py @@ -291,7 +291,7 @@ def _grid(xdsi=None, **kw): print(f'Image space data products will be stored in {dds_name}.', file=log) # check if model exists - if opts.transfer_model_from is not None: + if opts.transfer_model_from: try: mds = xds_from_zarr(opts.transfer_model_from, chunks={'params':-1, 'comps':-1})[0] @@ -399,7 +399,7 @@ def _grid(xdsi=None, **kw): out_ds = out_ds.assign(**{'BEAM': (('x', 'y'), bvals)}) # get the model - if opts.transfer_model_from is not None: + if opts.transfer_model_from: from pfb.utils.misc import eval_coeffs_to_slice model = eval_coeffs_to_slice( ds.time_out,