from __future__ import absolute_import
import os
import math
import shutil
import string
import time
import re;
import copy
from casatasks.private.casa_transition import is_CASA6
if is_CASA6:
from casatools import casalog, synthesisdeconvolver
from .imager_base import PySynthesisImager
from .parallel_imager_helper import PyParallelImagerHelper
else:
from taskinit import *
from imagerhelpers.imager_base import PySynthesisImager
from imagerhelpers.parallel_imager_helper import PyParallelImagerHelper
synthesisdeconvolver = casac.synthesisdeconvolver
'''
A set of helper functions for the tasks tclean
Summary...
'''
class PyParallelDeconvolver(PySynthesisImager):
def __init__(self,params):
PySynthesisImager.__init__(self,params)
self.PH = PyParallelImagerHelper()
self.NF = len( allimpars.keys() )
self.listOfNodes = self.PH.getNodeList();
self.NN = len(self.listOfNodes);
if self.NF != self.NN:
casalog.post('For now, cannot handle nfields != nnodes. Will implement round robin allocation later.')
casalog.post('Using only {} fields and nodes'.format(self.NN))
def initializeDeconvolvers(self):
joblist=[]
for immod in self.listOfNodes:
self.PH.runcmd("toolsd = casac.synthesisdeconvolver()", immod )
joblist.append( self.PH.runcmd("toolsd.setupdeconvolution(decpars="+ str(self.alldecpars[str(immod)]) +")", immod ) )
self.PH.checkJobs( joblist )
def deleteDeconvolvers(self):
self.PH.runcmd("toolsd.done()")
def restoreImages(self):
self.PH.runcmdcheck("toolsd.restore()")
def pbcorImages(self):
self.PH.runcmdcheck("toolsd.pbcor()")
def hasConverged(self):
self.PH.runcmdcheck("initrec = toolsd.initminorcycle()")
for immod in self.listOfNodes:
retrec = self.PH.pullval("initrec", immod )
self.IBtool.mergeinitrecord( retrec[immod] )
stopflag = self.IBtool.cleanComplete()
casalog.post('Converged : {}'.format(stopflag))
if( stopflag>0 ):
casalog.post("Reached global stopping criterion : " + self.getStopDescription(stopflag), "INFO")
if self.iterpars['interactive']: