import contextlib
import os
import re
import shutil
import numpy
from casatasks import casalog
from casatools import image, imager
from casatools import ms as mstool
from casatools import quanta
from . import sdbeamutil, sdutil
from .cleanhelper import cleanhelper
from .imagerhelpers.imager_base import PySynthesisImager
from .imagerhelpers.input_parameters import ImagerParameters
image_suffix = '.image'
residual_suffix = '.residual'
weight_suffix = '.weight'
associate_suffixes = ['.psf', '.sumwt', weight_suffix, residual_suffix]
@contextlib.contextmanager
def open_ia(imagename):
ia = image()
ia.open(imagename)
try:
yield ia
finally:
ia.close()
@contextlib.contextmanager
def open_ms(vis):
ms = mstool()
ms.open(vis)
try:
yield ms
finally:
ms.close()
class SelectionHandler(object):
def __init__(self, sel):
self.sel = sel
if isinstance(self.sel, str):
self.selector = self._select0
elif len(self.sel) == 1:
self.selector = self._select1
else:
self.selector = self._select2
def __call__(self, i):
return self.selector(i)
def _select0(self, i):
return self.sel
def _select1(self, i):
return self.sel[0]
def _select2(self, i):
return self.sel[i]
class OldImagerBasedTools(object):
def __init__(self):
self.imager = imager()
@contextlib.contextmanager
def open_old_imager(self, vis):
try:
self.imager.open(vis)
yield self.imager
finally:
self.imager.close()
@contextlib.contextmanager
def open_and_select_old_imager(self, vislist, field, spw, antenna, scan, intent, timerange):
if isinstance(vislist, str):
with self.open_old_imager(vislist) as im:
im.selectvis(field=field,
spw=spw,
nchan=-1,
start=0,
step=1,
baseline=antenna,