Beispiel #1
0
def gather_metadata(uv, chans, window):
    M = {}
    chans = a.scripting.parse_chans(chans, uv['nchan'])
    freqs = a.cal.get_freqs(uv['sdf'], uv['sfreq'], uv['nchan'])
    freqs = freqs.take(chans)
    M['sdf'] = uv['sdf']
    M['fq'] = np.average(freqs)
    M['z'] = pspec.f2z(M['fq'])
    M['B'] = M['sdf'] * freqs.size / pfb.NOISE_EQUIV_BW[window]
    M['etas'] = np.fft.fftshift(pspec.f2eta(freqs))
    M['kpl'] = M['etas'] * pspec.dk_deta(M['z'])
    M['bm'] = np.polyval(pspec.DEFAULT_BEAM_POLY, M['fq'])
    M['scalar'] = pspec.X2Y(M['z']) * M['bm'] * M['B']
    return chans, freqs, M
Beispiel #2
0
    figure(figsize=figsize)
    ndelays = len(delays)
    nkparr = n.sum(delays >= 0)
    #P = F['P'].T
    #FOLD UP THE PSPEC AROUND ZERO RELATIVE DELAY!!!
    #XXX THIS WILL BE INCORRECT FOR PHASED UP STUFF.
    wedge_X = n.sqrt(n.abs(P[nkparr:,:,0]*n.conj(P[nkparr:,:,0]) + \
        n.flipud(P[:nkparr,:,0]*n.conj(P[:nkparr,:,0]))/2))
    wedge_Y = n.sqrt(n.abs(P[nkparr:,:,1]*n.conj(P[nkparr:,:,1]) + \
        n.flipud(P[:nkparr,:,1]*n.conj(P[:nkparr,:,1]))/2))
    print n.sum(n.isnan(P)), n.sum(P < 0)

    wedge_X = n.ma.masked_invalid(n.log10(wedge_X))
    wedge_Y = n.ma.masked_invalid(n.log10(wedge_Y))

    kparr = delays[delays >= 0] * pspec.dk_deta(z)
    kperp = bl_lengths * pspec.dk_du(z)
    horizon = bl_lengths * pspec.dk_deta(z)
    print bl_lengths, pspec.dk_deta(z), z
    print horizon
    windowpad = windowpad_ns * pspec.dk_deta(z)
    KPERP, KPARR = n.meshgrid(kperp, kparr)
    MIN = n.min([
        n.mean(wedge_X[KPARR > (horizon + windowpad)]),
        n.mean(wedge_X[KPARR > (horizon + windowpad)])
    ]) * 0.8

    dfcoarse = 30 / 24. * 1e-3
    if PLOTWINDOWCONTOUR:
        #calculate danny's stat window
        BL, D = n.meshgrid(bl_lengths, delays[delays >= 0])
Beispiel #3
0
 ndelays = len(delays)
 nkparr = n.sum(delays>=0)
 #P = F['P'].T
 #FOLD UP THE PSPEC AROUND ZERO RELATIVE DELAY!!!
 #XXX THIS WILL BE INCORRECT FOR PHASED UP STUFF.
 wedge_X = n.sqrt(n.abs(P[nkparr:,:,0]*n.conj(P[nkparr:,:,0]) + \
     n.flipud(P[:nkparr,:,0]*n.conj(P[:nkparr,:,0]))/2))
 wedge_Y = n.sqrt(n.abs(P[nkparr:,:,1]*n.conj(P[nkparr:,:,1]) + \
     n.flipud(P[:nkparr,:,1]*n.conj(P[:nkparr,:,1]))/2))
 print n.sum(n.isnan(P)),n.sum(P<0)
 
 wedge_X = n.ma.masked_invalid(n.log10(wedge_X))
 wedge_Y = n.ma.masked_invalid(n.log10(wedge_Y))
 
 
 kparr = delays[delays>=0]*pspec.dk_deta(z)
 kperp = bl_lengths*pspec.dk_du(z)
 horizon = bl_lengths*pspec.dk_deta(z)
 print bl_lengths,pspec.dk_deta(z),z
 print horizon
 windowpad = windowpad_ns*pspec.dk_deta(z)
 KPERP,KPARR = n.meshgrid(kperp,kparr)
 MIN = n.min([n.mean(wedge_X[KPARR>(horizon+windowpad)]),n.mean(wedge_X[KPARR>(horizon+windowpad)])])*0.8
 
 dfcoarse=30/24.*1e-3
 if PLOTWINDOWCONTOUR:
     #calculate danny's stat window
     BL,D = n.meshgrid(bl_lengths,delays[delays>=0])
     coarse_chan_delay =  1/(1.28/1e3)#
     print "coarse_chan_delay",coarse_chan_delay
     WINDOW = n.zeros_like(D)
Beispiel #4
0
t_int = n.diff(times).max()*24*3600
print "t_int = ",t_int
totalt = n.ceil((times.max() - times.min())*24*3600 + t_int)
print "total observing time = ",totalt
Ntimes = n.ceil(totalt/t_int)
print "ntimes = ",Ntimes
bls = D.data.field('BASELINE')
ant2 = (bls%256).astype(int)
ant1 = ((bls-ant2)/256).astype(int)
uvws  = n.array(zip(D.data.field('UU'),D.data.field('VV'),D.data.field('WW')))*1e9 #bl vectors in ns
Nants = len(set(ant2))
Nmax = ant2.max()
freqs = gethdufreqs(D)
z = pspec.f2z(n.mean(freqs)/1e9)
print "padding the horizon by k_parr = ",windowpad
windowpad_delay = windowpad / pspec.dk_deta(z)
print "at z=%4.1f this is %7.5f ns"%(z,windowpad_delay)
df = n.diff(freqs)[0]
delays  =   n.fft.fftfreq(freqs.shape[0],df/1e9) #delays in ns
print "n_ant = ",Nants
print n.sum((ant2-ant1)==0)
Nblt = D.data.field('DATA').shape[0]
Nbl = Nblt/Ntimes
MAXBL = n.max(bls)
Nfreqs = D.data.field('DATA').shape[3]
Npol = D.data.field('DATA').shape[4]
#form up a list of baselines, sorted by length
bl_lengths = []
bls_sorted = []
for i in range(Nblt):
    if bls[i] in bls_sorted:continue
fig = figure()
colors='kcmb'
for j,RM in enumerate(RMs):
    Nann = 3
    for i in range(Nann):
        if i == 0 or i+1 == Nann: continue
        #if i%4 != 0: continue
        nchan_i = int(Nchan/Nann)
        ntaps = 3
        ch1,ch2 = i*nchan_i,(i+1)*nchan_i
        ch_in,ch_out = ch1-nchan_i, ch2+nchan_i
        freqs_i = freqs[ch_in:ch_out]
        dnu = freqs_i[1] - freqs_i[0]
        eta = np.fft.fftshift(np.fft.fftfreq(nchan_i,dnu))
        z_mid = np.median(pspec.f2z(freqs_i))
        k = np.abs(eta*pspec.dk_deta(z_mid))

        V_nu = RMvis(freqs_i,RM)
        V_nu *= pspec.jy2T(freqs_i)
        Trms = pfb.pfb(V_nu,taps=ntaps,window=window,fft=np.fft.ifft)
        Trms = np.fft.fftshift(Trms)
        DELTA = k3pk(Trms,k=k,fq=np.mean(freqs_i),B=0.1/Nann)


        valid = k!=0.

        DELTA = np.extract(valid,DELTA)
        DELTA /= DELTA.sum()
        k = np.extract(valid,k)

        _k,_DELTA = rebin_log(k,DELTA)