import pipeline.infrastructure as infrastructure
import pipeline.infrastructure.basetask as basetask
import pipeline.infrastructure.vdp as vdp
from pipeline.infrastructure import casa_tasks
from pipeline.infrastructure import task_registry
LOG = infrastructure.get_logger(__name__)
[docs]class PolarizationResults(basetask.Results):
def __init__(self, final=[], pool=[], preceding=[]):
super(PolarizationResults, self).__init__()
self.pool = pool[:]
self.final = final[:]
self.preceding = preceding[:]
self.error = set()
[docs] def merge_with_context(self, context):
"""
See :method:`~pipeline.infrastructure.api.Results.merge_with_context`
"""
if not self.final:
LOG.warn('No polarization results')
return
def __repr__(self):
#return 'PolarizationResults:\n\t{0}'.format(
# '\n\t'.join([ms.name for ms in self.mses]))
return 'PolarizationResults:'
[docs]@task_registry.set_equivalent_casa_task('hif_polarization')
class Polarization(basetask.StandardTaskTemplate):
Inputs = PolarizationInputs
[docs] def prepare(self):
LOG.info("This Polarization class is running.")
return PolarizationResults()
[docs] def analyse(self, results):
return results
[docs] def do_gaincal(self, caltable):
inputs = self.inputs
result = True
return result
[docs] def do_polcal(self, caltable, poltype, RefAntOutput):
'''
From Chris Hales script
polcal(vis='vlass3C48.ms', caltable='vlass3C48.D_1', field='0', refant='ea20', poltype='Df+QU',
gaintable=['vlass3C48.antpos', 'vlass3C48.K', 'vlass3C48.B', 'vlass3C48.Gp', 'vlass3C48.Ga',
'vlass3C48.Kx_1'], gainfield=['', '', '', '0', '0', ''], spwmap=[[], spwmapK, [], [], [], []])
polcal(vis='vlass3C286.ms', caltable='vlass3C286.D_1', field='1', refant='ea20', poltype='Df+QU',
gaintable=['vlass3C286.antpos', 'vlass3C286.K', 'vlass3C286.B', 'vlass3C286.Gp', 'vlass3C286.Ga',
'vlass3C286.Kx_1'], gainfield=['', '', '', '1', '1', ''],
spwmap=[[], spwmapK, [], [], [], []])
'''
spwmapK = [0, 0, 0]
spwmapGinit = [1, 1, 1]
task_args = {'vis': self.inputs.vis,
'caltable': caltable,
'field': '0',
'refant': RefAntOutput[0].lower(),
'gaintable': [],
'poltype': poltype,
'gainfield': ['', '', '', '0', '0', ''],
'spwmap': [[], spwmapK, [], [], [], []],
'parang': True}
task = casa_tasks.polcal(**task_args)
return self._executor.execute(task)