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()
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()
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)
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)
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()
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)
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)
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)
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()
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()
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)
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()
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
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)
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()
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)
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
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
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)
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
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
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)
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
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()
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()
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"])
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
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
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
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()
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')
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
""" 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
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: