def test_restored_list_facet(self):
     self.actualSetUp(zerow=True)
     
     centre = self.freqwin // 2
     psf_image_list = invert_list_arlexecute_workflow(self.vis_list, self.model_list, context='2d', dopsf=True)
     residual_image_list = residual_list_arlexecute_workflow(self.vis_list, self.model_list, context='2d')
     restored_4facets_image_list = restore_list_arlexecute_workflow(self.model_list, psf_image_list,
                                                                    residual_image_list,
                                                                    restore_facets=4, psfwidth=1.0)
     restored_4facets_image_list = arlexecute.compute(restored_4facets_image_list, sync=True)
     
     restored_1facets_image_list = restore_list_arlexecute_workflow(self.model_list, psf_image_list,
                                                                    residual_image_list,
                                                                    restore_facets=1, psfwidth=1.0)
     restored_1facets_image_list = arlexecute.compute(restored_1facets_image_list, sync=True)
     
     if self.persist: export_image_to_fits(restored_4facets_image_list[0],
                                           '%s/test_imaging_invert_%s_restored_4facets.fits' %
                                           (self.dir, arlexecute.type()))
     
     qa = qa_image(restored_4facets_image_list[centre])
     assert numpy.abs(qa.data['max'] - 99.43438263927833) < 1e-7, str(qa)
     assert numpy.abs(qa.data['min'] + 0.6328915148563354) < 1e-7, str(qa)
     
     restored_4facets_image_list[centre].data -= restored_1facets_image_list[centre].data
     if self.persist: export_image_to_fits(restored_4facets_image_list[centre],
                                           '%s/test_imaging_invert_%s_restored_4facets_error.fits' %
                                           (self.dir, arlexecute.type()))
     qa = qa_image(restored_4facets_image_list[centre])
     assert numpy.abs(qa.data['max']) < 1e-10, str(qa)
Example #2
0
 def test_residual_list(self):
     self.actualSetUp(zerow=True)
 
     centre = self.freqwin // 2
     residual_image_list = residual_list_arlexecute_workflow(self.vis_list, self.model_list, context='2d')
     residual_image_list = arlexecute.compute(residual_image_list, sync=True)
     qa = qa_image(residual_image_list[centre][0])
     assert numpy.abs(qa.data['max'] - 0.35139716991480785) < 1.0, str(qa)
     assert numpy.abs(qa.data['min'] + 0.7681701460717593) < 1.0, str(qa)
 def test_sum_invert_list(self):
     self.actualSetUp(zerow=True)
 
     residual_image_list = residual_list_arlexecute_workflow(self.vis_list, self.model_list, context='2d')
     residual_image_list = arlexecute.compute(residual_image_list, sync=True)
     route2 = sum_invert_results(residual_image_list)
     route1 = sum_invert_results_arlexecute(residual_image_list)
     route1 = arlexecute.compute(route1, sync=True)
     for r in route1, route2:
         assert len(r) == 2
         qa = qa_image(r[0])
         assert numpy.abs(qa.data['max'] - 0.35139716991480785) < 1.0, str(qa)
         assert numpy.abs(qa.data['min'] + 0.7681701460717593) < 1.0, str(qa)
         assert numpy.abs(r[1]-415950.0) < 1e-7, str(qa)
    def test_deconvolve_and_restore_cube_mmclean_facets(self):
        self.actualSetUp(add_errors=True)
        dirty_imagelist = invert_list_arlexecute_workflow(self.vis_list,
                                                          self.model_imagelist,
                                                          context='2d',
                                                          dopsf=False,
                                                          normalize=True)
        psf_imagelist = invert_list_arlexecute_workflow(self.vis_list,
                                                        self.model_imagelist,
                                                        context='2d',
                                                        dopsf=True,
                                                        normalize=True)
        dirty_imagelist = arlexecute.persist(dirty_imagelist)
        psf_imagelist = arlexecute.persist(psf_imagelist)
        dec_imagelist = deconvolve_list_arlexecute_workflow(
            dirty_imagelist,
            psf_imagelist,
            self.model_imagelist,
            niter=1000,
            fractional_threshold=0.1,
            scales=[0, 3, 10],
            algorithm='mmclean',
            nmoment=3,
            nchan=self.freqwin,
            threshold=0.01,
            gain=0.7,
            deconvolve_facets=8,
            deconvolve_overlap=8,
            deconvolve_taper='tukey')
        dec_imagelist = arlexecute.persist(dec_imagelist)
        residual_imagelist = residual_list_arlexecute_workflow(
            self.vis_list, model_imagelist=dec_imagelist, context='2d')
        residual_imagelist = arlexecute.persist(residual_imagelist)
        restored_list = restore_list_arlexecute_workflow(
            model_imagelist=dec_imagelist,
            psf_imagelist=psf_imagelist,
            residual_imagelist=residual_imagelist,
            empty=self.model_imagelist)

        restored = arlexecute.compute(restored_list, sync=True)[0]

        if self.persist:
            export_image_to_fits(
                restored, '%s/test_imaging_%s_overlap_mmclean_restored.fits' %
                (self.dir, arlexecute.type()))
 def test_deconvolve_and_restore_cube_mmclean(self):
     self.actualSetUp(add_errors=True)
     dirty_imagelist = invert_list_arlexecute_workflow(self.vis_list, self.model_imagelist, context='2d',
                                                       dopsf=False, normalize=True)
     psf_imagelist = invert_list_arlexecute_workflow(self.vis_list, self.model_imagelist, context='2d',
                                                     dopsf=True, normalize=True)
     dec_imagelist, _ = deconvolve_list_arlexecute_workflow(dirty_imagelist, psf_imagelist, self.model_imagelist, niter=1000,
                                                            fractional_threshold=0.01, scales=[0, 3, 10],
                                                            algorithm='mmclean', nmoments=3, nchan=self.freqwin,
                                                            threshold=0.1, gain=0.7)
     residual_imagelist = residual_list_arlexecute_workflow(self.vis_list, model_imagelist=dec_imagelist,
                                                            context='wstack', vis_slices=51)
     restored = restore_list_arlexecute_workflow(model_imagelist=dec_imagelist, psf_imagelist=psf_imagelist,
                                                 residual_imagelist=residual_imagelist,
                                                 empty=self.model_imagelist)[0]
     
     restored = arlexecute.compute(restored, sync=True)
     
     export_image_to_fits(restored, '%s/test_imaging_%s_mmclean_restored.fits' % (self.dir, arlexecute.type()))
                                                                niter=1000, use_serial_clean=True,
                                                                fractional_threshold=0.01, scales=[0, 3, 10],
                                                                algorithm='msclean', gcfcf=gcfcf,
                                                                threshold=0.1, gain=0.7)

            dec_imagelist = arlexecute.persist(dec_imagelist)
            dec_imagelist = arlexecute.compute(dec_imagelist, sync=True)
            deconvolved = dec_imagelist[0]

            # export_image_to_fits(deconvolved,
            #                      '%s/test_imaging_%s_deconvolved.fits' % (storedir, context))
            show_image(deconvolved)
            plt.title(context)
            plt.savefig('%s/test_imaging_%s_clean.pdf' % (storedir, context))

            residual_imagelist = residual_list_arlexecute_workflow(vt_list, model_imagelist=dec_imagelist,
                                                                   context=context)
            # residual_imagelist = arlexecute.persist(residual_imagelist)

            residual_imagelist = arlexecute.compute(residual_imagelist, sync=True)
            residualed = residual_imagelist[0][0]
            show_image(residualed)
            plt.title(context)
            plt.savefig('%s/test_imaging_%s_residual.pdf' % (storedir, context))

            # export_image_to_fits(residualed,
            #                      '%s/test_imaging_%s_residualed.fits' % (storedir, context))

            restored_list = restore_list_arlexecute_workflow(model_imagelist=dec_imagelist,
                                                             psf_imagelist=psf_imagelist, gcfcf=gcfcf,
                                                             residual_imagelist=residual_imagelist,
                                                             empty=targetimage_list)