Esempio n. 1
0
    def test_ical_pipeline_global(self):
        self.actualSetUp(add_errors=True)
        controls = create_calibration_controls()
        controls['T']['first_selfcal'] = 1
        controls['T']['timescale'] = 'auto'
        
        clean, residual, restored, gt_list = \
            ical_list_serial_workflow(self.vis_list,
                                      model_imagelist=self.model_imagelist,
                                      context='2d',
                                      algorithm='mmclean', facets=1,
                                      scales=[0, 3, 10],
                                      niter=1000, fractional_threshold=0.1, threshold=0.1,
                                      nmoment=3,
                                      nmajor=5, gain=0.1,
                                      deconvolve_facets=4, deconvolve_overlap=32,
                                      deconvolve_taper='tukey', psf_support=64,
                                      calibration_context='T', controls=controls, do_selfcal=True,
                                      global_solution=True)
        
        centre = len(clean) // 2
        if self.persist:
            export_image_to_fits(clean[centre], '%s/test_pipelines_ical_global_pipeline_serial_clean.fits' % self.dir)
            export_image_to_fits(residual[centre][0], '%s/test_pipelines_ical_global_pipeline_serial_residual.fits' % self.dir)
            export_image_to_fits(restored[centre], '%s/test_pipelines_ical_global_pipeline_serial_restored.fits' % self.dir)
            export_gaintable_to_hdf5(gt_list[0]['T'],
                                     '%s/test_pipelines_ical_global_pipeline_serial_gaintable.hdf5' %
                                     self.dir)

        qa = qa_image(restored[centre])
        assert numpy.abs(qa.data['max'] - 98.92656340122159) < 1.0, str(qa)
        assert numpy.abs(qa.data['min'] + 0.7024492707920869) < 1.0, str(qa)
Esempio n. 2
0
 def test_calibrate_serial(self):
     amp_errors = {'T': 0.0, 'G': 0.0}
     phase_errors = {'T': 1.0, 'G': 0.0}
     self.actualSetUp(amp_errors=amp_errors, phase_errors=phase_errors)
     
     controls = create_calibration_controls()
     controls['T']['first_selfcal'] = 0
     controls['T']['timeslice'] = 'auto'
     
     calibrate_list = \
         calibrate_list_serial_workflow(self.error_blockvis_list, self.blockvis_list,
                                        calibration_context='T', controls=controls, do_selfcal=True,
                                        global_solution=False)
     assert len(calibrate_list) == 2
     assert numpy.max(calibrate_list[1][0]['T'].residual) < 7e-6, numpy.max(calibrate_list[1][0]['T'].residual)
     assert numpy.max(numpy.abs(calibrate_list[0][0].vis - self.blockvis_list[0].vis)) < 2e-6
Esempio n. 3
0
 def test_calibrate_serial_global_empty(self):
     amp_errors = {'T': 0.0, 'G': 0.0}
     phase_errors = {'T': 1.0, 'G': 0.0}
     self.actualSetUp(amp_errors=amp_errors, phase_errors=phase_errors)
     
     for v in self.blockvis_list:
         v.data['vis'][...] = 0.0 + 0.0j
     
     controls = create_calibration_controls()
     controls['T']['first_selfcal'] = 0
     controls['T']['timeslice'] = 'auto'
     
     calibrate_list = \
         calibrate_list_serial_workflow(self.error_blockvis_list, self.blockvis_list,
                                                 calibration_context='T', controls=controls, do_selfcal=True,
                                                 global_solution=True)
     assert len(calibrate_list[1][0]) == 1
     assert numpy.max(calibrate_list[1][0]['T'].residual) == 0.0, numpy.max(calibrate_list[1][0]['T'].residual)
Esempio n. 4
0
    def test_ical_pipeline(self):
        amp_errors = {'T': 0.0, 'G': 0.00, 'B': 0.0}
        phase_errors = {'T': 0.1, 'G': 0.0, 'B': 0.0}
        self.actualSetUp(add_errors=True,
                         block=True,
                         amp_errors=amp_errors,
                         phase_errors=phase_errors)

        controls = create_calibration_controls()

        controls['T']['first_selfcal'] = 1
        controls['G']['first_selfcal'] = 3
        controls['B']['first_selfcal'] = 4

        controls['T']['timescale'] = 'auto'
        controls['G']['timescale'] = 'auto'
        controls['B']['timescale'] = 1e5

        clean, residual, restored = \
            ical_list_serial_workflow(self.vis_list, model_imagelist=self.model_imagelist, context='2d',
                                      calibration_context='T', controls=controls, do_selfcal=True,
                                      global_solution=False,
                                      algorithm='mmclean',
                                      facets=1,
                                      scales=[0, 3, 10],
                                      niter=1000, fractional_threshold=0.1,
                                      nmoments=2, nchan=self.freqwin,
                                      threshold=2.0, nmajor=5, gain=0.1,
                                      deconvolve_facets=8, deconvolve_overlap=16, deconvolve_taper='tukey')
        centre = len(clean) // 2
        export_image_to_fits(
            clean[centre],
            '%s/test_pipelines_ical_pipeline_clean.fits' % self.dir)
        export_image_to_fits(
            residual[centre][0],
            '%s/test_pipelines_ical_pipeline_residual.fits' % self.dir)
        export_image_to_fits(
            restored[centre],
            '%s/test_pipelines_ical_pipeline_restored.fits' % self.dir)

        qa = qa_image(restored[centre])
        assert numpy.abs(qa.data['max'] - 100.13739440876233) < 1.0, str(qa)
        assert numpy.abs(qa.data['min'] + 0.03644435471804354) < 1.0, str(qa)
    print(qa_image(residual[0], context='Residual clean image - no selfcal'))
    #plt.show()
    export_image_to_fits(
        residual[0],
        '%s/imaging-dask_continuum_imaging_residual.fits' % (results_dir))

if rank == 0:
    for chan in range(nfreqwin):
        residual = continuum_imaging_list[1][chan]
        #show_image(residual[0], title='Channel %d' % chan, cm='Greys',
        #           vmax=0.1, vmin=-0.01)
        #plt.show()

# In[ ]:

controls = create_calibration_controls()

controls['T']['first_selfcal'] = 1
controls['G']['first_selfcal'] = 3
controls['B']['first_selfcal'] = 4

controls['T']['timeslice'] = 'auto'
controls['G']['timeslice'] = 'auto'
controls['B']['timeslice'] = 1e5

pp.pprint(controls)

# In[ ]:

# TODO I change this to predicted_vislist to make it deterministic, I hope it makes
# sense :)