Example #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()
Example #2
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()
Example #3
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)
Example #4
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()
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)
Example #6
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()
Example #7
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)
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)
Example #9
0
def psplit (aipsname,source,indisk,logfiledir='./'):
    uvdata = AIPSUVData (aipsname,'FITS',indisk,1)
    split = AIPSTask ('split')
    split.indata = uvdata
    split.outclass = 'SPLIT'
    split.docalib = 1
    stdout = sys.stdout; sys.stdout = open(logfiledir+aipsname+'.log','a')
    split.go()
    sys.stdout.close(); sys.stdout = stdout
    uvdata = AIPSUVData(source,'SPLIT',indisk,1)
    uvdata.rename(aipsname,'SPLIT',1)
Example #10
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()
Example #11
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()
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)
Example #13
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()
Example #14
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()
Example #15
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)
Example #16
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()
Example #18
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
Example #19
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)
Example #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()
Example #21
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)
Example #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
Example #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
Example #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)
Example #25
0
def pload (filename,aipsname,indisk,outcl,logdir='./',doindxr=True,\
           idxint=5./60.):
    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,outcl,1,1)
        cltables = np.array([],dtype='int')   # remove extant CL tables
        for i in range(len(uvdata.tables)):
            if uvdata.tables[i][1] == 'AIPS CL':
                np.append (cltables,uvdata.tables[i][0])
        for i in cltables[::-1]:
            print 'Removing existing CL table %d'%i
            uvdata.table('CL',i).zap()
        indxr = AIPSTask ('INDXR')     # INDXR creating new table
        indxr.cparm[1:] = [0,0,float(idxint),0,0,0,0,0,0,0]
        indxr.indata = uvdata
        indxr.go()
    sys.stdout.close(); sys.stdout = stdout
Example #26
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
Example #27
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)
Example #28
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
Example #29
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()
Example #30
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()
Example #31
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"])
Example #32
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
Example #33
0
def find_chan_fits(infile, indisk=1, inseq=1):
    try:
        AIPSUVData('DIFMAP', 'UVDATA', indisk, inseq).zap()
        print('Removed DIFMAP.UVDATA.%d disk %d' % (inseq, indisk))
    except:
        pass
    fitld = AIPSTask('fitld')
    fitld.datain = infile if '/' in infile else './' + infile
    fitld.outname = 'DIFMAP'
    fitld.outclass = 'UVDATA'
    fitld.outdisk = indisk
    fitld.outseq = inseq
    fitld.go()
    data = WizAIPSUVData('DIFMAP', 'UVDATA', 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)
    return a
Example #34
0
def read_wide_position_list_0(filename):
    """Reads in a list of source names and positions

filename     I  The name of the file to open

OUTPUT returned as:  uvdata, ra, dec

uvdata       O  list of AIPSUVData objects corresponding to the
                input names
ra           0  list of right ascensions, in radians
dec          O  list of declinations, in radians


The file has the following form:
# Lines starting with a # are comment lines and are ignored
# Name   Class  Disk  Sequence    RA_2000        Dec_2000
MY_Src   clss   1     2           12h04m45.6s     -01:34:21.5

The Name and Class items must contain no internal spaces, and should
conform to AIPS standards for acceptible characters.  The Disk and
Sequence items must be integers.  RA and Dec can be specified in multiple
formats, but should be in Hours minutes, seconds, and Degrees, minutes, seconds.

    """
    fp = open(filename, "r")
    uvdata = []
    ra = []
    dec = []
    for line in fp:
        if(line[0] == '#'): continue
        s = line.split(None, 4)
        # AIPS has 12 character name limit
        s[0] = s[0][0:12]
        this_uv = AIPSUVData(s[0].upper(), s[1].upper(), int(s[2]), int(s[3]))
        this_ra, this_dec = Albus_Coordinates.radec_str_to_rad(s[4])
        uvdata.append(this_uv)
        ra.append(this_ra)
        dec.append(this_dec)
    return uvdata, ra, dec
Example #35
0
import os
import signal
import time
import urllib

AIPS.userno = 1999

# Download a smallish FITS file from the EVN archive.
url = 'http://archive.jive.nl/exp/N03L1_030225/fits/n03l1_1_1.IDI1'
file = '/tmp/' + os.path.basename(url)
if not os.path.isfile(file):
    urllib.urlretrieve(url, file)
assert(os.path.isfile(file))

name = os.path.basename(url).split('_')[0].upper()
uvdata = AIPSUVData(name, 'UVDATA', 1, 1)
if uvdata.exists():
    uvdata.zap()
    pass

assert(not uvdata.exists())

fitld = AIPSTask('fitld')
fitld.datain = file
fitld.outdata = uvdata
fitld.msgkill = 2
fitld()

assert(uvdata.exists())

tv = AIPSTV()
Example #36
0
    def __init__(self, iterNum, **args):
        self.iterNum = iterNum
        self.args = args
            
        AIPS.userno=self.args["user"]#username
        snInit = 0
        clInit = 1

        AIPSTask.msgkill = -5 #makes the output less verbose
        uvdata = AIPSUVData(self.args["name"], 'UVDATA', 1, self.args["inseq"])
        cleaninseq = iterNum
        imageClean = AIPSImage(self.args["name"], 'ICL001', 1, cleaninseq)
        imageDirty = AIPSImage(self.args["name"], 'IBM001', 1, cleaninseq)
        imageCleanSC = AIPSImage(self.args["source"], 'ICL001', 1, 1)
        imageDirtySC = AIPSImage(self.args["source"], 'IBM001', 1, 1)
        flag = AIPSUVData(self.args["name"], 'TASAV', 1, 100)
        if uvdata.exists() and iterNum == 1:
            print("Data is already present")
            ans1 = raw_input('\033[33mDo you want to zap the data (yes/no)? \033[0m').upper()
            if ans1 == 'YES':
                print("Zapping data and reloading.")
                uvdata.clrstat()
                uvdata.zap()

                fitld = AIPSTask('fitld')
                fitld.datain = self.args["dataPath"]
                fitld.outname = self.args["name"]
                fitld.outseq = self.args["inseq"]
                fitld.ncount = self.args["fileCount"]
                fitld.doconcat = 1

                #fitldFL = AIPSTask("FITLD")
                #fitldFL.datain = args["flagPath"]
                #fitldFL.outname = self.args["name"]
                #fitldFL.outseq = 100
                #fitldFL.ncount = 1
                #fitldFL.go()

                snVers = 0
                clVers = 1
                fitld.go()
            else:
                ans2 = raw_input('\033[33mDo you want to zap the tables and images(yes/no)? \033[0m').upper()
                if ans2 == 'YES':
                    print("Zapping tables/images.")
                    uvdata.clrstat()
                    uvdata.zap_table('SN', -1)
                    uvdata.zap_table('FL', -1)
                    tablesToDelete = 0
                    for i in uvdata.tables:
                        if i[1] == 'AIPS CL' and i[0]>tablesToDelete:
                            tablesToDelete = i[0]
                    for k in range(tablesToDelete,1,-1):
                        uvdata.zap_table('CL', k)

                    snVers = 0
                    clVers = 1
                else:
                    print("Going direclty to imaging.")
                    """
                    snVers = 0
                    clVers = 0
                    for i in uvdata.tables:
                        if i[1] == 'AIPS SN' and i[0] > snVers:
                            snVers = i[0]
                        if i[1] == 'AIPS CL' and i[0] > clVers:
                            clVers = i[0]
                    """
                    clVers = int(raw_input("What cl table would you like to use? "))
                    loc = location_finder.Location_finder(clVers, **self.args)
                    sys.exit()
        elif not uvdata.exists():

            print("Loading data")
            fitld = AIPSTask('fitld')
            fitld.datain = self.args["dataPath"]
            fitld.outname = self.args["name"]
            fitld.outseq = self.args["inseq"]
            fitld.ncount = self.args["fileCount"]
            fitld.doconcat = 1
            fitld.go()

            #fitldFL = AIPSTask("FITLD")
            #fitldFL.datain = args["flagPath"]
            #fitldFL.outname = self.args["name"]
            #fitldFL.outseq = 100
            #fitldFL.ncount = 1
            #fitldFL.go()

            snVers = 0
            clVers = 1
        else:
            snVers = 0
            clVers = 0
            for i in uvdata.tables:
                if i[1] == 'AIPS SN' and i[0] > snVers:
                    snVers = i[0]
                if i[1] == 'AIPS CL' and i[0] > clVers:
                    clVers = i[0]
            print("Deleting tables.")
            uvdata.zap_table('SN', -1)
            for k in range(clVers,1,-1):
                uvdata.zap_table('CL', k)
            snVers = 0
            clVers = 1
        if imageClean.exists():
            imageClean.clrstat()
            imageClean.zap()
        if imageDirty.exists():
            imageDirty.clrstat()
            imageDirty.zap()
        if flag.exists():
            flag.clrstat()
            flag.zap()
        
        fitldFL = AIPSTask("FITLD")
        fitldFL.datain = args["flagPath"]
        fitldFL.outname = self.args["name"]
        fitldFL.outseq = 100
        fitldFL.ncount = 1
        fitldFL.go()

        print("Copying flagging")                
        tacop = AIPSTask("TACOP")
        tacop.indata = flag
        tacop.invers = 3
        tacop.ncount = 1 
        tacop.outname = self.args["name"]
        tacop.outseq = self.args["inseq"]
        tacop.outclass = 'UVDATA'
        tacop.outdisk = 1
        tacop.outver = 0
        tacop.inext = 'FG'
        tacop.go()        
        
        if self.args["doBP"]:
            uvdata.zap_table('BP', -1) #create a new bp table for each reftelly
            print("Running bandpass")
            bpass = AIPSTask('BPASS')
            bpass.indata = uvdata
            bpass.calsour[1] = self.args["bandPassCal"]
            bpass.timer = self.args["time"]
            bpass.refant = self.args["refTelly"]
            if self.args["excludeTelly"]:
                bpass.antennas[1:] = self.args["excludedTellys"]
            bpass.go()
        """
        uvdata.zap_table('TY', -1)
        uvdata.zap_table('GC', -1)
        print("Running antab")
        antab = AIPSTask('ANTAB')
        antab.indata = uvdata
        antab.calin = self.args["antPath"]
        antab.go()
        
        print("Running apcal")
        apcal = AIPSTask('APCAL')
        apcal.indata = uvdata
        apcal.timer = self.args["time"]
        apcal.tyver = 1
        apcal.gcver = 1
        apcal.go()
        
        snVers = snVers + 1
        print("apcal made snVers {0}".format(snVers))
        
        #applies new SN table to CL
        print("Running clcal.")
        clcal = AIPSTask('clcal') 
        clcal.indata = uvdata
        clcal.calsour[1] = self.args["cal"]
        clcal.timerang = self.args["time"]
        clcal.snver = snVers
        clcal.inver = snVers
        clcal.gainver = clInit #apply to original cl
        clcal.timer = self.args["time"]
        clcal.interpol = "ambg"
        clcal.opcode = "calp"
        clcal.refant = self.args["refTelly"]
        clcal.go()

        clVers = clVers + 1
        print("clcal made cl table {0}".format(clVers))
        """
        print("Running Fring.")
        fring = AIPSTask('fring') #finds fringes
        fring.indata = uvdata
        fring.docalib = 1
        fring.gainuse = clVers
        if self.args["excludeTelly"]:
            fring.antennas[1:] = self.args["excludedTellys"]
        fring.calsour[1] = self.args["cal"]
        fring.bchan = self.args["bchan"]
        fring.echan = self.args["echan"]
        fring.timer = self.args["time"]
        fring.refant = self.args["refTelly"]
        if self.args["doBP"]:
            fring.doband = 1
            fring.bpver = 1
        fring.go()
        
        snVers = snVers + 1
        SN = 0
        for i in uvdata.tables:
            if i[1] == 'AIPS SN' and i[0]>SN:
                SN = i[0]
        if not SN == snVers:
            sys.exit("SN table number missmatch")
        print("Fring created SN table {0}".\
              format(snVers))

        
        #applies new SN table to CL
        print("Running clcal.")
        clcal = AIPSTask('clcal') 
        clcal.indata = uvdata
        clcal.calsour[1] = self.args["cal"]
        clcal.timerang = self.args["time"]
        if self.args["excludeTelly"]:
            clcal.antennas[1:] = self.args["excludedTellys"]
        clcal.snver = snVers
        clcal.inver = snVers
        clcal.gainver = clInit #apply to original cl
        clcal.timer = self.args["time"]
        clcal.interpol = "ambg"
        clcal.opcode = "calp"
        clcal.refant = self.args["refTelly"]
        clcal.go()
        """
        clcal.snver = snVers
        clcal.inver = snVers
        clcal.gainver = clVers
        clcal.go()
        """
        CL = 0
        clVers = clVers + 1 
        clFring = clVers
        for i in uvdata.tables:
            if i[1] == 'AIPS CL' and i[0]>CL:
                CL = i[0]
        if not CL == clVers:
            sys.exit("CL table number missmatch")
        print("Clcal created CL table {0}".\
              format(clVers))

        #determines calibration, creates new SN
        print("Running calib")
        calib = AIPSTask('calib')
        calib.indata = uvdata
        calib.calsour[1] = self.args["cal"]
        calib.docalib = 1
        calib.gainuse = clVers
        if self.args["excludeTelly"]:
            calib.antennas[1:] = self.args["excludedTellys"]
        calib.smodel[1] = 1
        calib.solint = 0.2
        calib.soltype = 'L1'
        calib.solmode = 'P'
        if self.args["doBP"]:
            calib.doband = 1
            calib.bpver = 1
        calib.timer = self.args["time"]
        calib.refant = self.args["refTelly"]
        calib.go()

        snVers = snVers + 1
        SN = 0
        for i in uvdata.tables:
            if i[1] == 'AIPS SN' and i[0]>SN:
                SN = i[0]
        if not SN == snVers:
            sys.exit("SN table number missmatch")
        print("Calib created SN table {0}".\
              format(snVers))

        #takes SN table created by calib and applies to CL
        print("Running clcal")
        clcal.sources[1] = self.args["cal"]
        clcal.snver = snVers
        clcal.inver = snVers
        clcal.gainver = clVers
        clcal.go() #Apply only to cal
        clVers = clVers + 1
        CL = 0
        for i in uvdata.tables:
            if i[1] == 'AIPS CL' and i[0]>CL:
                CL = i[0]
        if not CL == clVers:
            sys.exit("CL table number missmatch")
        print("Clcal created CL table {0}".format(clVers))
 
        #cleans the image
        print("Running imagr")
        imagr = AIPSTask('IMAGR')
        imagr.indata = uvdata
        imagr.sources[1] = self.args["cal"]
        imagr.timerang = self.args["time"]
        imagr.docalib = 1
        imagr.outseq = iterNum #test to force it to make file
        imagr.gainuse = clVers
        imagr.bchan = self.args["bchan"]
        imagr.echan = self.args["echan"]
        imagr.nchav = (self.args["echan"]-self.args["bchan"] + 1)
        if self.args["doBP"]:
            imagr.doband = 1
            imagr.bpver = 1
        if self.args["excludeTelly"]:
            imagr.antennas[1:] = self.args["excludedTellys"]
        imagr.cellsize = AIPSList([0.0001,0.0001])
        imagr.imsize = AIPSList([256,256])
        imagr.nboxes = len(self.args["CalCleanBox"])
        imagr.clbox[1:] = self.args["CalCleanBox"]
        imagr.niter = 1000
        imagr.go()
        print("Done with imagr")

        #to get last positive row
        latestImgTable = 0
        for j in imageClean.tables:
            if j[1] == 'AIPS CC' and j[0]>latestImgTable:
                latestImgTable = j[0]
        ccTable = imageClean.table('CC', latestImgTable)
        for row, i in enumerate(ccTable, start=2): #start @ 2 to get last positive
            if i['flux']<0:
                lastPositive = row
                break
        print("The last positive component number is: {0}".\
              format(lastPositive))

        print("Running Calib")
        calibSelf = AIPSTask('calib')
        calibSelf.in2data = imageClean 
        calibSelf.indata = uvdata
        calibSelf.calsour[1] = self.args["cal"]
        calibSelf.docalib = 1
        calibSelf.gainuse = clFring
        calibSelf.solint = 0.2
        calibSelf.soltype = 'L1'
        calibSelf.solmode = 'A&P'
        if self.args["excludeTelly"]:
            calibSelf.antennas[1:] = self.args["excludedTellys"]
        calibSelf.ncomp[1] = lastPositive
        calibSelf.timer = self.args["time"]
        if self.args["doBP"]:
            calibSelf.doband = 1
            calibSelf.bpver = 1
        calibSelf.go()
        snVers = snVers + 1
        SN = 0
        for i in uvdata.tables:
            if i[1] == 'AIPS SN' and i[0]>SN:
                SN = i[0]
        if not SN == snVers:
            print("SN = {0} , snVers = {1}".format(SN, snVers))
            sys.exit("SN table number missmatch")


        print("calibSelf created SN table {0}".format(snVers))

        #makes contour plot
        kntr = AIPSTask('KNTR')
        kntr.indata = imageClean
        kntr.levs = AIPSList([-1,1,2,3,4,5,7,10])
        kntr.dogrey = -1
        kntr.dotv = -1 
        kntr.dovect = - 1 
        #kntr.blc[1] = .80*self.args["fitBox"][1]
        #kntr.blc[2] = .80*self.args["fitBox"][2]
        #kntr.trc[1] = 1.20*self.args["fitBox"][3]
        #kntr.trc[2] = 1.20*self.args["fitBox"][4]
        kntr.go()
        

        lwmp = AIPSTask('LWPLA')
        lwmp.indata = imageClean
        lwmp.plver = 1
        lwmp.invers = 1
        lwmp.outfile = os.getcwd() + '/images_{0}/{1}_time{2}'.format(self.args["date"],self.args["cal"],self.iterNum) + '.ps'
        lwmp.go()

        print("Running clcal")
        clcal.snver = snVers
        clcal.inver = snVers
        clcal.sources[1] = self.args["cal"]
        clcal.calsour[1] = self.args["cal"] 
        clcal.gainver = clVers
        print("clVers = {0}".format(clVers))
        clcal.go() #Apply only to cal
        clVers = clVers + 1
        CL = 0
        for i in uvdata.tables:
            if i[1] == 'AIPS CL' and i[0]>CL:
                CL = i[0]
        if not CL == clVers:
            sys.exit("CL table number missmatch")
        print("clcal created CL table {0}".format(clVers))

        print("Running clcal.")
        clcalFinal = AIPSTask('clcal') 
        clcalFinal.indata = uvdata
        clcalFinal.sources[1] = self.args["source"]
        clcalFinal.calsour[1] = self.args["cal"]
        clcalFinal.timerang = self.args["time"]
        clcalFinal.snver = snVers
        clcalFinal.inver = snVers
        clcalFinal.gainver = clFring
        if self.args["excludeTelly"]:
            clcalFinal.antennas[1:] = self.args["excludedTellys"]
        clcalFinal.timer = self.args["time"]
        clcalFinal.refant = self.args["refTelly"]
        print("clFring = {0}".format(clFring))
        clcalFinal.go()

        clVers = clVers +1
        CL = 0
        for i in uvdata.tables:
            if i[1] == 'AIPS CL' and i[0]>CL:
                CL = i[0]
        if not CL == clVers:
            sys.exit("CL table number missmatch")
        print("clcalFinal created CL table {0}".format(clVers))

        
        print("Running imagr")
        imagrSC = AIPSTask('IMAGR')
        imagrSC.indata = uvdata
        imagrSC.sources[1] = self.args["source"]
        imagrSC.timerang = self.args["time"]
        imagrSC.docalib = 1
        imagrSC.outseq = 1
        imagrSC.outname = self.args["source"]
        imagrSC.gainuse = clVers
        imagrSC.bchan = self.args["SCbchan"]
        imagrSC.echan = self.args["SCechan"]
        imagrSC.nchav = (self.args["SCechan"]-self.args["SCbchan"] + 1)
        if self.args["doBP"]:
            imagrSC.doband = 1
            imagrSC.bpver = 1
        if self.args["excludeTelly"]:
            imagrSC.antennas[1:] = self.args["excludedTellys"]
        imagrSC.cellsize = AIPSList([0.0001,0.0001])
        imagrSC.imsize = AIPSList([256,256])
        imagrSC.nboxes = 1
        imagrSC.clbox[1] = self.args["fitBox"]
        imagrSC.niter = 1000
        imagrSC.go()
        print("Done with imagr")

        #makes contour plot
        kntrSC = AIPSTask('KNTR')
        kntrSC.indata = imageCleanSC
        kntrSC.levs = AIPSList([2,3,4,5,7,10,13,17])
        kntrSC.dogrey = -1
        kntrSC.dotv = -1 
        kntrSC.dovect = - 1 
        #kntr.blc[1] = .80*self.args["fitBox"][1]
        #kntr.blc[2] = .80*self.args["fitBox"][2]
        #kntr.trc[1] = 1.20*self.args["fitBox"][3]
        #kntr.trc[2] = 1.20*self.args["fitBox"][4]
        kntrSC.go()
        
        lwmpSC = AIPSTask('LWPLA')
        lwmpSC.indata = imageCleanSC
        lwmpSC.plver = 1
        lwmpSC.invers = 1
        lwmpSC.outfile = os.getcwd() + '/images_{0}/{1}_time{2}'.format(self.args["date"],self.args["source"],self.iterNum) + '.ps'
        lwmpSC.go()
    
        loc = location_finder.Location_finder(clVers, **self.args)
        imageClean.zap()
        imageDirty.zap()
        imageCleanSC.zap()
        imageDirtySC.zap()
        flag.zap()
        
        with open(os.getcwd() + '/images_{0}/params{1}.txt'.format(self.args["date"],self.iterNum),'w') as f:
            for l in self.args:
                f.write("\n{0}".format(l))
def dbcon(sys):
    argc = len(sys.argv)
    if argc < 3:
        print ''
        print 'dbcon: Combine all observations into a single dish fits file'
        print 'usage: doImage dbcon.py <aipsNumber> <feeds>'
        print '                        <average> <channels> <display> <rmsflag> <verbose> <baseline-subtract>'
        print '                        <keeptempfiles> <spectra File 1> [<spectra File n>]'
        print 'where <aipsNumber>     Your *PIPELINE* AIPS number (should always be the same)'
        print '      <spectra File 1> One or more calibrated spectra files (*.fits)'
        print '      Combined spectra are placed in catalog slot 1'
        print ''
        quit()
    
    feeds = sys.argv[2].split(',')
    average = sys.argv[3]
    channels = sys.argv[4]
    display_idlToSdfits = sys.argv[5]
    idlToSdfits_rms_flag = sys.argv[6]
    verbose = sys.argv[7]
    idlToSdfits_baseline_subtract = sys.argv[8]
    keeptempfiles = sys.argv[9]
    imfiles = sys.argv[10:]
    
    if not imfiles:
        return
    
    sdf_files = []
    for feed in feeds:
        files = []
        for xx in imfiles:
            if 'feed{num}'.format(num=feed) in xx:
                files.append(xx)
        
        if not files:
            continue
            
        sdf = run_idlToSdfits(files, average, channels, display_idlToSdfits,
                   idlToSdfits_rms_flag, verbose, idlToSdfits_baseline_subtract)
        sdf_files.append(sdf)
        
    AIPS.userno=int(sys.argv[1])    # retrieve AIPS pipeline user number
    mydisk=2                        # choose a good default work disk
    baddisk=1                       # list a disk to avoid (0==no avoidance)
    
    AIPSCat().zap()                 # empty the catalog
    
    uvlod=AIPSTask('uvlod')         # Create structures for AIPS tasks
    uvlod.outdisk=mydisk            # write all input data to a select disk
    fittp=AIPSTask('fittp')
    dbcon=AIPSTask('dbcon')
    uvsrt=AIPSTask('uvsrt')
    mandl=AIPSTask('mandl')
    
    # Need a temporary small file to reserve slot 1
    mandl.outdisk = mydisk
    # create an image that will be deleted at end
    mandl.go()
    
    #
    kount = 0                       # init count of similar input files
    
    for thisFile in sdf_files:        # input all AIPS single dish FITS files
        uvlod.datain='PWD:'+thisFile
        print uvlod.datain
        uvlod.outdisk=mydisk
        uvlod.go()
        spectra = AIPSUVData(AIPSCat()[mydisk][-1].name, AIPSCat()[mydisk][-1].klass, mydisk, AIPSCat()[mydisk][-1].seq)
        nuRef    = spectra.header.crval[2]
        if kount == 0:
            firstNu = nuRef
        if ((firstNu - nuRef) < -1.E5) or ((firstNu - nuRef) > 1.E5):
            print 'Frequencies differ: ',nuRef,' != ',firstNu
            spectra.zap()
        else:
            kount = kount+1
    
    spectra = AIPSUVData(AIPSCat()[mydisk][-1].name, AIPSCat()[mydisk][-1].klass, mydisk, AIPSCat()[mydisk][-1].seq)
    
    # prepare to accumulate source names
    allObjects = ["","","","","","","","","","","","","","","","","","","",
                      "","","","","","","","","","","","","","","","","","",""]
    allObjects[0] = spectra.header.object
    nObjects = 1
    
    if kount > 1:            # if more than 1 file DBCON them
    
        # always do first 2
        dbcon.indisk=mydisk
        dbcon.outdisk=mydisk
        dbcon.in2disk=mydisk
        dbcon.inname = AIPSCat()[mydisk][1].name
        dbcon.inclass = AIPSCat()[mydisk][1].klass
        dbcon.inseq = AIPSCat()[mydisk][1].seq
        dbcon.in2name = AIPSCat()[mydisk][2].name
        dbcon.in2class = AIPSCat()[mydisk][2].klass
        dbcon.in2seq = AIPSCat()[mydisk][2].seq
        print 'combining 1: ', dbcon.inname, dbcon.inclass, dbcon.inseq
        print 'combining 2: ', dbcon.in2name, dbcon.in2class, dbcon.in2seq
        dbcon.reweight[1] = 0
        dbcon.reweight[2] = 0
        dbcon.go()
    
        # and keep adding in one
        for i in range(2,kount):
            # end of cat is always most recent dbcon result
            dbcon.inname = AIPSCat()[mydisk][-1].name
            dbcon.inclass = 'DBCON'
            dbcon.inseq = i - 1
            dbcon.in2name = AIPSCat()[mydisk][i+1].name
            dbcon.in2class = AIPSCat()[mydisk][i+1].klass
            dbcon.in2seq = AIPSCat()[mydisk][i+1].seq
            print 'combining 1: ', dbcon.inname, dbcon.inclass, dbcon.inseq
            print 'combining 2: ', dbcon.in2name, dbcon.in2class, dbcon.in2seq
            #prepare to zap revious dbconned file
            dbcon.go()
            # now zap previous big input file 
            spectra = AIPSUVData(AIPSCat()[mydisk][-1].name, 'DBCON',mydisk, i-1)
            spectra.zap()
    
        # remove input files, must remove them in reverse to presurve catalog order
        for i in range(1,kount+1):
            j = kount+1-i
            aname = AIPSCat()[mydisk][j].name
            aclass = AIPSCat()[mydisk][j].klass
            aseq = AIPSCat()[mydisk][j].seq
            # print i, j, aname, aclass, aseq
            spectra = AIPSUVData( aname, aclass, mydisk, aseq)
            notFound = True
            # check if this object is already in the list
            for iii in range(0,nObjects):
                if (allObjects[iii] == spectra.header.object):
                    notFound = False
            # if not in the list add to list and increment count
            if (notFound):
                allObjects[nObjects] = spectra.header.object
                nObjects = nObjects+1
            spectra.zap()
    
    #print nObjects,' Object(s) Observed: ', allObjects
    objectName = allObjects[0]
    for iii in range(1,nObjects):
        if len(allObjects[iii]) > 0:
            objectName = objectName + '+' + allObjects[iii]
    
    print nObjects,' Object(s) Observed: ', objectName
    
    if nObjects > 2:
        objectName = allObjects[0] + '+' + str( nObjects-1)
    
    # Extract the observations summary
    spectra = AIPSUVData(AIPSCat()[mydisk][-1].name, AIPSCat()[mydisk][-1].klass, mydisk, AIPSCat()[mydisk][-1].seq)
    
    # Read parameters passed inside the spectra data header
    nChan    = round(spectra.header.naxis[2])
    cellsize = round(spectra.header.cdelt[4] * 3600.)
    refChan  = spectra.header.crpix[2]
    imxSize  = 2*round(spectra.header.crpix[3]/1.5 )
    imySize  = 2*round(spectra.header.crpix[4]/1.5 )
    raDeg    = spectra.header.crval[3]
    decDeg   = spectra.header.crval[4]
    nuRef    = spectra.header.crval[2]
    dNu      = spectra.header.cdelt[2]
    
    print "Ra,Dec:", raDeg, decDeg, "Image:", imxSize, imySize, cellsize, 
    #print spectra.header
    
    #now free up slot 0
    image = WizAIPSImage(AIPSCat()[mydisk][0].name, \
                         AIPSCat()[mydisk][0].klass, \
                         mydisk, AIPSCat()[mydisk][0].seq)
    image.zap()
    
    # sort data to prevent down stream probelms
    uvsrt.indisk=mydisk
    uvsrt.outdisk=mydisk
    uvsrt.baddisk[1]=baddisk
    uvsrt.outcl='UVSRT'
    uvsrt.sort='TB'
    uvsrt.inname=AIPSCat()[mydisk][-1].name
    if kount < 2:
        uvsrt.inclass=AIPSCat()[mydisk][-1].klass
        uvsrt.inseq=kount    
    else:
        uvsrt.inclass='DBCON'
        uvsrt.inseq=kount - 1
    uvsrt.go()
    
    # now clean up the last of the input files
    spectra.zap()
    
    ## and write the last thing now in the catalog to disk
    fittp.indisk=mydisk
    fittp.inname=AIPSCat()[mydisk][-1].name
    fittp.inclass=AIPSCat()[mydisk][-1].klass
    fittp.inseq=AIPSCat()[mydisk][-1].seq
    outName = os.path.splitext(sdf_files[0])[0]
    # Trim out the source name
    iUnder = outName.find("_")
    if iUnder > 0:
        outName = outName[iUnder+1:]
    # Trim out the beam number
    iUnder = outName.find("_")
    if iUnder > 0:
        outName = outName[iUnder+1:]
    # Trim out the first scan number
    iUnder = outName.find("_")
    if iUnder > 0:
        outName = outName[iUnder+1:]
    # Trim out the sampler number
    iUnder = outName.rfind("_")
    if iUnder > 0:
        outName = outName[0:iUnder]
    #Now prepend the objects
    lObjectName = len(objectName)
    if lObjectName > 40:
        objectName = objectName[:40]
    outimage = objectName+'_'+outName+'_dbcon.fits'
    if os.path.exists(outimage):
        os.remove(outimage)
        print 'Removed existing file to make room for new one :',outimage
    
    fittp.dataout='PWD:'+outimage
    fittp.go()

    if keeptempfiles != '1':
        [os.unlink(xx) for xx in sdf_files]
        if os.path.isdir('summary'):
            [os.unlink('summary/'+xx) for xx in os.listdir('summary')]
            os.rmdir('summary')
Example #38
0
from Wizardry.AIPSData import AIPSUVData as WizAIPSUVData

import os
import urllib

AIPS.userno = 1999

# Download a smallish FITS file from the EVN archive.
url = 'http://archive.jive.nl/exp/N03L1_030225/fits/n03l1_1_1.IDI1'
file = '/tmp/' + os.path.basename(url)
if not os.path.isfile(file):
    urllib.urlretrieve(url, file)
assert(os.path.isfile(file))

name = os.path.basename(url).split('_')[0].upper()
uvdata = AIPSUVData(name, 'UVDATA', 1, 1)
if uvdata.exists():
    uvdata.zap()
    pass

assert(not uvdata.exists())

fitld = AIPSTask('fitld')
fitld.datain = file
fitld.outdata = uvdata
fitld.msgkill = 2
fitld.go()

assert(uvdata.exists())

try:
            # uvdataname = uvdataname[:-1]
            fitld = AIPSTask("FITLD")
            fitld.datain = "PWD:" + uvdataname
            fitld.ncount = 1
            fitld.doconcat = 1
            fitld.clint = 0
            fitld.wtthresh = 0
            fitld.outdisk = indisk
            fitld.digicor = -1
            fitld.go()
        if file.endswith(fileend):
            uvname.append(uvdataname[0:8])
            # makes a list of file prefixes to be used in multi self cal, all data is loaded.

    for i in range(len(uvname)):
        uvdata = AIPSUVData(uvname[i], "SPLAT", indisk, 1)  # name the uv file in AIPS
        imagedata = AIPSImage(uvname[i], "IIM001", indisk, 1)

        nchan = uvdata.header.naxis[2]
        imagr = AIPSTask("IMAGR")
        imagr.nchav = nchan  # use imagr to get a clean model!
        imagr.indata = uvdata
        imagr.outname = uvdata.name
        imagr.cellsize[1:] = findmaxb(uvdata)
        imagr.imsize[1:] = imsize
        imagr.nboxes = 1
        imagr.nfield = 1
        imagr.outdisk = indisk
        imagr.uvwtfn = ""
        imagr.niter = niter
        imagr.go()
from Wizardry.AIPSData import AIPSUVData as WizAIPSUVData

import os
import urllib

AIPS.userno = 1999

# Download a smallish FITS file from the EVN archive.
url = 'http://archive.jive.nl/exp/N03L1_030225/fits/n03l1_1_1.IDI1'
file = '/tmp/' + os.path.basename(url)
if not os.path.isfile(file):
    urllib.urlretrieve(url, file)
assert(os.path.isfile(file))

name = os.path.basename(url).split('_')[0].upper()
uvdata = AIPSUVData(name, 'UVDATA', 1, 1)
assert(uvdata.exists())

try:
    uvdata = WizAIPSUVData(name, 'UVDATA', 1, 1, AIPS.userno)
    count = 0
    for vis in uvdata:
        try:
            assert(vis.visibility[0][0][0][2] > 1.233)
            assert(vis.visibility[0][0][0][2] < 1.235)
        except:
            print count, vis.visibility[0][0][0][2]
            break
        count += 1
        continue
			fitld.datain = ('PWD:' + uvdataname) 
			fitld.ncount = 1
			fitld.doconcat = 1
			fitld.clint = 0
			fitld.wtthresh = 0
			fitld.outdisk = 2
			fitld.digicor = -1
			fitld.go()
		if file.endswith(fileend):
			uvname.append(uvdataname[0:8])
	# makes a list of file prefixes to be used in multi self cal, all data is loaded.



	for i in range(len(uvname)):
			uvdata = AIPSUVData(uvname[i],'SPLAT',2,1) #name the uv file in AIPS		
			imagedata = AIPSImage(uvname[i],'IIM001',2,1)

			nchan = uvdata.header.naxis[2]
			imagr = AIPSTask('IMAGR')
			imagr.nchav = nchan #use imagr to get a clean model!
			imagr.indata = uvdata
			imagr.outname = uvdata.name
			imagr.cellsize[1:] = findmaxb(uvdata)
			imagr.imsize[1:] = imsize
			imagr.nboxes = 1
			imagr.nfield = 1
			imagr.outdisk = 2
			imagr.uvwtfn = ''
			imagr.niter = niter
			imagr.go()
    print 'usage: doImage clean.py <aipsNumber>'
    print 'where <aipsNumber>     Your *PIPELINE* AIPS number (should always be the same)'
    print ''
    quit()
        
AIPS.userno=int(sys.argv[1])    # retrieve AIPS pipeline user number
mydisk=2                        # choose a good default work disk
baddisk=1                       # list a disk to avoid (0==no avoidance)

catalog = AIPSCat()[mydisk]
catalog_size = len(catalog)

print 'catalog_size',catalog_size

for xx in range(catalog_size):

    aname = AIPSCat()[mydisk][xx].name
    aclass = AIPSCat()[mydisk][xx].klass
    aseq = AIPSCat()[mydisk][xx].seq

    spectra = AIPSUVData( aname, aclass, mydisk, aseq)
    image = AIPSImage( aname, aclass, mydisk, aseq)

    if spectra.exists():
        spectra.clrstat()
    elif image.exists():
        image.clrstat()

AIPSCat().zap()                 # empty the catalog

Example #43
0
"""
Created on 23 July 2015 by jwkania to plot uvcoverages
"""
from AIPS import AIPS
from AIPSTask import AIPSTask, AIPSList
from AIPSData import AIPSUVData, AIPSImage
from subprocess import call
import os
AIPSTask.msgkill = 3
AIPS.userno = 916
uvdata = AIPSUVData('gr035', 'UVDATA', 1, 1)

for i,t in enumerate([[None,0], [None,0,18,59,30, 1,3,46,30], [None,1,2,1,30, 1,9,0,30], \
                      [None,1,8,18,30, 1,18,30,0]],start=0): 
    uvdata.zap_table('PL', -1)
    uvplt = AIPSTask('UVPLT')
    uvplt.timerang = t
    uvplt.indata = uvdata
    uvplt.bchan = 1
    uvplt.echan = 256
    uvplt.nchav = 256
    #uvplt.docalib = 1
    #uvplt.gainuse = 1 
    #uvplt.doband = 1
    #uvplt.bpver = 1
    uvplt.bparm = AIPSList([6, 7])
    uvplt.dotv = -1 
    uvplt.xinc = 20
    uvplt.go()

    lwpla = AIPSTask('LWPLA')
from Wizardry.AIPSData import AIPSUVData as WizAIPSUVData

import os
import urllib

AIPS.userno = 1999

# Download a smallish FITS file from the EVN archive.
url = 'http://archive.jive.nl/exp/N03L1_030225/fits/n03l1_1_1.IDI1'
file = '/tmp/' + os.path.basename(url)
if not os.path.isfile(file):
    urllib.urlretrieve(url, file)
assert(os.path.isfile(file))

name = os.path.basename(url).split('_')[0].upper()
uvdata = AIPSUVData(name, 'UVDATA', 1, 1)
if uvdata.exists():
    uvdata.zap()

fitld = AIPSTask('fitld')
fitld.datain = file
fitld.outdata = uvdata
fitld.douvcomp = 0
fitld.msgkill = 2
fitld.go()

uvdata = WizAIPSUVData(name, 'UVDATA', 1, 1, AIPS.userno)
for vis in uvdata:
    vis.visibility[0][0][0][2] = 1.234
    vis.update()
    continue
Example #45
0
from Wizardry.AIPSData import AIPSUVData as WAIPSUVData

import os
import urllib

AIPS.userno = 1999

# Download a smallish FITS file from the EVN archive.
url = 'http://archive.jive.nl/exp/N03L1_030225/fits/n03l1_1_1.IDI1'
file = '/tmp/' + os.path.basename(url)
if not os.path.isfile(file):
    urllib.urlretrieve(url, file)
assert(os.path.isfile(file))

name = os.path.basename(url).split('_')[0].upper()
uvdata = AIPSUVData(name, 'UVDATA', 1, 1)
if uvdata.exists():
    uvdata.zap()
    pass

assert(not uvdata.exists())

fitld = AIPSTask('fitld')
fitld.datain = file
fitld.outdata = uvdata
fitld.msgkill = 2
fitld.go()

assert(uvdata.exists())

try:
Example #46
0
from Wizardry.AIPSData import AIPSUVData as WAIPSUVData

import os
import urllib

AIPS.userno = 1999

# Download a smallish FITS file from the EVN archive.
url = 'http://archive.jive.nl/exp/N03L1_030225/fits/n03l1_1_1.IDI1'
file = '/tmp/' + os.path.basename(url)
if not os.path.isfile(file):
    urllib.urlretrieve(url, file)
assert(os.path.isfile(file))

name = os.path.basename(url).split('_')[0].upper()
uvdata = AIPSUVData(name, 'UVDATA', 1, 1)
if uvdata.exists():
    uvdata.zap()
    pass

assert(not uvdata.exists())

fitld = AIPSTask('fitld')
fitld.datain = file
fitld.outdata = uvdata
fitld.msgkill = 2
fitld.go()

assert(uvdata.exists())

try: