setjy() # # You should see something like this in the logger and casa.log file: # # 1331+30500002_0 spwid= 0 [I=14.76, Q=0, U=0, V=0] Jy, (Perley-Taylor 99) # # So its using 14.76Jy as the flux of 1331+305 in the single Spectral Window # in this MS. # Record setjy completion time if benchmarking: setjytime = time.time() # the callibrary into which we will deposit calibration results c = callibrary() callibfile = 'ngc5921_regression/ngc5921_callib.txt' # #===================================================================== # # Bandpass calibration # print '--Bandpass--' default('bandpass') # We can first do the bandpass on the single 5min scan on 1331+305 # At 1.4GHz phase stablility should be sufficient to do this without # a first (rough) gain calibration. This will give us the relative # antenna gain as a function of frequency.
# # You should see something like this in the logger and casapy.log file: # # 1331+30500002_0 spwid= 0 [I=14.76, Q=0, U=0, V=0] Jy, (Perley-Taylor 99) # # So its using 14.76Jy as the flux of 1331+305 in the single Spectral Window # in this MS. # Record setjy completion time if benchmarking: setjytime = time.time() # the callibrary into which we will deposit calibration results c=callibrary() callibfile='ngc5921_regression/ngc5921_callib.txt' # #===================================================================== # # Bandpass calibration # print '--Bandpass--' default('bandpass') # We can first do the bandpass on the single 5min scan on 1331+305 # At 1.4GHz phase stablility should be sufficient to do this without # a first (rough) gain calibration. This will give us the relative # antenna gain as a function of frequency.
def gaincal(vis=None, caltable=None, field=None, spw=None, intent=None, selectdata=None, timerange=None, uvrange=None, antenna=None, scan=None, observation=None, msselect=None, solint=None, combine=None, preavg=None, refant=None, minblperant=None, minsnr=None, solnorm=None, gaintype=None, smodel=None, calmode=None, append=None, splinetime=None, npointaver=None, phasewrap=None, docallib=None, callib=None, gaintable=None, gainfield=None, interp=None, spwmap=None, parang=None): #Python script casalog.origin('gaincal') try: mycb = cbtool() # Revert to old VI for GSPLINE if (gaintype == 'GSPLINE'): mycb.setvi(old=True, quiet=False) if ((type(vis) == str) & (os.path.exists(vis))): mycb.open(filename=vis, compress=False, addcorr=False, addmodel=False) else: raise Exception, 'Visibility data set not found - please verify the name' # Do data selection according to selectdata casalog.post("NB: gaincal automatically excludes auto-correlations.") if (selectdata): # insist no ACs if len(msselect) > 0: msselect = '(' + msselect + ') && ANTENNA1!=ANTENNA2' else: msselect = 'ANTENNA1!=ANTENNA2' # pass all data selection parameters in as specified mycb.selectvis(time=timerange, spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna, uvrange=uvrange, chanmode='none', msselect=msselect) else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only # also insist no ACs mycb.selectvis(time='', spw=spw, scan='', field=field, intent=intent, observation='', baseline='', uvrange='', chanmode='none', msselect='ANTENNA1!=ANTENNA2') # set the model, if specified if (len(smodel) > 0): mycb.setptmodel(smodel) # Arrange applies.... if docallib: # by cal library from file mycallib = callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0 if (gaintable != ['']): ngaintab = len(gaintable) ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if (nspwmap > 0): if (type(spwmap[0]) != list): # first element not a list, only one spwmap specified # make it a list of list spwmap = [spwmap] nspwmap = 1 for igt in range(ngaintab): if (gaintable[igt] != ''): # field selection is null unless specified thisgainfield = '' if (igt < ngainfld): thisgainfield = gainfield[igt] # spwmap is null unless specifed thisspwmap = [-1] if (igt < nspwmap): thisspwmap = spwmap[igt] # interp is 'linear' unless specified thisinterp = 'linear' if (igt < ninterp): if (interp[igt] == ''): interp[igt] = thisinterp thisinterp = interp[igt] mycb.setapply(t=0.0, table=gaintable[igt], field=thisgainfield, calwt=True, spwmap=thisspwmap, interp=thisinterp) # ...and now the specialized terms # (BTW, interp irrelevant for these, since they are evaluated) # Apply parallactic angle, if requested if parang: mycb.setapply(type='P') # Set up for solving: phaseonly = False if (gaintype == 'G'): mycb.setsolve(type='G', t=solint, combine=combine, preavg=preavg, refant=refant, minblperant=minblperant, solnorm=solnorm, minsnr=minsnr, table=caltable, apmode=calmode, phaseonly=phaseonly, append=append) elif (gaintype == 'T'): mycb.setsolve(type='T', t=solint, combine=combine, preavg=preavg, refant=refant, minblperant=minblperant, solnorm=solnorm, minsnr=minsnr, table=caltable, apmode=calmode, phaseonly=phaseonly, append=append) elif (gaintype == 'K' or gaintype == 'KCROSS' or gaintype == 'XY+QU' or gaintype == 'XYf+QU'): mycb.setsolve(type=gaintype, t=solint, combine=combine, preavg=preavg, refant=refant, minblperant=minblperant, solnorm=solnorm, minsnr=minsnr, table=caltable, apmode=calmode, phaseonly=phaseonly, append=append) elif (gaintype == 'GSPLINE'): mycb.setsolvegainspline(table=caltable, append=append, mode=calmode, refant=refant, splinetime=splinetime, preavg=preavg, npointaver=npointaver, phasewrap=phasewrap) mycb.solve() reportsolvestats(mycb.activityrec()) mycb.close() except Exception, instance: print '*** Error ***', instance mycb.close() casalog.post("Error in gaincal: %s" % str(instance), "SEVERE") raise Exception, "Error in gaincal: " + str(instance)
def gaincal(vis=None,caltable=None, field=None,spw=None,intent=None, selectdata=None,timerange=None,uvrange=None,antenna=None,scan=None, observation=None, msselect=None, solint=None,combine=None,preavg=None,refant=None,minblperant=None, minsnr=None,solnorm=None, gaintype=None,smodel=None,calmode=None,append=None, splinetime=None,npointaver=None,phasewrap=None, docallib=None,callib=None, gaintable=None,gainfield=None,interp=None,spwmap=None, parang=None): #Python script casalog.origin('gaincal') try: mycb = cbtool() if ((type(vis)==str) & (os.path.exists(vis))): mycb.open(filename=vis,compress=False,addcorr=False,addmodel=False) else: raise Exception, 'Visibility data set not found - please verify the name' # Do data selection according to selectdata if (selectdata): # pass all data selection parameters in as specified mycb.selectvis(time=timerange,spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna,uvrange=uvrange,chanmode='none', msselect=msselect); else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only mycb.selectvis(time='',spw=spw,scan='',field=field,intent=intent, observation='', baseline='', uvrange='', chanmode='none', msselect='') # set the model, if specified if (len(smodel)>0): mycb.setptmodel(smodel); # Arrange applies.... if docallib: # by cal library from file mycallib=callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0; if (gaintable!=['']): ngaintab=len(gaintable) ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if (nspwmap>0): if (type(spwmap[0])!=list): # first element not a list, only one spwmap specified # make it a list of list spwmap=[spwmap]; nspwmap=1; for igt in range(ngaintab): if (gaintable[igt]!=''): # field selection is null unless specified thisgainfield='' if (igt<ngainfld): thisgainfield=gainfield[igt] # spwmap is null unless specifed thisspwmap=[-1] if (igt<nspwmap): thisspwmap=spwmap[igt]; # interp is 'linear' unless specified thisinterp='linear' if (igt<ninterp): if (interp[igt]==''): interp[igt]=thisinterp; thisinterp=interp[igt]; mycb.setapply(t=0.0,table=gaintable[igt],field=thisgainfield, calwt=True,spwmap=thisspwmap,interp=thisinterp) # ...and now the specialized terms # (BTW, interp irrelevant for these, since they are evaluated) # Apply parallactic angle, if requested if parang: mycb.setapply(type='P') # Set up for solving: phaseonly=False if (gaintype=='G'): mycb.setsolve(type='G',t=solint,combine=combine,preavg=preavg,refant=refant, minblperant=minblperant, solnorm=solnorm,minsnr=minsnr,table=caltable, apmode=calmode,phaseonly=phaseonly,append=append) elif (gaintype=='T'): mycb.setsolve(type='T',t=solint,combine=combine,preavg=preavg,refant=refant, minblperant=minblperant, solnorm=solnorm,minsnr=minsnr,table=caltable, apmode=calmode,phaseonly=phaseonly,append=append) elif (gaintype=='K' or gaintype=='KCROSS' or gaintype=='XY+QU' or gaintype=='XYf+QU'): mycb.setsolve(type=gaintype,t=solint,combine=combine,preavg=preavg,refant=refant, minblperant=minblperant, solnorm=solnorm,minsnr=minsnr,table=caltable, apmode=calmode,phaseonly=phaseonly,append=append) elif (gaintype=='GSPLINE'): mycb.setsolvegainspline(table=caltable,append=append,mode=calmode, refant=refant,splinetime=splinetime,preavg=preavg, npointaver=npointaver,phasewrap=phasewrap) mycb.solve() reportsolvestats(mycb.activityrec()); mycb.close() except Exception, instance: print '*** Error ***',instance mycb.close() raise Exception, instance
def bandpass(vis=None,caltable=None, field=None,spw=None,intent=None, selectdata=None,timerange=None,uvrange=None,antenna=None,scan=None, observation=None,msselect=None, solint=None,combine=None,refant=None,minblperant=None, minsnr=None,solnorm=None, bandtype=None,smodel=None, append=None,fillgaps=None, degamp=None,degphase=None,visnorm=None, maskcenter=None,maskedge=None, docallib=None,callib=None, gaintable=None,gainfield=None,interp=None,spwmap=None, parang=None): #Python script casalog.origin('bandpass') try: mycb=cbtool() if ((type(vis)==str) & (os.path.exists(vis))): mycb.open(filename=vis,compress=False,addcorr=False,addmodel=False) else: raise Exception, 'Visibility data set not found - please verify the name' mycb.reset() # Do data selection according to selectdata if (selectdata): # pass all data selection parameters in as specified mycb.selectvis(time=timerange,spw=spw,scan=scan,field=field, intent=intent, observation=str(observation), baseline=antenna,uvrange=uvrange,chanmode='none', msselect=msselect); else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only mycb.selectvis(time='',spw=spw,scan='',field=field,intent=intent, observation='', baseline='',uvrange='',chanmode='none', msselect=''); # set the model, if specified if (len(smodel)>0): mycb.setptmodel(smodel); # Arrange applies.... if docallib: # by cal library from file mycallib=callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0; if (gaintable!=['']): ngaintab=len(gaintable) ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if (nspwmap>0): if (type(spwmap[0])!=list): # first element not a list, only one spwmap specified # make it a list of list spwmap=[spwmap]; nspwmap=1; for igt in range(ngaintab): if (gaintable[igt]!=''): # field selection is null unless specified thisgainfield='' if (igt<ngainfld): thisgainfield=gainfield[igt] # spwmap is null unless specifed thisspwmap=[-1] if (igt<nspwmap): thisspwmap=spwmap[igt]; # interp is 'linear' unless specified thisinterp='linear' if (igt<ninterp): if (interp[igt]==''): interp[igt]=thisinterp; thisinterp=interp[igt]; mycb.setapply(t=0.0,table=gaintable[igt],field=thisgainfield, calwt=True,spwmap=thisspwmap,interp=thisinterp) # ...and now the specialized terms # (BTW, interp irrelevant for these, since they are evaluated) # Apply parallactic angle, if requested if parang: mycb.setapply(type='P') # set up for solving ( if (bandtype=='B'): mycb.setsolve(type='B',t=solint,combine=combine,refant=refant,minblperant=minblperant, solnorm=solnorm,minsnr=minsnr,table=caltable,append=append,fillgaps=fillgaps) elif (bandtype=='BPOLY'): mycb.setsolvebandpoly(refant=refant,table=caltable,append=append, t=solint,combine=combine, degamp=degamp,degphase=degphase,visnorm=visnorm, solnorm=solnorm,maskcenter=maskcenter,maskedge=maskedge) mycb.solve() mycb.close() except Exception, instance: print '*** Error ***', instance mycb.close() casalog.post("Error in bandpass: %s" % str(instance), "SEVERE") raise Exception, "Error in bandpass: "+str(instance)
def polcal(vis=None, caltable=None, field=None, spw=None, intent=None, selectdata=None, timerange=None, uvrange=None, antenna=None, scan=None, observation=None, msselect=None, solint=None, combine=None, preavg=None, refant=None, minblperant=None, minsnr=None, poltype=None, smodel=None, append=None, docallib=None, callib=None, gaintable=None, gainfield=None, interp=None, spwmap=None): #Python script casalog.origin('polcal') try: mycb = cbtool() if ((type(vis) == str) & (os.path.exists(vis))): mycb.open(filename=vis, compress=False, addcorr=False, addmodel=False) else: raise Exception, 'Visibility data set not found - please verify the name' # Do data selection according to selectdata if (selectdata): # pass all data selection parameters in as specified mycb.selectvis(time=timerange, spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna, uvrange=uvrange, chanmode='none', msselect=msselect) else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only mycb.selectvis(time='', spw=spw, scan='', field=field, intent=intent, baseline='', uvrange='', chanmode='none', observation='', msselect='') # set the model, if specified if (len(smodel) > 0): mycb.setptmodel(smodel) # Arrange applies.... if docallib: # by cal library from file mycallib = callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0 if (gaintable != ['']): ngaintab = len(gaintable) ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if (nspwmap > 0): if (type(spwmap[0]) != list): # first element not a list, only one spwmap specified # make it a list of list spwmap = [spwmap] nspwmap = 1 for igt in range(ngaintab): if (gaintable[igt] != ''): # field selection is null unless specified thisgainfield = '' if (igt < ngainfld): thisgainfield = gainfield[igt] # spwmap is null unless specifed thisspwmap = [-1] if (igt < nspwmap): thisspwmap = spwmap[igt] # interp is 'linear' unless specified thisinterp = 'linear' if (igt < ninterp): if (interp[igt] == ''): interp[igt] = thisinterp thisinterp = interp[igt] mycb.setapply(t=0.0, table=gaintable[igt], field=thisgainfield, calwt=True, spwmap=thisspwmap, interp=thisinterp) # ...and now the specialized terms # (BTW, interp irrelevant for these, since they are evaluated) # D-terms require parallactic angle mycb.setapply(type='P') # Set up for solving: phaseonly = False mycb.setsolve(type=poltype, t=solint, combine=combine, preavg=preavg, refant=refant, minblperant=minblperant, solnorm=False, minsnr=minsnr, table=caltable, apmode='ap', phaseonly=phaseonly, append=append) mycb.solve() mycb.close() except Exception, instance: print '*** Error ***', instance mycb.close() raise Exception, instance
def accor(vis=None, caltable=None, field=None, spw=None, intent=None, selectdata=None, timerange=None, antenna=None, scan=None, observation=None, msselect=None, solint=None, combine=None, append=None, docallib=None, callib=None, gaintable=None, gainfield=None, interp=None, spwmap=None): #Python script casalog.origin('accor') try: mycb = cbtool() if ((type(vis) == str) & (os.path.exists(vis))): mycb.open(filename=vis, compress=False, addcorr=False, addmodel=False) else: raise Exception, 'Visibility data set not found - please verify the name' # Do data selection according to selectdata casalog.post("NB: accor automatically excludes crosso-correlations.") if (selectdata): # insist only CCs if len(msselect) > 0: msselect = '(' + msselect + ') && ANTENNA==ANTENNA2' else: msselect = 'ANTENNA1==ANTENNA2' # pass all data selection parameters in as specified mycb.selectvis(time=timerange, spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna, uvrange='', chanmode='none', msselect=msselect) else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only # also insist only CCs mycb.selectvis(time='', spw=spw, scan='', field=field, intent=intent, observation='', baseline='', uvrange='', chanmode='none', msselect='ANTENNA1==ANTENNA2') # Arrange applies.... if docallib: # by cal library from file mycallib = callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0 if (gaintable != ['']): ngaintab = len(gaintable) ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if (nspwmap > 0): if (type(spwmap[0]) != list): # first element not a list, only one spwmap specified # make it a list of list spwmap = [spwmap] nspwmap = 1 for igt in range(ngaintab): if (gaintable[igt] != ''): # field selection is null unless specified thisgainfield = '' if (igt < ngainfld): thisgainfield = gainfield[igt] # spwmap is null unless specifed thisspwmap = [-1] if (igt < nspwmap): thisspwmap = spwmap[igt] # interp is 'linear' unless specified thisinterp = 'linear' if (igt < ninterp): if (interp[igt] == ''): interp[igt] = thisinterp thisinterp = interp[igt] mycb.setapply(t=0.0, table=gaintable[igt], field=thisgainfield, calwt=True, spwmap=thisspwmap, interp=thisinterp) # Set up for solving: mycb.setsolve(type='ACCOR', t=solint, combine=combine, table=caltable, append=append) mycb.solve() mycb.close() except Exception, instance: print '*** Error ***', instance mycb.close() casalog.post("Error in accor: %s" % str(instance), "SEVERE") raise Exception, "Error in accor: " + str(instance)
def applycal( vis=None, field=None, spw=None, intent=None, selectdata=None, timerange=None, uvrange=None, antenna=None, scan=None, observation=None, msselect=None, docallib=None, callib=None, gaintable=None, gainfield=None, interp=None, spwmap=None, calwt=None, parang=None, applymode=None, flagbackup=None, ): # Python script casalog.origin("applycal") # Take care of the trivial parallelization if ParallelTaskHelper.isParallelMS(vis): # Back up the flags, if requested (and if necessary) if flagbackup and applymode != "calonly" and applymode != "trial": fh.backupFlags(aflocal=None, msfile=vis, prename="applycal") flagbackup = False # To be safe convert file names to absolute paths. gaintable = ParallelTaskHelper.findAbsPath(gaintable) helper = ParallelTaskHelper("applycal", locals()) ret = helper.go() if ParallelTaskHelper.getAsyncMode(): return ret else: return try: mycb = cbtool() if (type(vis) == str) & os.path.exists(vis): # add CORRECTED_DATA column mycb.open(filename=vis, compress=False, addcorr=True, addmodel=False) else: raise Exception, "Visibility data set not found - please verify the name" # enforce default if unspecified if applymode == "": applymode = "calflag" # Back up the flags, if requested (and if necessary) if flagbackup and applymode != "calonly" and applymode != "trial": fh.backupFlags(aflocal=None, msfile=vis, prename="applycal") # Do data selection according to selectdata if selectdata: # pass all data selection parameters in as specified mycb.selectvis( time=timerange, spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna, uvrange=uvrange, chanmode="none", msselect=msselect, ) else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only mycb.selectvis( time="", spw=spw, scan="", field=field, intent=intent, observation="", baseline="", uvrange="", chanmode="none", msselect="", ) # Arrange applies.... if docallib: # by cal library from file mycallib = callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0 if gaintable != [""]: ngaintab = len(gaintable) ncalwt = len(calwt) if ncalwt == 1: calwt = [calwt[0] for i in range(ngaintab)] ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if nspwmap > 0: if type(spwmap[0]) != list: # first element not a list, only one spwmap specified # make it a list of list spwmap = [spwmap] nspwmap = 1 for igt in range(ngaintab): if gaintable[igt] != "": # field selection is null unless specified thisgainfield = "" if igt < ngainfld: thisgainfield = gainfield[igt] # spwmap is null unless specifed thisspwmap = [-1] if igt < nspwmap: thisspwmap = spwmap[igt] # interp is 'linear' unless specified thisinterp = "linear" if igt < ninterp: if interp[igt] == "": interp[igt] = thisinterp thisinterp = interp[igt] mycb.setapply( t=0.0, table=gaintable[igt], field=thisgainfield, calwt=calwt[igt], spwmap=thisspwmap, interp=thisinterp, ) # ...and now the specialized terms # Apply parallactic angle, if requested if parang: mycb.setapply(type="P") mycb.correct(applymode) # report what the flags did reportflags(mycb.activityrec()) mycb.close() # write history try: param_names = applycal.func_code.co_varnames[: applycal.func_code.co_argcount] param_vals = [eval(p) for p in param_names] write_history(mstool(), vis, "applycal", param_names, param_vals, casalog) except Exception, instance: casalog.post("*** Error '%s' updating HISTORY" % instance, "WARN") except Exception, instance: print "*** Error ***", instance mycb.close() casalog.post("Error in applycal: %s" % str(instance), "SEVERE") raise Exception, "Error in applycal: " + str(instance)
def applycal( vis=None, field=None, spw=None, intent=None, selectdata=None, timerange=None, uvrange=None, antenna=None, scan=None, observation=None, msselect=None, docallib=None, callib=None, gaintable=None, gainfield=None, interp=None, spwmap=None, calwt=None, parang=None, applymode=None, flagbackup=None, ): # Python script casalog.origin('applycal') # Take care of the trivial parallelization if ParallelTaskHelper.isParallelMS(vis): # Back up the flags, if requested (and if necessary) if flagbackup and applymode != 'calonly' and applymode != 'trial': fh.backupFlags(aflocal=None, msfile=vis, prename='applycal') flagbackup = False # To be safe convert file names to absolute paths. gaintable = ParallelTaskHelper.findAbsPath(gaintable) helper = ParallelTaskHelper('applycal', locals()) ret = helper.go() if ParallelTaskHelper.getAsyncMode(): return ret else: return try: mycb = cbtool() if (type(vis) == str) & os.path.exists(vis): # add CORRECTED_DATA column mycb.open(filename=vis, compress=False, addcorr=True, addmodel=False) else: raise Exception, \ 'Visibility data set not found - please verify the name' # enforce default if unspecified if applymode == '': applymode = 'calflag' # Back up the flags, if requested (and if necessary) if flagbackup and applymode != 'calonly' and applymode \ != 'trial': fh.backupFlags(aflocal=None, msfile=vis, prename='applycal') # Do data selection according to selectdata if selectdata: # pass all data selection parameters in as specified mycb.selectvis( time=timerange, spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna, uvrange=uvrange, chanmode='none', msselect=msselect, ) else: # selectdata=F, so time,scan,baseline,uvrange,msselect='' # using spw and field specifications only mycb.selectvis( time='', spw=spw, scan='', field=field, intent=intent, observation='', baseline='', uvrange='', chanmode='none', msselect='', ) # Arrange applies.... if docallib: # by cal library from file mycallib = callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0 if gaintable != ['']: ngaintab = len(gaintable) ncalwt = len(calwt) if ncalwt == 1: calwt = [calwt[0] for i in range(ngaintab)] ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if nspwmap > 0: if type(spwmap[0]) != list: # first element not a list, only one spwmap specified # make it a list of list spwmap = [spwmap] nspwmap = 1 for igt in range(ngaintab): if gaintable[igt] != '': # field selection is null unless specified thisgainfield = '' if igt < ngainfld: thisgainfield = gainfield[igt] # spwmap is null unless specifed thisspwmap = [-1] if igt < nspwmap: thisspwmap = spwmap[igt] # interp is 'linear' unless specified thisinterp = 'linear' if igt < ninterp: if interp[igt] == '': interp[igt] = thisinterp thisinterp = interp[igt] mycb.setapply( t=0.0, table=gaintable[igt], field=thisgainfield, calwt=calwt[igt], spwmap=thisspwmap, interp=thisinterp, ) # ...and now the specialized terms # Apply parallactic angle, if requested if parang: mycb.setapply(type='P') mycb.correct(applymode) # report what the flags did reportflags(mycb.activityrec()) mycb.close() # write history try: param_names = \ applycal.func_code.co_varnames[:applycal.func_code.co_argcount] param_vals = [eval(p) for p in param_names] write_history( mstool(), vis, 'applycal', param_names, param_vals, casalog, ) except Exception, instance: casalog.post("*** Error \'%s\' updating HISTORY" % instance, 'WARN') except Exception, instance: print '*** Error ***', instance mycb.close() casalog.post("Error in applycal: %s" % str(instance), "SEVERE") raise Exception, "Error in applycal: " + str(instance)
def fringefit(vis=None, caltable=None, field=None, spw=None, intent=None, selectdata=None, timerange=None, antenna=None, scan=None, observation=None, msselect=None, solint=None, combine=None, refant=None, minsnr=None, zerorates=None, globalsolve=None, delaywindow=None, ratewindow=None, append=None, docallib=None, callib=None, gaintable=None, gainfield=None, interp=None, spwmap=None, parang=None): #Python script casalog.origin('fringefit') try: mycb = cbtool() oldness = False casalog.post("Setting vi to {}".format(oldness)) mycb.setvi(oldness) # Use new calibration framework if ((type(vis) == str) & (os.path.exists(vis))): mycb.open(filename=vis, compress=False, addcorr=False, addmodel=False) else: raise Exception, 'Visibility data set not found - please verify the name' # Do data selection according to selectdata if (selectdata): casalog.post("Selecting data") # pass all data selection parameters in as specified mycb.selectvis(time=timerange, spw=spw, scan=scan, field=field, intent=intent, observation=str(observation), baseline=antenna, chanmode='none', msselect=msselect) else: # selectdata=F, so time,scan,baseline,msselect='' # using spw and field specifications only mycb.selectvis(time='', spw=spw, scan='', field=field, observation='', baseline='', chanmode='none', msselect='') if docallib: # by cal library from file mycallib = callibrary() mycallib.read(callib) mycb.setcallib(mycallib.cld) else: # by traditional parameters ngaintab = 0 if (gaintable != ['']): ngaintab = len(gaintable) ngainfld = len(gainfield) nspwmap = len(spwmap) ninterp = len(interp) # handle list of list issues with spwmap if (nspwmap > 0): if (type(spwmap[0]) != list): # first element not a list, only one spwmap specified # make it a list of list spwmap = [spwmap] nspwmap = 1 for igt in range(ngaintab): if (gaintable[igt] != ''): # field selection is null unless specified thisgainfield = '' if (igt < ngainfld): thisgainfield = gainfield[igt] # spwmap is null unless specifed thisspwmap = [-1] if (igt < nspwmap): thisspwmap = spwmap[igt] # interp is 'linear' unless specified thisinterp = 'linear' if (igt < ninterp): if (interp[igt] == ''): interp[igt] = thisinterp thisinterp = interp[igt] mycb.setapply(t=0.0, table=gaintable[igt], field=thisgainfield, calwt=True, spwmap=thisspwmap, interp=thisinterp) if len(delaywindow) != 2: delaywindow = [-1e6, 1e6] if len(ratewindow) != 2: ratewindow = [-1e6, 1e6] # ...and now the specialized terms # (BTW, interp irrelevant for these, since they are evaluated) # Apply parallactic angle, if requested if parang: mycb.setapply(type='P') # Set up for solving; only support one gaintype mycb.setsolve(type="FRINGE", t=solint, refant=refant, preavg=0.01, minsnr=minsnr, combine=combine, zerorates=zerorates, globalsolve=globalsolve, delaywindow=delaywindow, ratewindow=ratewindow, table=caltable, append=append) mycb.solve() reportsolvestats(mycb.activityrec()) mycb.close() except Exception, instance: print '*** Error ***', instance mycb.close() exc_type, exc_obj, exc_tb = sys.exc_info() fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1] casalog.post("Error in fringefit: %s" % str(instance), "SEVERE") casalog.post("{}:{}:{}".format(exc_type, fname, exc_tb.tb_lineno)) raise Exception, "Error in fringefit: " + str(instance)