from taskinit import casalog, gentools, qa
def asdatestring(mjd, digit, timeonly=False):
datedict = qa.splitdate(qa.quantity(mjd, 'd'))
if digit > 10 : digit = 10
sstr_tmp = str(numpy.round(datedict['s'], digit)).split('.')
sstr = sstr_tmp[0] + '.' + sstr_tmp[1][0:digit]
return '%s:%s:%s'%(datedict['hour'],datedict['min'],sstr)
return '%s/%s/%s/%s:%s:%s'%(datedict['year'],datedict['month'],datedict['monthday'],datedict['hour'],datedict['min'],sstr)
def astimerange(tmargin, mjd0, mjd1):
digit = numpy.abs(int(numpy.floor(numpy.log10(tmargin))))
if int(mjd0) == int(mjd1):
return '%s~%s'%(asdatestring(mjd0,digit), asdatestring(mjd1,digit,timeonly=timeonly))
@contextlib.contextmanager
def selection_manager(scantab, original_selection, **kwargs):
sel = sd.selector(original_selection)
for (k,v) in kwargs.items():
method_name = 'set_%s'%(k)
if hasattr(sel, method_name):
getattr(sel, method_name)(v)
scantab.set_selection(sel)
scantab.set_selection(original_selection)
def __init__(self, scantab):
self.original_selection = self.scantab.get_selection()
self.mjd_range_raster = None
self.mjd_range_nomargin = None
self.mjd_range_nomargin_raster = None
return self.ngap_raster - 1
if hasattr(self, '_nominal_spw') and getattr(self, '_nominal_spw') is not None:
with selection_manager(self.scantab, self.original_selection, types=0) as s:
with selection_manager(self.scantab, self.original_selection, ifs=spw) as s:
if self.scantab.nrow() > 0:
nchan = len(self.scantab._getspectrum(0))
if hasattr(self, '_nominal_pol') and getattr(self, '_nominal_pol') is not None:
nominal_spw = self.nominal_spw
with selection_manager(self.scantab, self.original_selection, types=0, ifs=nominal_spw) as s: