Пример #1
0
    assert (uvdata.header.date_obs == '2003-02-25')

    sutable = uvdata.table('SU', 1)
    assert (sutable.version == 1)
    assert (sutable[0].epoch == 2000.0)

    antable = uvdata.table('AN', 0)
    assert (antable.version == 1)
    stabxyz = antable[3].stabxyz
    assert (3822846 < stabxyz[0] < 3822847)

    cltable = uvdata.table('CL', 0)
    start = cltable[0].time
    nxtable = uvdata.table('NX', 0)
    for row in nxtable:
        assert (row.time >= start)
    for row in nxtable:
        assert (sutable[row.source_id - 1].id__no == row.source_id)
    start2 = cltable[0]['time']
    assert (start2 == start)

    assert (uvdata.table_highver('NX') == 1)
    uvdata.table('NX', 0).zap()
    assert (uvdata.table_highver('NX') == 0)

    uvdata.clrstat()

finally:
    uvdata.zap()
Пример #2
0
    print 'clean: Removal all AIPS catalog entries'
    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
Пример #3
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))
Пример #4
0
    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