def test_crosssubtract_datamodel(self):
        self.actualSetUp(zerow=True)

        skymodel_vislist = predict_skymodel_list_serial_workflow(
            self.vis_list[0], self.skymodel_list, context='2d', docal=True)
        vobs = sum_predict_results(skymodel_vislist)

        skymodel_vislist = crosssubtract_datamodels_skymodel_list_serial_workflow(
            vobs, skymodel_vislist)

        result_skymodel = [
            SkyModel(components=None, image=self.skymodel_list[-1].image)
            for v in skymodel_vislist
        ]

        results = invert_skymodel_list_serial_workflow(skymodel_vislist,
                                                       result_skymodel,
                                                       context='2d',
                                                       docal=True)
        assert numpy.max(numpy.abs(results[0][0].data)) > 0.0
        assert numpy.max(numpy.abs(results[0][1])) > 0.0
        if self.plot:
            import matplotlib.pyplot as plt
            from rascil.processing_components.image.operations import show_image
            show_image(results[0][0],
                       title='Dirty image after cross-subtraction',
                       vmax=0.1,
                       vmin=-0.01)
            plt.show(block=False)
    def test_predict(self):
        self.actualSetUp(zerow=True)

        self.skymodel_list = [
            create_low_test_skymodel_from_gleam(
                npixel=self.npixel,
                cellsize=self.cellsize,
                frequency=[self.frequency[f]],
                phasecentre=self.phasecentre,
                polarisation_frame=PolarisationFrame("stokesI"),
                flux_limit=0.3,
                flux_threshold=1.0,
                flux_max=5.0) for f, freq in enumerate(self.frequency)
        ]

        assert isinstance(self.skymodel_list[0].image,
                          Image), self.skymodel_list[0].image
        assert isinstance(self.skymodel_list[0].components[0],
                          Skycomponent), self.skymodel_list[0].components[0]
        assert len(self.skymodel_list[0].components) == 25, len(
            self.skymodel_list[0].components)
        assert numpy.max(numpy.abs(
            self.skymodel_list[0].image.data)) > 0.0, "Image is empty"

        skymodel_vislist = predict_skymodel_list_serial_workflow(
            self.vis_list[0], self.skymodel_list, context='2d')
        assert numpy.max(numpy.abs(skymodel_vislist[0].vis)) > 0.0
    def test_predictcal(self):

        self.actualSetUp(zerow=True)

        skymodel_vislist = predict_skymodel_list_serial_workflow(
            self.vis_list[0], self.skymodel_list, context='2d', docal=True)
        vobs = sum_predict_results(skymodel_vislist)

        if self.plot:

            def plotvis(i, v):
                import matplotlib.pyplot as plt
                uvr = numpy.hypot(v.u, v.v)
                amp = numpy.abs(v.vis[:, 0])
                plt.plot(uvr, amp, '.')
                plt.title(str(i))
                plt.show(block=False)

            plotvis(0, vobs)