Esempio n. 1
0
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.
Esempio n. 2
0
#
# 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.
Esempio n. 3
0
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)
Esempio n. 4
0
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
Esempio n. 5
0
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)
Esempio n. 6
0
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
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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)