示例#1
0
 def test_griddata_predict_awterm(self):
     self.actualSetUp(zerow=False)
     make_pb = functools.partial(create_pb_generic,
                                 diameter=35.0,
                                 blockage=0.0,
                                 use_local=False)
     pb = make_pb(self.model)
     if self.persist:
         export_image_to_fits(pb,
                              "%s/test_gridding_awterm_pb.fits" % self.dir)
     gcf, cf = create_awterm_convolutionfunction(self.model,
                                                 make_pb=make_pb,
                                                 nw=100,
                                                 wstep=8.0,
                                                 oversampling=16,
                                                 support=32,
                                                 use_aaf=True)
     griddata = create_griddata_from_image(self.model, nw=100, wstep=8.0)
     griddata = fft_image_to_griddata(self.model, griddata, gcf)
     newvis = degrid_visibility_from_griddata(self.vis,
                                              griddata=griddata,
                                              cf=cf)
     qa = qa_visibility(newvis)
     assert qa.data['rms'] < 120.0, str(qa)
     self.plot_vis(newvis, 'awterm')
示例#2
0
 def test_griddata_predict_box(self):
     self.actualSetUp(zerow=True)
     gcf, cf = create_box_convolutionfunction(self.model)
     griddata = create_griddata_from_image(self.model)
     griddata = fft_image_to_griddata(self.model, griddata, gcf)
     newvis = degrid_visibility_from_griddata(self.vis,
                                              griddata=griddata,
                                              cf=cf)
     newvis.data['vis'][...] -= self.vis.data['vis'][...]
     qa = qa_visibility(newvis)
     assert qa.data['rms'] < 46.0, str(qa)
示例#3
0
 def test_griddata_predict_pswf(self):
     self.actualSetUp(zerow=True)
     gcf, cf = create_pswf_convolutionfunction(self.model,
                                               support=6,
                                               oversampling=256)
     griddata = create_griddata_from_image(self.model)
     griddata = fft_image_to_griddata(self.model, griddata, gcf)
     newvis = degrid_visibility_from_griddata(self.vis,
                                              griddata=griddata,
                                              cf=cf)
     newvis.data['vis'][...] -= self.vis.data['vis'][...]
     qa = qa_visibility(newvis)
     assert qa.data['rms'] < 0.7, str(qa)
示例#4
0
 def test_griddata_predict_box(self):
     self.actualSetUp(zerow=True, image_pol=PolarisationFrame("stokesIQUV"))
     gcf, cf = create_box_convolutionfunction(self.model)
     modelIQUV = convert_stokes_to_polimage(self.model,
                                            self.vis.polarisation_frame)
     griddata = create_griddata_from_image(modelIQUV, self.vis)
     griddata = fft_image_to_griddata(modelIQUV, griddata, gcf)
     newvis = degrid_visibility_from_griddata(self.vis,
                                              griddata=griddata,
                                              cf=cf)
     newvis.data['vis'][...] -= self.vis.data['vis'][...]
     qa = qa_visibility(newvis)
     assert qa.data['rms'] < 58.0, str(qa)
示例#5
0
 def test_griddata_predict_wterm(self):
     self.actualSetUp(zerow=False)
     gcf, cf = create_awterm_convolutionfunction(self.model,
                                                 nw=100,
                                                 wstep=10.0,
                                                 oversampling=16,
                                                 support=32,
                                                 use_aaf=True)
     griddata = create_griddata_from_image(self.model, nw=100, wstep=10.0)
     griddata = fft_image_to_griddata(self.model, griddata, gcf)
     newvis = degrid_visibility_from_griddata(self.vis,
                                              griddata=griddata,
                                              cf=cf)
     newvis.data['vis'][...] -= self.vis.data['vis'][...]
     qa = qa_visibility(newvis)
     self.plot_vis(newvis, 'wterm')
     assert qa.data['rms'] < 11.0, str(qa)
示例#6
0
def predict_2d(vis: Union[BlockVisibility, Visibility],
               model: Image,
               gcfcf=None,
               **kwargs) -> Union[BlockVisibility, Visibility]:
    """ Predict using convolutional degridding.

    This is at the bottom of the layering i.e. all transforms are eventually expressed in terms of
    this function. Any shifting needed is performed here.

    :param vis: Visibility to be predicted
    :param model: model image
    :param gcfcf: (Grid correction function i.e. in image space, Convolution function i.e. in uv space)
    :return: resulting visibility (in place works)
    """

    if model is None:
        return vis

    assert isinstance(vis, Visibility) or isinstance(vis, BlockVisibility), vis

    _, _, ny, nx = model.data.shape

    if gcfcf is None:
        gcf, cf = create_pswf_convolutionfunction(
            model,
            support=get_parameter(kwargs, "support", 8),
            oversampling=get_parameter(kwargs, "oversampling", 127))
    else:
        gcf, cf = gcfcf

    griddata = create_griddata_from_image(model, vis)
    polmodel = convert_stokes_to_polimage(model, vis.polarisation_frame)
    griddata = fft_image_to_griddata(polmodel, griddata, gcf)
    if isinstance(vis, Visibility):
        vis = degrid_visibility_from_griddata(vis, griddata=griddata, cf=cf)
    else:
        vis = degrid_blockvisibility_from_griddata(vis,
                                                   griddata=griddata,
                                                   cf=cf)

    # Now we can shift the visibility from the image frame to the original visibility frame
    svis = shift_vis_to_image(vis, model, tangent=True, inverse=True)

    return svis
示例#7
0
 def test_griddata_predict_aterm(self):
     self.actualSetUp(zerow=True)
     make_pb = functools.partial(create_pb_generic,
                                 diameter=35.0,
                                 blockage=0.0,
                                 use_local=False)
     griddata = create_griddata_from_image(self.model)
     gcf, cf = create_awterm_convolutionfunction(self.model,
                                                 make_pb=make_pb,
                                                 nw=1,
                                                 oversampling=16,
                                                 support=32,
                                                 use_aaf=True)
     griddata = fft_image_to_griddata(self.model, griddata, gcf)
     newvis = degrid_visibility_from_griddata(self.vis,
                                              griddata=griddata,
                                              cf=cf)
     qa = qa_visibility(newvis)
     assert qa.data['rms'] < 120.0, str(qa)