Пример #1
0
def pimagr (aipsname,aipsclass,docalib,source='',imsize=256,cellsize=0.1,\
            nchav=-1,disk=1,gainuse=0,robust=0,niter=100,outname='',\
            antennas = [], stokes='I'):
    imagr = AIPSTask('imagr')
    imagr.inname = aipsname
    imagr.inclass = aipsclass
    imagr.docalib = docalib
    imagr.indisk = disk
    imagr.stokes = stokes
    imagr.imsize[1:] = [imsize, imsize]
    imagr.cellsize[1:] = [cellsize, cellsize]
    if len(antennas):
        imagr.antennas[1:] = antennas
#        imagr.baseline[1:] = antennas
    if source == '':
        try:
            su = AIPSUVData(aipsname, aipsclass, disk, 1).table('SU', 1)
            imagr.source[1] = su[0]['source']
        except:
            print 'Unable to extract source from source table'
    if nchav == -1:
        try:
            h = AIPSUVData(aipsname, aipsclass, disk, 1).header
            imagr.nchav = h['naxis'][h['ctype'].index('FREQ')]
        except:
            imagr.nchav = 0
    imagr.gainuse = gainuse
    imagr.robust = robust
    imagr.niter = niter
    imagr.outname = outname
    #    imagr.inp()
    imagr.go()
Пример #2
0
def peel_source(uvdata, pols, source_no, RA_shift, Dec_shift):
	for i in range(len(pols)):
		pol_data = AIPSUVData(uvdata.name,pols[i],uvdata.indisk,uvdata.seq)

		tasav = AIPSTask('TASAV')
		tasav.indata = uvdata
		tasav.outname = 'SC_SN'
		tasav.outdisk = indisk
		tasav.go()

		sntables = AIPSUVData('SC_SN','TASAV',indisk,1)

		sncor = AIPSTask('SNCOR')
		sncor.indata = sntables
		sncor.opcode = 'PNEG'
		for i in range(5):
			sncor.snver = i+1
			sncor.go()


		split = AIPSTask('SPLIT')
		split.indata = uvdata
		split.sources[1] = sourceID
		split.docalib = 2
		split.outdisk = indisk
		split.go()

		uvdata.zap()
Пример #3
0
def ptacop(name1, class1, name2, class2, ttype, innum, outnum, disk):
    tacop = AIPSTask('TACOP')
    tacop.indata = AIPSUVData(name1, class1, disk, 1)
    tacop.outdata = AIPSUVData(name2, class2, disk, 1)
    tacop.inext = ttype
    tacop.invers = innum
    tacop.outvers = outnum
    tacop.go()
Пример #4
0
def runuvfix(datafile, inname, indisk, thisdir):
    uvfix = AIPSTask('UVFIX')
    klass = datafile.klass
    uvfix.indata = datafile
    uvfix.outdata = AIPSUVData(datafile.name, 'UVFIX', indisk, thisdir)
    uvfix.go()
    datafile.zap()
    datafile = AIPSUVData(inname, 'UVFIX', indisk, thisdir)
    datafile.rename(inname, klass, thisdir)
Пример #5
0
def zapexisting(inna, incl, indisk=1):
    for i in AIPSCat()[indisk]:
        if i['name'] == inna and i['klass'] == incl:
            if i['type'] == 'MA':
                AIPSImage(inna, incl, indisk, i['seq']).clrstat()
                AIPSImage(inna, incl, indisk, i['seq']).zap()
            else:
                AIPSUVData(inna, incl, indisk, i['seq']).clrstat()
                AIPSUVData(inna, incl, indisk, i['seq']).zap()
Пример #6
0
def runuvsrt(datafile, inname, indisk, thisdir):
    uvsrt = AIPSTask('UVSRT')
    klass = datafile.klass
    uvsrt.indata = datafile
    uvsrt.outdata = AIPSUVData(datafile.name, 'UVSRT', indisk, datafile.seq)
    uvsrt.sort = 'TB'
    uvsrt.go()
    datafile.zap()
    datafile = AIPSUVData(inname, 'UVSRT', indisk, thisdir)
    datafile.rename(inname, klass, thisdir)
Пример #7
0
def psplit (aipsname,source,indisk,logdir='./'):
    uvdata = AIPSUVData (aipsname,'FITS',indisk,1)
    split = AIPSTask ('split')
    split.indata = uvdata
    split.outclass = 'SPLIT'
    split.docalib = 1
    stdout = sys.stdout; sys.stdout = open(logdir+aipsname+'.log','a')
    split.go()
    sys.stdout.close(); sys.stdout = stdout
    uvdata = AIPSUVData(source,'SPLIT',indisk,1)
    uvdata.rename(aipsname,'SPLIT',1)
Пример #8
0
    def __split_and_fittp(self, startTime, endTime, partNumber, scanNumber):
        # temporary UVData to store the split, destroyed in the end
        tempDiskNo = 1
        tempSeqNo = 3
        tempUVData = AIPSUVData('PSRALL', 'SPLIT ', tempDiskNo, tempSeqNo)
        self.__clear(tempUVData)

        splitTask = AIPSTask('SPLIT')
        splitTask.indata = self.allUVData
        splitTask.timerang = AIPSList([
            0, startTime.hour, startTime.minute, startTime.second, 0,
            endTime.hour, endTime.minute, endTime.second
        ])
        splitTask.outdisk = tempDiskNo
        splitTask.outseq = tempSeqNo
        try:
            splitTask.go()
        except RuntimeError:
            print("!!!!Warning: SPLIT failed at " + startTime.isoformat() +
                  " - " + endTime.isoformat() + " possibly no data")

        # if SPLIT is successful, start FITTP
        if tempUVData.exists():
            fittpTask = AIPSTask('FITTP')
            fittpTask.dataout = (
                '/jop87_2/scratch/huang/rp024c/grid_trial/pulses/' +
                self.prefix + '.PART' + str(partNumber) + '.UVFITS')
            fittpTask.indata = tempUVData
            fittpTask.go()
Пример #9
0
def self_calibration(uvdata, source_no, RA_shift, Dec_shift, solints, sc_type, pols, imsize, niter,refant):
	nchan = uvdata.header.naxis[2]
	sutable = uvdata.table('SU',1)
	sourceID = str(sutable[0].source)
	for i in range(len(solints)):
		print('Self calibration iteration %d' % i)
		for j in range(len(pols)):
			print('Iteration %d: Imaging source number %d' % (i,source_no))
			imagr = AIPSTask('IMAGR')
			pol_data = AIPSUVData(uvdata.name,pols[j],indisk,uvdata.seq)
			print pol_data.klass
			print pols[j]
			imagr.indata = pol_data
			imagr.sources[1] = sourceID
			#imagr.cellsize = AIPSList([findmaxb(uvdata)[0],findmaxb(uvdata)[1]])
			imagr.cellsize = AIPSList([0.2,0.2])
			imagr.imsize = AIPSList(imsize)
			imagr.docalib = 2
			imagr.gainuse = i+1
			imagr.stokes = pols[j]
			imagr.rashift[1] = RA_shift
			imagr.decshift[1] = Dec_shift
			imagr.niter = niter
			imagr.nchav = nchan
			imagr.outname = 'S%s_SC%s' % (source_no,str(i+1))
			imagr.outdisk = indisk
			imagr.go()

			image = AIPSImage('S%s_SC%s' % (source_no,str(i+1)),'%sCL001'%pols[j][0],indisk,1)

			print('Iteration %d: Making calibrations soln w/ solint=%.1f min and %s type' % (i,solints[i],sc_type[i]))
			calib = AIPSTask('CALIB')
			calib.indata = pol_data
			calib.calsour[1] = sourceID
			calib.docalib = 2
			calib.in2data = image
			calib.refant = refant
			calib.solint = solints[i]
			calib.aparm[1:] = 3, 0, 0, 0, 0, 0, 3, 0
			calib.ncomp[1] = -1000000
			calib.soltype = 'L1'
			calib.solmode = sc_type[i]
			calib.snver = i+1
			calib.go()

		print('Iteration %d: Applying SN table %d' % (i,i))
		clcal = AIPSTask('CLCAL')
		clcal.indata = pol_data
		clcal.calsour[1] = sourceID
		clcal.sources[1] = sourceID
		clcal.opcode = 'CALP'
		clcal.interpol = 'AMBG'
		clcal.snver = i+1
		clcal.invers = i+1
		clcal.gainver = i+1
		clcal.gainuse = i+2
		clcal.cutoff = 60
		clcal.dobtween = 0
		clcal.refant = refant
		clcal.go()
Пример #10
0
def zaptabs(inna, incl, indisk, inseq, tabtype, top, bottom):
    uv = AIPSUVData(inna, incl, indisk, inseq)
    for i in range(top, bottom - 1, -1):
        try:
            uv.table(tabtype, i).zap()
        except:
            pass
Пример #11
0
def imgseq (inna,incl,indisk,inseq):
    uvdata = AIPSUVData (inna,incl,indisk,inseq)
    for i in AIPSCat()[1]:
        if i['name']==inna and i['klass']=='IMGSEQ':
            AIPSImage(inna,'IMGSEQ',indisk,i['seq']).zap()
        if i['name']==inna and i['klass']=='ICL001':
            AIPSImage(inna,'ICL001',indisk,i['seq']).zap()
    imagr=AIPSTask('imagr')
    imagr.indata = uvdata
    imagr.cellsize[1:] = [0.2,0.2]
    imagr.imsize[1:] = [1024,1024]
    imagr.uvwtfn = 'NA'
    imagr.uvrange[1:] = [5.0,100000.0]
    imagr.source[1] = 'BEAM_1'
    imagr.outname = inna
    imagr.niter = 200
    imagr.nchav = 54
    uvtap = [400.0,200.0,100.0,50.0]
    beam  = [0.5,0.9,1.8,5.0]
    for i in range(4):
        imagr.uvtaper[1:] = [uvtap[i],uvtap[i]]
        imagr.bmaj,imagr.bmin = beam[i],beam[i]
        imagr.go()
        AIPSImage(inna,'IBM001',indisk,1).zap()
        AIPSImage(inna,'ICL001',indisk,1).rename(inna,'IMGSEQ',indisk,0)
Пример #12
0
def msort(uvdata):
	sys.stdout.write('Sorting data by runing MSORT.')
	msort = AIPSTask('msort')
	msort.outdata = uvdata
	msort.outclass = 'MSORT'
	msort.indata = uvdata
	HF.print_inp_to_log(msort,'MSORT')
	msort()
	return AIPSUVData(uvdata.name,'MSORT',uvdata.disk,uvdata.seq)
Пример #13
0
def pwtmod(aipsname, refant, antennas, supweight=50.0, indisk=1):
    uvdata = AIPSUVData(aipsname, 'FITS', indisk, 1)
    wtmod = AIPSTask('WTMOD')
    wtmod.indata = uvdata
    wtmod.outdata = uvdata
    wtmod.antwt[1:] = [1] * len(antennas)
    wtmod.antwt[antennas.index(refant) + 1] = supweight
    #    wtmod.inp()
    wtmod.go()
Пример #14
0
def aipszap(aipsname, aipsclass, indisk=1):
    pca = AIPSCat()
    for j in pca[indisk]:
        if j['name'] == aipsname and j['klass'] == aipsclass:
            if j['type'] == 'UV':
                data = AIPSUVData(aipsname, aipsclass, indisk, j['seq'])
            else:
                data = AIPSImage(aipsname, aipsclass, indisk, j['seq'])
            data.zap()
Пример #15
0
def fullcal(fringe_inna, fcl, indisk, refant):
    zaptabs(fringe_inna, fcl, indisk, 1, 'SN', 10, 1)
    zaptabs(fringe_inna, fcl, indisk, 1, 'CL', 10, 2)
    zapim(fringe_inna, 'ICL001', indisk, 10, 1)
    zapim(fringe_inna, 'IBM001', indisk, 10, 1)
    #    source = AIPSUVData(fringe_inna,fcl,indisk,1).sources[0]
    source = 'BEAM_1'
    pfring (fringe_inna,refant,[0],source,solint=5,\
            weightit=1,zero=5,aipsclass=fcl,\
            suppress_rate=1)                        # delay cal -> SN1
    psnsmo(fringe_inna, fcl, indisk, 'VLBI')  # edited delay -> SN2
    pclcal(fringe_inna, indisk, 2, aipsclass=fcl)  # SN2 -> CL2
    pcalib (fringe_inna,fcl,indisk,0.5,refant,\
            docalib=1)                              # phase cal w/CL2 -> SN3
    pclcal(fringe_inna, indisk, 3, aipsclass=fcl)  # SN3+CL2 ->CL3
    pimagr(fringe_inna, fcl, 1)  # image with CL3 -> ICL001.1
    pcalib (fringe_inna,fcl,indisk,0.5,refant,\
            solmode='A&P',docalib=1,in2name=fringe_inna,\
            in2class='ICL001',in2seq=1,calsour=source)  # CL3/ICL001.1 -> SN4
    pclcal(fringe_inna, indisk, 4, aipsclass=fcl)  # SN4 + CL3 -> CL4
    pimagr(fringe_inna, fcl, 1)  # image with CL4 -> ICL001.2
    for i in [4, 3, 2, 1]:
        AIPSUVData(fringe_inna, fcl, indisk, 1).table('SN', i).zap()
    for i in [4, 3, 2]:
        AIPSUVData(fringe_inna, fcl, indisk, 1).table('CL', i).zap()
    pfring (fringe_inna,refant,[0],source,solint=5,\
            weightit=1,zero=5,aipsclass=fcl,\
            suppress_rate=1,in2name=fringe_inna,\
            in2class='ICL001',in2seq=2,docalib=-1)  # delay cal w/ICL001.2 -> SN1
    psnsmo(fringe_inna, fcl, indisk, 'VLBI')  # edited delay ->SN2
    pclcal(fringe_inna, indisk, 2, aipsclass=fcl)  # SN2 -> CL2
    pcalib (fringe_inna,fcl,indisk,0.5,refant,\
            docalib=1,in2name=fringe_inna,\
            in2class='ICL001',in2seq=2)             # phase cal w/CL2,ICL001.2 -> SN3
    pclcal(fringe_inna, indisk, 3, aipsclass=fcl)  # SN3+CL2 -> CL3
    pimagr(fringe_inna, fcl, 1)  # image w/CL3 -> ICL001.3
    source = AIPSUVData(fringe_inna, fcl, indisk, 1).sources[0]
    pcalib (fringe_inna,fcl,indisk,0.5,refant,\
            solmode='A&P',docalib=1,\
            in2name=fringe_inna, in2class='ICL001',
            in2seq=3,calsour=source)                # CL3/ICL001.3 -> SN4
    pclcal(fringe_inna, indisk, 4, aipsclass=fcl)  # SN4 + CL3 -> CL4
    pimagr(fringe_inna, fcl, 1)  # image with CL4 -> ICL001.4
def tasaver(uvdata, name):
    tasav = AIPSTask('TASAV')
    tasav.indata = uvdata
    tasav.outname = name[:8]
    tasav.go()
    os.system('rm -r eg078e_%s.TASAV' % name[:8])
    fittp = AIPSTask('FITTP')
    fittp.indata = AIPSUVData(name[:8], 'TASAV', 1, 1)
    fittp.dataout = 'PWD:eg078e_%s.TASAV' % name[:8]
    fittp.go()
Пример #17
0
def pclcal(aipsname, indisk, inver, logfiledir='./'):
    uvdata = AIPSUVData(aipsname, 'FITS', indisk, 1)
    clcal = AIPSTask('clcal')
    clcal.indata = uvdata
    clcal.inver = inver
    clcal.snver = inver
    stdout = sys.stdout
    sys.stdout = open(logfiledir + aipsname + '.log', 'a')
    clcal.go()
    sys.stdout.close()
    sys.stdout = stdout
Пример #18
0
def swpol(uvdata,antennas):
	swpol = AIPSTask('swpol')
	swpol.indata = uvdata
	swpol.antennas[1:] = antennas
	swpol.outname = uvdata.name
	swpol.outclass = 'SWPOL'
	swpol.outseq = uvdata.seq
	swpol.outdisk = uvdata.disk
	HF.print_inp_to_log(swpol,'SWPOL')
	swpol()
	return AIPSUVData(uvdata.name,'SWPOL',uvdata.disk,uvdata.seq)
Пример #19
0
def runtasav(uvdata, fittpdir, fittpfile, indisk):
    # Backup the FG tables after flagging
    tasav = AIPSTask('TASAV')
    tasavfil = AIPSUVData(uvdata.name, 'TASAV', indisk, uvdata.seq)
    tasav.indata = uvdata
    tasav.outdata = tasavfil
    tasav.outseq = uvdata.seq
    print "Saving tables for ", uvdata.name, uvdata.klass, uvdata.seq
    tasav.go()
    runfittp(tasavfil, fittpdir, fittpfile)
    tasavfil.zap()
Пример #20
0
def runfitld(datain, indisk, thisdir):
    fitld = AIPSTask('FITLD')
    fitld.datain = datain  # "datain" is correct here (use "indata" in most other places)
    fitld.outdisk = indisk
    fitld.digicor = -1
    fitld.douvcomp = -1
    fitld.clint = 8 / 60
    fitld.bif = 1
    fitld.eif = 0
    fitld.outdata = AIPSUVData('TMP', 'UVDATA', indisk, thisdir)
    fitld.go()
Пример #21
0
    def get_uv(self, e):
        """Get a AIPSUVData object form the AIPS entry.

        Args:
            e: A catalog entry, like what's returned from get_entry()

        Returns:
            AIPS UVData object.

        """
        return AIPSUVData(e.name, e.klass, self.DISK_ID, e.seq)
Пример #22
0
def pclcal (aipsname,indisk,inver,aipsclass='FITS',logdir='./',\
            snver=-1,gainver=0,gainuse=0):
    uvdata = AIPSUVData (aipsname,aipsclass,indisk,1)
    clcal = AIPSTask ('clcal')
    clcal.indata = uvdata
    clcal.inver = inver
    clcal.snver = inver if snver==-1 else snver
    clcal.gainver = gainver
    clcal.gainuse = gainuse
    stdout = sys.stdout; sys.stdout = open(logdir+aipsname+'.log','a')
    clcal.go()
    sys.stdout.close(); sys.stdout = stdout
Пример #23
0
def pfring (aipsname,refant,antennas,source,indisk=1,delaywin=600,ratewin=20,\
            solint=1,snr=2,logdir='./',weightit=3,zero=0,aipsclass='FITS',\
            aipsseq=1,suppress_rate=0,in2name='',in2class='',in2seq=1,\
            docalib=-1):
    uvdata = AIPSUVData (aipsname,aipsclass,indisk,aipsseq)
    fring = AIPSTask ('FRING')
    fring.refant = refant
    fring.indata = uvdata
    fring.calsour[1:] = [source]
    fring.antennas[1:] = antennas
    if in2name!='' and in2class=='':
        uv2data = AIPSUVData (in2name, in2class, indisk, in2seq)
        fring.in2data = uv2data
    fring.solint = solint
    fring.aparm[1:] = [0,0,0,0,0,2,snr,0,0]
    fring.dparm[1:] = [0,delaywin,ratewin,0,0,0,0,zero,suppress_rate]
    fring.weightit = weightit
    fring.docalib = docalib
    stdout = sys.stdout; sys.stdout = open(logdir+aipsname+'.log','a')
#    fring.inp()
    fring.go()
    sys.stdout.close(); sys.stdout = stdout
Пример #24
0
def uvcop(uvdata,timer=[0,0,0,0],sources=[],antennas=[],uvcopprm=[1,0,0,1,0,0,0]):
	uvcop = AIPSTask('uvcop')
	uvcop.indata = uvdata
	uvcop.outname = uvdata.name
	uvcop.outclass = 'UVCOP'
	uvcop.outseq = uvdata.seq
	uvcop.outdisk = uvdata.disk
	uvcop.timer[1:] = timer
	uvcop.antennas[1:] = antennas
	uvcop.sources[1:] = sources
	uvcop.uvcopprm[1:] = uvcopprm
	uvcop()
	return AIPSUVData(uvdata.name,'UVCOP',uvdata.disk,uvdata.seq)
Пример #25
0
def pload (filename,aipsname,indisk,outcl,logdir='./',doindxr=True):
    fitld = AIPSTask ('FITLD')
    fitld.datain = str(filename)
    fitld.outna = aipsname
    fitld.outcl = outcl
    fitld.dokeep = 1
    fitld.outdisk = indisk
    stdout = sys.stdout; sys.stdout = open(logdir+aipsname+'.log','a')
    fitld.go ()
    if doindxr:
        uvdata = AIPSUVData (aipsname,'FITS',1,1)
        indxr = AIPSTask ('INDXR')
        indxr.cparm[1:] = [0,0,0.1,0,0,0,0,0,0,0]
        indxr.indata = uvdata
        indxr.go()
    sys.stdout.close(); sys.stdout = stdout
Пример #26
0
def pfring (aipsname,refant,antennas,source,indisk,delaywin=600,ratewin=20,\
            solint=1,snr=2,logfiledir='./'):
    uvdata = AIPSUVData(aipsname, 'FITS', indisk, 1)
    fring = AIPSTask('FRING')
    fring.refant = refant
    fring.indata = uvdata
    fring.calsour[1:] = [source]
    fring.antennas[1:] = antennas
    fring.solint = solint
    fring.aparm[1:] = [0, 0, 0, 0, 0, 2, snr, 0, 0]
    fring.dparm[1:] = [0, delaywin, ratewin, 0, 0, 0, 0, 0, 0]
    fring.weightit = 1
    stdout = sys.stdout
    sys.stdout = open(logfiledir + aipsname + '.log', 'a')
    fring.go()
    sys.stdout.close()
    sys.stdout = stdout
Пример #27
0
def find_difmap_chan(inna, incl, indisk=1, inseq=1):
    INCR = 1
    if incl == '':
        output = inna.split('/')[-1] if '/' in inna else inna
        try:
            AIPSUVData('DIFMAP', 'UVDATA', indisk, inseq).zap()
            print 'Removed DIFMAP.UVDATA.%d disk %d' % (inseq, indisk)
        except:
            pass
        fitld = AIPSTask('fitld')
        fitld.datain = inna if '/' in inna else './' + inna
        fitld.outname = 'DIFMAP'
        fitld.outclass = 'UVDATA'
        fitld.outdisk = indisk
        fitld.outseq = inseq
        fitld.go()
        inna, incl = 'DIFMAP', 'UVDATA'
    else:
        output = '%s_%s' % (inna, incl)
    data = WizAIPSUVData(inna, incl, indisk, inseq)
    for i in data:
        v = i.visibility
        na = np.asarray(np.ravel(v[:, :, 0, 0]), dtype='bool')
        try:
            a = na | a
        except:
            a = np.copy(na)
    bstart, bend = [], []
    for i in range(len(a)):
        if (i == 0 and a[i]) or (i != 0 and a[i] and not a[i - 1]):
            bstart.append(i + 1)
        if (i != 0 and not a[i] and a[i - 1]):
            bend.append(i)
        if (a[i] and i == len(a) - 1):
            bend.append(len(a))
    fo = open('dchan_%s' % (output), 'w')
    fo.write('select I,')
    for i in range(len(bstart)):
        fo.write('%d,%d' % (bstart[i], bend[i]))
        if i != len(bstart) - 1:
            fo.write(',')
    fo.write('\n')
    fo.close()
Пример #28
0
def fittp(imdata,outfile=''):
	uvdata=AIPSUVData(*imdata)
	if outfile=='':
		outfile=uvdata.header['object']
	while os.path.isfile(aips_out+outfile):
		outname=outfile.split('.')[0]
		filetype=outfile.split('.')[-1]
		outname=outname.split('_')
		try:
			outname[-1]= str(int(outname[-1])+1)
		except ValueError:
			outname.append('2')
		outfile='_'.join(outname)+'.'+filetype

	fittp = AIPSTask('fittp')
	fittp.indata = uvdata
	fittp.dataout = aips_out+outfile
	HF.print_inp_to_log(fittp,'FITTP')
	fittp()
Пример #29
0
def getuvdata(cno, disk=1):
    '''
    get AIPSUVData object at a specified AIPS Catalogue number and AIPS Disk.

    Args:
        cno (int):
            AIPS Catalogue Number
        disk (int, default=1):
            Number of AIPS Disk
    Returns:
        AIPSUVData object
    '''
    cat = pcat(output=True, doprint=False, disk=disk)
    isdata = False
    for catdata in cat:
        if catdata["cno"] == cno:
            isdata = True
            break
    if not isdata:
        raise ValueError("No data at cno=%d and disk=%d" % (cno, disk))
    return AIPSUVData(catdata["name"], catdata["klass"], disk, catdata["seq"])
Пример #30
0
def pfring (aipsname,refant,antennas,source,indisk=1,delaywin=600,ratewin=20,\
            solint=1,snr=2,dparm4=0,logdir='./',weightit=1,zero=0,aipsclass='FITS',\
            aipsseq=1,suppress_rate=0):
    uvdata = AIPSUVData(aipsname, aipsclass, indisk, aipsseq)
    fring = AIPSTask('FRING')
    fring.refant = refant
    fring.indata = uvdata
    fring.calsour[1:] = [source]
    fring.antennas[1:] = antennas
    fring.solint = solint
    fring.aparm[1:] = [0, 0, 0, 0, 0, 2, snr, 0, 0]
    fring.dparm[1:] = [
        0, delaywin, ratewin, dparm4, 0, 0, 0, zero, suppress_rate
    ]
    fring.weightit = weightit
    stdout = sys.stdout
    sys.stdout = open(logdir + aipsname + '.log', 'a')
    #    fring.inp()
    fring.go()
    sys.stdout.close()
    sys.stdout = stdout