Beispiel #1
0
    sep2ij[sep] = C.dfm.grid2ij(aa.ant_layout)[0][sep].split(',')
    s += C.dfm.grid2ij(aa.ant_layout)[0][sep] + ','

    for ij in sep2ij[sep]:
        ij2sep[ij] = sep

conj = {}
toconj = C.dfm.grid2ij(aa.ant_layout)[1]
for k in toconj.keys():
    conj['%d_%d'%a.miriad.bl2ij(k)] = toconj[k]

#Get filters with proper conjugation etc. Using one for each baseline type
#too much time to generate al lof them.
filters = {}
for sep in seps.keys():
    beam_w_fr = frf_conv.get_beam_w_fr(aa, seps[sep])
    t, firs, frbins,frspace = frf_conv.get_fringe_rate_kernels(beam_w_fr, inttime, opts.filt_width)
    filters[sep] = firs

#
_d = {}
_w = {}
times, data, flags = C.arp.get_dict_of_uv_data(args, s, pol, verbose=True)

for bl in data.keys():
    if not _d.has_key(bl): _d[bl],_w[bl] = {}, {}
    #get filter which is baseline dependent.
    b1,b2 = map(int,a.miriad.bl2ij(bl))
    sep = ij2sep['%d_%d'%(b1,b2)]
    firs = filters[sep]
    print b1,b2, sep
if True:
    print 'Zaki method of FR filtering-OLD'
    import frf_conv
    b1,b2 = ubl2bl(opts.sep)
    print 'using basline %d_%d'%(b1,b2)
    t, firs, frbins, frkers = frf_conv.get_oldfilter(aa, (1,4), 42.8, 401, freqs)
    firs = firs.take(chans, axis=0)
    firs = n.conj(firs)
    scalar = scalar/1.9
#if True:
if False:
    print 'Zaki method of FR filtering'
    import frf_conv
    b1,b2 = ubl2bl(opts.sep)
    print 'using basline %d_%d'%(b1,b2)
    beam_w_fr = frf_conv.get_beam_w_fr(aa, (b1,b2)) #I have been using (49,41)
    t, firs, frbins, frkers = frf_conv.get_fringe_rate_kernels(beam_w_fr, 42.8, 401)
    firs = firs.take(chans, axis=0)
    firs = n.conj(firs)
    #Scaling for aggressive fringe rate filtering
    scalar = scalar
if False:
#if True:
    print 'Aaron method of FR filtering'
    t = n.arange(-200,200,1) * 42.8
    w = a.dsp.gen_window(t.size, 'blackman-harris')
    sig = .000288*(fq/.1788)#was found in fr
    cen = .001059 * (fq/.1788)#was found in fr
    firg = n.exp(-(t**2)/(2*(1./(2*n.pi*sig)**2))).astype(n.complex) * w #note that this is in time.
    #firg = n.exp(-(t**2)/(2*(1./(sig)**2))).astype(n.complex) * w #note that this is in time.
    firg /= firg.sum()
Beispiel #3
0
    cs = m.contour(x,y, d, levels, linewidth=8, linestyles=linestyles, colors=colors)
    p.clabel(cs, inline=1, fontsize=10, fmt='%4.2f')#, manual=manual)
    #m.drawmapboundary()
    #m.drawmeridians(n.arange(0,360,30))
    #m.drawparallels(n.arange(0,90,10))
    return cs

xyz = h.px2crd(n.arange(h.npix()), ncrd=3)
top = n.dot(aa._eq2zen, xyz)
bl = aa.get_baseline(0,16,'r') * FQ
print 'Baseline:', bl
fng = frf_conv.mk_fng(bl, *xyz)
#plot_hmap(fng, mode='real'); p.show()

frf,bins,wgt,(cen,wid) = frf_conv.get_optimal_kernel_at_ref(aa, 0, (0,16))
bwfrs = frf_conv.get_beam_w_fr(aa, (0,16), ref_chan=0)
tbins,firs,frbins,frfs = frf_conv.get_fringe_rate_kernels(bwfrs,42.9,403)
wgt = scipy.interpolate.interp1d(frbins, frfs[0], kind='linear', bounds_error=False, fill_value=0)
fng_wgt = wgt(fng)

_bmx = aa[0].bm_response(top,pol='x')[0]
_bmy = aa[0].bm_response(top,pol='y')[0]
bm = 0.5 * (_bmx**2 + _bmy**2)
bm = n.where(top[-1] > 0, bm, 0)
fng_bm = fng_wgt * bm


fig = p.figure(figsize=(5,6.5))
gs = gridspec.GridSpec(2, 1, height_ratios=[3,1])
fig.subplots_adjust(left=.16, top=.95, bottom=.10, wspace=.05, hspace=.05, right=0.90)
Beispiel #4
0
o.add_option('--ntaps', type='int', default=20,
    help='Number of taps to use in FIR filter.')
o.set_usage('fringe_rate_filter.py [options] *.uv')
o.set_description(__doc__)
opts,args = o.parse_args(sys.argv[1:])

uv = a.miriad.UV(args[0])
print "inttime = uv['inttime']*4 #hack for *E files:inttime set incorrectly"
inttime = uv['inttime']*4 #hack for *E files:inttime set incorrectly
nchans = uv['nchan']
aa = a.cal.get_aa(opts.cal, uv['sdf'], uv['sfreq'], uv['nchan'])
del(uv)

#kernels for all frequencies
#beam_w_fr= frf_conv.get_beam_w_fr(aa, (49,41))#, binwidth=5e-6)   
beam_w_fr= frf_conv.get_beam_w_fr(aa, (1,4))#, binwidth=5e-6)   
tb, ks = frf_conv.get_fringe_rate_kernels(beam_w_fr, 42.8, 14*14)
p.figure(100)

p.plot(tb,ks[160].real)
p.plot(tb,ks[160].imag)

#capo.arp.waterfall(beam_w_fr, mx=-1, drng=5)

#take = n.where(n.log10(beam_w_fr) > -5)
#maxtake = n.max(take[1]) 
#mintake = n.min(take[1])
#print maxtake, mintake

#bins = bins[mintake:maxtake]
#beam_w_fr = beam_w_fr[:,mintake:maxtake]
vis_del = n.fft.fftshift(n.fft.fft(vis,axis=1),axes=1)
#get fr bins for plotting.
frates = n.fft.fftshift(n.fft.fftfreq(len(vis), 42.8) * 1e3) #mHz
step = frates[1] - frates[0]
f1, f2 = frates[0] - .5*step, frates[-1]+.5*step

#plot fringe rate transform.
p.figure(3);C.arp.waterfall(vis_tft, extent=(chans[0],chans[-1],f2,f1), drng=5);p.colorbar(shrink=.5)
p.title('Stokes I in Fringe rate domain (mHz)')
p.figure(4);C.arp.waterfall(vis_del);p.colorbar(shrink=.5)
#p.show()


#Now filter with aggressive fringe rate filter. 
b1 = 1; b2 = 4 #sep24 is the 0,1 spacing.
beam_w_fr = frf_conv.get_beam_w_fr(aa, (b1,b2)) #returns the beam weighted fringe rates in fr domain.

test = beam_w_fr[110]
#using a filter that is 3.5785bar hours long = 301 samples.
t, firs, frbins, frspace = frf_conv.get_fringe_rate_kernels(beam_w_fr, 42.8, 51)
fr_bins = n.fft.fftshift(n.fft.fftfreq(51, 42.8))

#show filters in both spaces.
print firs.shape
print frspace.shape
p.figure(20)
C.arp.waterfall(firs,extent=(t[0],t[-1],0,203),mx=0,drng=5);p.colorbar(shrink=.5)
p.figure(21)
C.arp.waterfall(frspace,extent=(f1,f2,203,0), mx=0,drng=4.5);p.colorbar(shrink=.5)

bmYYm = bmYY * bm_pol

hpol, bin_edges = n.histogram(fng, bins=bin_edges, weights=(bmXXm-bmYYm)**2)
htot, bin_edges = n.histogram(fng, bins=bin_edges, weights=(bmXXm+bmYYm)**2)
bins = 0.5 * (bin_edges[:-1] + bin_edges[1:])
#match = n.where(hpol > 0, n.sqrt(htot/hpol), 0); match /= match.max() # XXX sqrt here or no?
match = n.where(hpol > 0, htot/hpol, 0); match /= match.max() # XXX sqrt here or no?
wgt_pol = scipy.interpolate.interp1d(bins, match, kind='linear', bounds_error=False, fill_value=0)
tbins,firs,frbins,frfs= frf_conv.get_fringe_rate_kernels(n.array([wgt_pol]),42.9,403)
frfs[0] /= frfs[0].max()
wgt_pol = scipy.interpolate.interp1d(frbins, frfs[0], kind='linear')


frf,bins,wgt,(cen,wid) = frf_conv.get_optimal_kernel_at_ref(aa, 0, (0,16))

bwfrs = frf_conv.get_beam_w_fr(aa, (0,16), ref_chan=0) # XXX check our ref_chan
print bwfrs
tbins,firs,frbins,frfs = frf_conv.get_fringe_rate_kernels(bwfrs,42.9,403)
wgt = scipy.interpolate.interp1d(frbins, frfs[0], kind='linear')
#p.plot(bins,wgt(bins))
#p.plot(bins,wgt_pol(bins))
#p.plot(bins,wgt(bins)*wgt_pol(bins)); p.show()
pol_wgt = wgt_pol(fng).real
fng_wgt = wgt(fng).real
#bmXXm_fng = bmXXm * fng_wgt
#bmYYm_fng = bmYYm * fng_wgt

bmI = 0.5 * (bmXX + bmYY)
bmQ = 0.5 * (bmXX - bmYY)
bmIm = 0.5 * (bmXXm + bmYYm)
bmQm = 0.5 * (bmXXm - bmYYm)
Beispiel #7
0
if False:
    print 'Zaki method of FR filtering-OLD'
    import frf_conv
    b1,b2 = ubl2bl(opts.sep)
    print 'using basline %d_%d'%(b1,b2)
    t, firs, frbins, frkers = frf_conv.get_oldfilter(aa, (1,4), 42.8, 401, freqs)
    firs = firs.take(chans, axis=0)
    firs = n.conj(firs)
    scalar = scalar/1.9
#if True:
if False:
    print 'Zaki method of FR filtering'
    import frf_conv
    b1,b2 = ubl2bl(opts.sep)
    print 'using basline %d_%d'%(b1,b2)
    beam_w_fr = frf_conv.get_beam_w_fr(aa, (b1,b2)) #I have been using (49,41)
    t, firs, frbins, frkers = frf_conv.get_fringe_rate_kernels(beam_w_fr, 42.8, 401)
    firs = firs.take(chans, axis=0)
    firs = n.conj(firs)
    #Scaling for aggressive fringe rate filtering
    scalar = scalar
if False:
#if True:
    print 'Aaron method of FR filtering'
    t = n.arange(-200,200,1) * 42.8
    w = a.dsp.gen_window(t.size, 'blackman-harris')
    sig = .000288*(fq/.1788)#was found in fr
    cen = .001059 * (fq/.1788)#was found in fr
    firg = n.exp(-(t**2)/(2*(1./(2*n.pi*sig)**2))).astype(n.complex) * w #note that this is in time.
    #firg = n.exp(-(t**2)/(2*(1./(sig)**2))).astype(n.complex) * w #note that this is in time.
    firg /= firg.sum()