cubespectrum1 = a.addtask(admit.CubeSpectrum_AT(), [bandcube1]) a[cubespectrum1].setkey('pos', maxpos) elif len(cslist) > 0: cubespectrum1 = a.addtask(admit.CubeSpectrum_AT(), [bandcube1, cslist]) else: #cubespectrum1 = a.addtask(CubeSpectrum_AT(), [bandcube1,csttab1]) cubespectrum1 = a.addtask(admit.CubeSpectrum_AT(), [bandcube1, csmom0]) csptab1 = (cubespectrum1, 0) if stop == 'contsub': a.exit(1) if usePV: # PVSlice if len(pvslice) == 4: # hardcoded with a start,end slice1 = a.addtask(admit.PVSlice_AT(slice=pvslice, width=pvwidth), [bandcube1, csmom0]) elif len(pvslit) == 4: # hardcoded with a center,len,pa slice1 = a.addtask(admit.PVSlice_AT(slit=pvslit, width=pvwidth), [bandcube1, csmom0]) else: # use cubesum's map to generate the best slice # the PPP method didn't seem to work so well yet, and is slow, so still commented out here #slice1 = a.addtask(PVSlice_AT(width=5),[bandcube1,csttab1]) <-- BUG with summary needed a figure CSM style input makes slice1 = a.addtask(admit.PVSlice_AT(width=pvwidth), [bandcube1, csmom0]) a[slice1].setkey( 'clip', 2.0) # this is like a numsigma factor (sigma determined internally) a[slice1].setkey('gamma', 1.0) # SB185 works better with gamma=4
# Master project. p = admit.Project('all-cubes.admit', commit=False) # Flow tasks. t0 = p.addtask(admit.Ingest_AT(file='concat.spw17.image.fits')) t1 = p.addtask(admit.CubeStats_AT(), [t0]) t2 = p.addtask(admit.CubeSum_AT(numsigma=5.0, sigma=1.0), [t0, t1]) t3 = p.addtask(admit.CubeSpectrum_AT(alias='spec11'), [t0, t2]) t4 = p.addtask(admit.LineSegment_AT(minchan=4, maxgap=4, numsigma=6.0), [t1, t3]) t5 = p.addtask(admit.ContinuumSub_AT(fitorder=1, pad=40), [t0, t4]) t5a = p.addtask(admit.CubeStats_AT(), [t5]) t6 = p.addtask(admit.CubeSpectrum_AT(alias='spec12'), [t5, t2]) t7 = p.addtask(admit.Moment_AT(mom0clip=2.0, numsigma=[3.0]), [t5, t1]) t8 = p.addtask(admit.PVSlice_AT(clip=0.3, width=5), [t5, t2]) t9 = p.addtask(admit.PVCorr_AT(), [t8, t1]) t10 = p.addtask( admit.LineID_AT(csub=[1, 1], minchan=3, maxgap=4, numsigma=6.0), [t5a, t6]) t11 = p.addtask(admit.LineCube_AT(pad=40), [t5, t10]) t12 = p.addtask(admit.Moment_AT(mom0clip=2.0, moments=[0, 1, 2]), [t11, t1]) t13 = p.addtask(admit.CubeSpectrum_AT(), [t11, t12]) p.run() # Flow tasks. t20 = p.addtask(admit.Ingest_AT(file='concat.spw19.image.fits')) t21 = p.addtask(admit.CubeStats_AT(), [t20]) t22 = p.addtask(admit.CubeSum_AT(numsigma=4.0, sigma=1), [t20, t21]) t24 = p.addtask(admit.CubeSpectrum_AT(alias='spec13'), [t20, t22]) t26 = p.addtask(admit.LineSegment_AT(minchan=3, numsigma=4.0), [t21, t24])
# >0 force single cuberms sigma from cubestats; <0 would use rms(freq) table a[moment1].setkey('sigma', 99.0) csmom0 = (moment1, 0) # CubeSpectrum if len(maxpos) > 0: cubespectrum1 = a.addtask(admit.CubeSpectrum_AT(), [bandcube1]) a[cubespectrum1].setkey('pos', maxpos) else: cubespectrum1 = a.addtask(admit.CubeSpectrum_AT(), [bandcube1, csmom0]) csptab1 = (cubespectrum1, 0) # PVSlice if len(pvslice) == 4: # hardcoded with a start,end slice1 = a.addtask(admit.PVSlice_AT(slice=pvslice, width=5), [bandcube1, csmom0]) elif len(pvslit) == 4: # hardcoded with a center,len,pa slice1 = a.addtask(admit.PVSlice_AT(slit=pvslit, width=5), [bandcube1, csmom0]) else: # use cubesum's map to generate the best slice slice1 = a.addtask(admit.PVSlice_AT(width=5), [bandcube1, csmom0]) a[slice1].setkey('clip', 0.3) # TODO: this is an absolute number for mom0 a[slice1].setkey('gamma', 1.0) # SB185 works better with gamma=4 a[slice1].setkey('smooth', pvSmooth) # smooth, in pixel numbers pvslice1 = (slice1, 0) corr1 = a.addtask(admit.PVCorr_AT(), [pvslice1, csttab1]) pvcorr1 = (corr1, 0)
else: Tasks.append( p.addtask( admit.Ingest_AT(alias='incube', file=cubefile, pb=pbcorfile, box=KEYS["box"]))) Tasks.append(p.addtask(admit.CubeStats_AT(alias='instats'), ['incube'])) Tasks.append( p.addtask(admit.CubeSum_AT(sigma=1, numsigma=3.0, alias='insum'), ['incube', 'instats'])) Tasks.append( p.addtask(admit.CubeSpectrum_AT(alias='spec1'), ['incube', 'insum'])) Tasks.append( p.addtask(admit.PVSlice_AT(alias="cubepv", width=KEYS["width"]), ['incube', 'insum'])) Tasks.append( p.addtask( admit.LineID_AT(csub=[1, 1], minchan=KEYS["minchan"], numsigma=KEYS["numsigma"], alias='lines'), ['instats', 'spec1'])) Tasks.append( p.addtask(admit.LineCube_AT(alias='cutcubes', pad=KEYS["pad"]), ['incube', 'lines'])) Tasks.append( p.addtask( admit.Moment_AT(alias='linemom', mom0clip=3.0, numsigma=KEYS["cutoff"],
# # Set-up all ADMIT Flow tasks for execution including their aliases and connections # The aliases allow you to refer to a task's input by the alias name of the (previous) # task providing that input. # # Add spectral line processing to flow if KEYS["specpb"] == None: Tasks.append(p.addtask(admit.Ingest_AT(file=cubefile, alias='incube'))) else: Tasks.append(p.addtask(admit.Ingest_AT(file=cubefile, alias='incube', pb=KEYS["specpb"]))) Tasks.append(p.addtask(admit.CubeStats_AT (alias='instats'), ['incube'])) Tasks.append(p.addtask(admit.CubeSum_AT (alias='insum', sigma=1, numsigma=3.0), ['incube', 'instats'])) Tasks.append(p.addtask(admit.CubeSpectrum_AT (alias='spec1'), ['incube', 'insum'])) Tasks.append(p.addtask(admit.PVSlice_AT ( width=KEYS["width"]), ['incube', 'insum'])) Tasks.append(p.addtask(admit.LineID_AT (alias='lines', csub=[0,0], minchan=KEYS["minchan"], numsigma=KEYS["numsigma"]), ['instats','spec1'])) Tasks.append(p.addtask(admit.LineCube_AT (alias='cutcubes', pad=KEYS["pad"]), ['incube', 'lines'])) Tasks.append(p.addtask(admit.Moment_AT (alias='linemom', mom0clip=2.0, numsigma=KEYS["cutoff"], moments=[0, 1, 2]), ['cutcubes', 'instats'])) Tasks.append(p.addtask(admit.CubeSpectrum_AT (alias='linespec'), ['cutcubes', 'linemom'])) # While 'linemom' produces 3 moment image BDPs, the default input is taken # here, which is the first BDP which is the zeroth moment. This relies on # Moment_AT's default behavior of putting the zeroth moment in the # BDP index 0. Tasks.append(p.addtask(admit.PVSlice_AT ( width=KEYS["width"]), ['cutcubes', 'linemom'])) # If given, add continuum map processing to flow if contfile != None: if KEYS["contpb"] == None: Tasks.append(p.addtask(admit.Ingest_AT (alias='incont', file=contfile)))