Last active
May 9, 2020 21:51
-
-
Save keflavich/a9953c88cbe098b5e9bb4bdac6485f09 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
# ## (1) Import the python application layer | |
from imagerhelpers.imager_base import PySynthesisImager | |
from imagerhelpers.input_parameters import ImagerParameters | |
try: | |
from tasks import exportfits | |
from taskinit import iatool | |
ia = iatool() | |
except ImportError: | |
from casatasks import exportfits | |
from casatools import image | |
ia = image() | |
def my_tclean(vis, imagename, *args, **kwargs): | |
# (2) Set up Input Parameters | |
# - List all parameters that you need here | |
# - Defaults will be assumed for unspecified parameters | |
# - Nearly all parameters are identical to that in the task. Please look at the | |
# list of parameters under __init__ using " help ImagerParameters " ) | |
msname = vis | |
kwargs['loopgain'] = kwargs.pop('gain', 0.1) | |
kwargs['timestr'] = kwargs.pop('timerange', '') | |
kwargs['dopbcorr'] = kwargs.pop('pbcor', '') | |
kwargs['uvdist'] = kwargs.pop('uvrange', '') | |
kwargs['scalebias'] = kwargs.pop('smallscalebias', '') | |
kwargs['cfcache'] = kwargs.pop('cfcache', '') | |
kwargs['nchan'] = kwargs.pop('nchan', -1) or -1 | |
kwargs['nterms'] = kwargs.pop('nterms', 2) or 2 | |
kwargs['facets'] = kwargs.pop('facets', 1) or 1 | |
kwargs['chanchunks'] = kwargs.pop('chanchunks', -1) or -1 | |
kwargs.pop('calcpsf', None) | |
kwargs.pop('psfphasecenter', None) | |
kwargs.pop('calcres', None) | |
kwargs.pop('restoration', None) | |
kwargs.pop('intent', None) | |
kwargs.pop('observation', None) | |
kwargs.pop('selectdata', None) | |
for key in kwargs.keys(): | |
if kwargs[key] is None: | |
kwargs.pop(key) | |
paramList = ImagerParameters(msname=msname, imagename=imagename, **kwargs) | |
# (3) Construct the PySynthesisImager object, with all input parameters | |
imager = PySynthesisImager(params=paramList) | |
# (4) Initialize various modules. | |
# - Pick only the modules you will need later on. For example, to only make | |
# the PSF, there is no need for the deconvolver or iteration control modules. | |
# Initialize modules major cycle modules | |
imager.initializeImagers() | |
imager.initializeNormalizers() | |
imager.setWeighting() | |
# Init minor cycle modules | |
imager.initializeDeconvolvers() | |
imager.initializeIterationControl() | |
# (5) Make the initial images | |
imager.makePSF() | |
imager.makePB() | |
imager.runMajorCycle() # Make initial dirty / residual image | |
exportfits(imagename+".image.tt0", imagename+".image.tt0.dirty.fits", overwrite=True) | |
exportfits(imagename+".residual.tt0", imagename+".residual.tt0.dirty.fits", overwrite=True) | |
exportfits(imagename+".model.tt0", imagename+".model.tt0.dirty.fits", overwrite=True) | |
# (6) Make the initial clean mask | |
imager.hasConverged() | |
imager.updateMask() | |
majornumber = 0 | |
minornumber = 0 | |
# (7) Run the iteration loops | |
while not imager.hasConverged(): | |
print("Beginning major cycle = {0}".format(majornumber)) | |
imager.runMinorCycle() | |
minornumber += 1 | |
imager.runMajorCycle() | |
imager.restoreImages() | |
majornumber += 1 | |
imager.updateMask() | |
exportfits(imagename+".image.tt0", imagename+".image.tt0.major{0}.fits".format(majornumber), overwrite=True) | |
exportfits(imagename+".residual.tt0", imagename+".residual.tt0.major{0}.fits".format(majornumber), overwrite=True) | |
exportfits(imagename+".model.tt0", imagename+".model.tt0.major{0}.fits".format(majornumber), overwrite=True) | |
#ia.open(imagename+".image.tt0") | |
print(imagename+".image.tt0.major{0}.fits".format(majornumber)) | |
assert os.path.exists(imagename+".image.tt0.major{0}.fits".format(majornumber)) | |
# (8) Finish up | |
imager.restoreImages() | |
imager.pbcorImages() | |
# don't do this: it tries to load vis tools, which is illegal | |
#retrec = imager.getSummary() | |
assert os.path.exists(imagename+".image.tt0.major1.fits".format(1)) | |
# (9) Close tools. | |
imager.deleteTools() | |
#return retrec |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ## (1) Import the python application layer | |
from imagerhelpers.imager_base import PySynthesisImager | |
from imagerhelpers.input_parameters import ImagerParameters | |
try: | |
from tasks import exportfits | |
except ImportError: | |
from casatasks import exportfits | |
def tclean(vis, imagename, *args, **kwargs): | |
# (2) Set up Input Parameters | |
# - List all parameters that you need here | |
# - Defaults will be assumed for unspecified parameters | |
# - Nearly all parameters are identical to that in the task. Please look at the | |
# list of parameters under __init__ using " help ImagerParameters " ) | |
msname = vis | |
kwargs['loopgain'] = kwargs.pop('gain', 0.1) | |
kwargs['timestr'] = kwargs.pop('timerange', '') | |
kwargs['dopbcorr'] = kwargs.pop('pbcor', '') | |
kwargs['uvdist'] = kwargs.pop('uvrange', '') | |
kwargs['scalebias'] = kwargs.pop('smallscalebias', '') | |
kwargs['cfcache'] = kwargs.pop('cfcache', '') | |
kwargs['nchan'] = kwargs.pop('nchan', -1) or -1 | |
kwargs['nterms'] = kwargs.pop('nterms', 2) or 2 | |
kwargs['facets'] = kwargs.pop('facets', 1) or 1 | |
kwargs['chanchunks'] = kwargs.pop('chanchunks', -1) or -1 | |
kwargs.pop('calcpsf', None) | |
kwargs.pop('psfphasecenter', None) | |
kwargs.pop('calcres', None) | |
kwargs.pop('restoration', None) | |
kwargs.pop('intent', None) | |
kwargs.pop('observation', None) | |
kwargs.pop('selectdata', None) | |
for key in kwargs.keys(): | |
if kwargs[key] is None: | |
kwargs.pop(key) | |
paramList = ImagerParameters(msname=msname, imagename=imagename, **kwargs) | |
# (3) Construct the PySynthesisImager object, with all input parameters | |
imager = PySynthesisImager(params=paramList) | |
# (4) Initialize various modules. | |
# - Pick only the modules you will need later on. For example, to only make | |
# the PSF, there is no need for the deconvolver or iteration control modules. | |
# Initialize modules major cycle modules | |
imager.initializeImagers() | |
imager.initializeNormalizers() | |
imager.setWeighting() | |
# Init minor cycle modules | |
imager.initializeDeconvolvers() | |
imager.initializeIterationControl() | |
# (5) Make the initial images | |
imager.makePSF() | |
imager.makePB() | |
imager.runMajorCycle() # Make initial dirty / residual image | |
# (6) Make the initial clean mask | |
imager.hasConverged() | |
imager.updateMask() | |
majornumber = 0 | |
minornumber = 0 | |
# (7) Run the iteration loops | |
while not imager.hasConverged(): | |
imager.runMinorCycle() | |
exportfits(imagename+".image.tt0", imagename+".image.tt0.minor{0}.fits".format(minornumber), overwrite=True) | |
exportfits(imagename+".residual.tt0", imagename+".residual.tt0.minor{0}.fits".format(minornumber), overwrite=True) | |
minornumber += 1 | |
imager.runMajorCycle() | |
exportfits(imagename+".image.tt0", imagename+".image.tt0.major{0}.fits".format(majornumber), overwrite=True) | |
exportfits(imagename+".residual.tt0", imagename+".residual.tt0.minor{0}.fits".format(minornumber), overwrite=True) | |
exportfits(imagename+".model.tt0", imagename+".model.tt0.minor{0}.fits".format(minornumber), overwrite=True) | |
majornumber += 1 | |
imager.updateMask() | |
# (8) Finish up | |
retrec = imager.getSummary() | |
imager.restoreImages() | |
imager.pbcorImages() | |
# (9) Close tools. | |
imager.deleteTools() | |
return retrec |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment